使用 minifyEnabled true 启动应用程序时 FirebaseInitProvider.onCreate 中的 java.lang.IncompatibleClassChangeErro

Posted

技术标签:

【中文标题】使用 minifyEnabled true 启动应用程序时 FirebaseInitProvider.onCreate 中的 java.lang.IncompatibleClassChangeError【英文标题】:java.lang.IncompatibleClassChangeError inside FirebaseInitProvider.onCreate when starting app with minifyEnabled true 【发布时间】:2021-08-14 13:56:47 【问题描述】:

测试环境/依赖项

android Studio:Android Studio Arctic Fox Beta 2 和 Bumblebee Canary 1 AGP:7.1.0-alpha01 Firebase 分析:com.google.firebase:firebase-analytics-ktx:19.0.0 Firebase Crashlytics:com.google.firebase:firebase-crashlytics-ktx:18.0.0 minifyEnabled: 真 专门用于 Firebase 的 Proguard 配置:无

发生了什么

当我使用 minifyEnabled = true 构建我的应用并尝试启动该应用时,应用在启动后立即崩溃并显示以下崩溃日志:

2021-05-29 22:30:37.652 16541-16541/com.my.app.package.name E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.my.app.package.name, PID: 16541
    java.lang.IncompatibleClassChangeError: Class j$.util.concurrent.i implements non-interface class e.a (declaration of 'j$.util.concurrent.i' appears in /data/app/~~xxxx==/com.my.app.package.name--xxxxxx==/base.apk!classes2.dex)
        at com.google.firebase.components.x.<init>(:37)
        at com.google.firebase.components.x.b(:44)
        at com.google.firebase.components.n.t(:219)
        at com.google.firebase.components.n.j(:138)
        at com.google.firebase.components.n.<init>(:91)
        at com.google.firebase.components.n.<init>(:45)
        at com.google.firebase.components.n$b.e(:360)
        at com.google.firebase.c.<init>(:427)
        at com.google.firebase.c.p(:299)
        at com.google.firebase.c.o(:267)
        at com.google.firebase.c.n(:252)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(:51)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:2358)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(:45)
        at android.app.ActivityThread.installProvider(ActivityThread.java:7242)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6783)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6700)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

注意事项

配置minifyEnabled = false 可解决问题,应用可以按预期启动。 可能与:java.lang.IncompatibleClassChangeError caused by R8 (AGP 7.0.0-beta02) 相关或重复。

【问题讨论】:

【参考方案1】:

自 AGP 7.0.0-alpha12 以来,我们在发布时遇到过类似的崩溃。将脱糖库更新到版本1.1.5 后,崩溃就消失了。

dependencies 
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'

更多信息:https://issuetracker.google.com/issues/189244205

【讨论】:

谢谢,更新脱糖库解决了问题:) 不幸的是,我在 1.1.5 上仍然面临这个问题。我将尝试创建一个测试应用程序来重现并提出错误报告:(

以上是关于使用 minifyEnabled true 启动应用程序时 FirebaseInitProvider.onCreate 中的 java.lang.IncompatibleClassChangeErro的主要内容,如果未能解决你的问题,请参考以下文章

在 minifyEnabled true 后启动应用程序时出现 NumberFormatException

Proguard minifyEnabled true 用于调试构建,不适用于预棒棒糖

Android proguard minifyEnabled true + multidex = error

当我设置 minifyEnabled = true 时,应用程序无法使用 API

使用 Picasso 和 minifyEnabled 时应用程序崩溃 true

设置 minifyEnabled 为 true 时无法使用 GSON 解析 json 对象