如何解决同时使用 Library Desugaring 和 R8/Proguard/minifyEnabled 时崩溃
我有一个多模块应用程序(minSdk 21
,AGP 7.0.0-alpha12
),当使用 Java 8 脱糖时,它在发行版本(启用 Proguard/R8)中启动时崩溃{ {3}}
compileOptions {
coreLibraryDesugaringEnabled true
}
而如果我禁用脱糖,则不会发生错误
compileOptions {
coreLibraryDesugaringEnabled false
}
堆栈跟踪:
java.lang.IncompatibleClassChangeError: Class j$.util.Collection implements non-interface class d.e (declaration of 'j$.util.Collection' appears in base.apk!classes2.dex)
at ja.s.f(UnkNown Source:0)
at h4.g0.<clinit>(:4)
at y5.d1.C(:1)
at v8.f.<init>(:2)
at com.luminarlab.fontboard.KeyboardApp.<init>(:2)
at java.lang.class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(UnkNown Source:0)
at android.app.Instrumentation.newApplication(Instrumentation.java:1155)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1223)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6431)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
我尝试在 -keep class java.util.** { *; }
中使用 proguard-rules.pro
修复错误,但没有任何改变。
感谢任何帮助、提示或答案。提前致谢!
解决方法
事实证明 developers.android.com 上的指南已经过时。截至目前,它使用 coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
,但最新版本是 coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
。
更新到最新版本解决了我的问题。您可以找到最新版本 here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。