签名apk错误:proguard在com.firebaseui之后找不到引用类android.arch.core.util.Function:firebase-ui-database update to 2.3.0

时间:2017-09-23 23:29:56

标签: android apk proguard release

更新后

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

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

我能够在我的测试设备上编译和运行我的应用程序,但是当我尝试生成已签名的apk时,我会在'messages gradle build'中得到它。我希望这是一个问题:

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线现在触发了它。以下是评论中提到的部分应用程序:

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'
}

以下是评论中提到的我的程序规则,最后我尝试了几行。我已经尝试了各种语法而没有效果。

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

2 个答案:

答案 0 :(得分:2)

我发现错误消息中的proguard引用是一个红色的鲱鱼。在向我的proguard-rules文件添加许多额外规则后无效。添加auth编译后:

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编译之后,我必须更改所有编译版本' 26.1.0'至' 26.0.1'在app gradle中避免合并错误,大概是使用新的auth编译。尽管有更新版本,但26.1.0'建议它给我这些编译。我正在使用的最新buildToolsVersion是:

buildToolsVersion "26.0.1" 

无论java编码技巧如何,通过艰苦的体验,在Android开发中克服了这些障碍。

答案 1 :(得分:1)

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

这对proguard的补充对我有用。只需将它放在您的proguard规则中的任何位置:

-dontwarn android.arch.**