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

Crash when using both Library Desugaring and R8/Proguard/minifyEnabled

我有一个 多模块 应用程序(minSdk 21 ,AGP 7.0.0-alpha12)在发布变体(Proguard/R8 启用)中启动时崩溃) 当使用 Java 8 脱糖时 following this guide

我知道这个错误与脱糖有关,因为如果我启用脱糖就会发生错误

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.access00(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'。 更新到最新版本解决了我的问题。您可以找到最新版本 here