同时使用Library Desugaring和R8/Proguard/minifyEnabled时崩溃



我有一个多模块应用程序(minSdk 21,AGP7.0.0-alpha12(,当按照本指南使用Java 8降级时,该应用程序在版本变体(启用Proguard/R8(中启动时崩溃

我知道这个错误与去马赛克有关,因为如果我启用去马赛克,错误就会发生

compileOptions {
coreLibraryDesugaringEnabled true
}

而如果我禁用去眩光,错误不会发生

compileOptions {
coreLibraryDesugaringEnabled false
}

Stacktrace:

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)

我尝试在proguard-rules.pro中使用-keep class java.util.** { *; }修复错误,但它没有改变任何内容。

如有任何帮助、提示或答案,我们将不胜感激。提前感谢!

事实证明,developers.android.com上的指南已经过时了。到目前为止,它使用coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9',但最新版本是coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'。更新到最新版本解决了我的问题。你可以在这里找到最新版本

最新更新