2017-09-23 26 views
3

更新签名APK错误:proguard的不能找到引用的类android.arch.core.util.Function com.firebaseui后:火力-UI-数据库更新到2.3.0

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行现在触发它。这里是一个局部的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' 
} 

这里是我的proguard的规则在评论中也提到,对我试图结束一对夫妇加线。我已经尝试过各种不起作用的语法。

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

请发布你的等级文件,并说明你的Android版本 – Idee

+0

分享你的gradle文件。 –

+0

您的proguard文件缺少android.arch.'类的规则 –

回答

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编译之后,我不得不在应用gradle中将所有编译版本'26.1.0'更改为'26.0.1',以避免合并错误,大概是使用新的auth编译。尽管“更新的版本是可用的26.1.0”的建议,但它给了我这些编译。可我使用的最新buildToolsVersion是:

buildToolsVersion "26.0.1" 

这些都是经过艰苦的体验Android开发克服的障碍,无论Java编码技能。

+0

我有类似的问题后,从26.​​1.0降级到26.0.2它的工作原理 https://stackoverflow.com/questions/46405863/cannot-access-class -Android拱核-UTIL功能 – murt

1

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

这加到proguard为我工作。只要把它放在你的proguard规则的任何地方:

-dontwarn android.arch.** 
相关问题