【问题标题】:Signed apk error: proguard can't find referenced class android.arch.core.util.Function after com.firebaseui:firebase-ui-database update to 2.3.0签名 apk 错误:com.firebaseui:firebase-ui-database 更新到 2.3.0 后 proguard 找不到引用的类 android.arch.core.util.Function
【发布时间】:2018-03-05 05:48:27
【问题描述】:

更新后

compile 'com.firebaseui:firebase-ui-database:0.4.0'

compile 'com.firebaseui:firebase-ui-database:2.3.0'

我能够在我的测试设备上编译和运行我的应用程序,但是在尝试生成签名的 apk 时,我在“消息 gradle build”中得到了这个。我希望这是一个proguard问题:

Information:Gradle tasks [:app:assembleRelease]
Warning:android.arch.lifecycle.Transformations: can't find referenced class android.arch.core.util.Function
Warning:android.arch.lifecycle.Transformations$1: can't find referenced class android.arch.core.util.Function
Warning:android.arch.lifecycle.Transformations$2: can't find referenced class android.arch.core.util.Function
Warning:there were 16 unresolved references to classes or interfaces.
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details
Information:BUILD FAILED in 11s
Information:1 error
Information:5 warnings
Information:See complete output in console

我尝试过增量版本更新,但也没有用。例如:

 compile 'com.firebaseui:firebase-ui-database:2.0.0' 

甚至不会同步,给出合并错误消息。

我还更新了我的其他 SDK,但 firebaseui 行现在会触发它。这是在 cmets 中向我询问的部分应用程序 gradle:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:design:26.1.0'
    compile 'com.android.support:appcompat-v7:26.1.0'

    compile 'com.google.android.gms:play-services-drive:11.4.0'
    compile 'com.google.android.gms:play-services-plus:11.4.0'
    compile 'com.google.android.gms:play-services-location:11.4.0'
    compile 'com.google.android.gms:play-services-auth:11.4.0'
    compile 'com.google.android.gms:play-services-wallet:11.4.0'
    compile 'com.google.android.gms:play-services-games:11.4.0'

    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.android.support:support-v13:26.1.0'

    compile 'com.google.firebase:firebase-core:11.4.0'
    compile 'com.google.firebase:firebase-invites:11.4.0'
    compile 'com.google.firebase:firebase-ads:11.4.0'
    compile 'com.google.firebase:firebase-database:11.4.0'
    compile 'com.google.firebase:firebase-auth:11.4.0'
    compile 'com.google.firebase:firebase-config:11.4.0'
    compile 'com.google.firebase:firebase-messaging:11.4.0'
    compile 'com.google.firebase:firebase-crash:11.4.0'
    compile 'com.google.firebase:firebase-analytics:11.4.0'
    compile 'com.google.firebase:firebase-appindexing:11.4.0'

    compile 'com.firebaseui:firebase-ui-database:2.3.0'
}

这是我在 cmets 中也提到的 proguard 规则,在我尝试的最后添加了几行。我试过各种语法都没有效果。

-renamesourcefileattribute SourceFile
-keepattributes Signature
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepattributes *Annotation*
-keep class com.android.**
-keepclassmembers class com.android.**

【问题讨论】:

  • 请发布您的成绩文件并说明您的安卓版本
  • 分享你的 gradle 文件。
  • 您的 proguard 文件缺少 android.arch. 类的规则

标签: android apk proguard release


【解决方案1】:

我在“com.firebaseui:firebase-ui-database:2.4.0”上也遇到了这个错误。

这个添加到 proguard 对我有用。只需将其放在您的 proguard 规则中的任何位置:

-dontwarn android.arch.**

【讨论】:

    【解决方案2】:

    我发现错误消息中的 proguard 引用是一个红鲱鱼。这在我的 proguard-rules 文件中添加了许多额外的规则后无济于事。添加授权后编译:

    compile 'com.firebaseui:firebase-ui-database:2.3.0'
    compile 'com.firebaseui:firebase-ui-auth:2.3.0' 
    

    我能够构建一个签名的 apk(在此过程的早期添加此行导致错误,因此我放弃了它)。奇怪的是,用

    compile 'com.firebaseui:firebase-ui-database:0.4.0' 
    

    我不需要 auth 编译。

    此外,在添加 auth compile 之后,我必须在 app gradle 中将所有编译版本“26.1.0”更改为“26.0.1”以避免合并错误,大概是使用新的 auth compile。尽管有“更新版本可用 26.1.0”的建议,但它给了我这些编译的建议。我正在使用的最新 buildToolsVersion 是:

    buildToolsVersion "26.0.1" 
    

    无论 Java 编码技能如何,这些都是通过艰苦的经验在 android 开发中克服的障碍。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2014-06-23
    • 2012-09-28
    • 2014-03-18
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多