我在 Android 应用程序中遇到与 androidx.lifecycle.ReportFragment$ActivityInitializationListener 相关的 NoClassDefFoundError,导致致命异常,导致应用程序在启动时立即崩溃。这是完整的堆栈跟踪:
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;
at android.app.ActivityThread.installProvider(ActivityThread.java:7642)
…
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
Caused by: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;
at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
…
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;
at androidx.lifecycle.ProcessLifecycleInitializer.create(ProcessLifecycleInitializer.kt:37)
…
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ReportFragment$ActivityInitializationListener" on path: DexPathList[[zip file "/data/app/~~ohF60lMUCczmAb5rmHzgvw==/com.company.travelapp-g88i1O-Z7OUyKk4cvThJVA==/base.apk"],nativeLibraryDirectories=[/data/app/~~ohF60lMUCczmAb5rmHzgvw==/com.company.travelapp-g88i1O-Z7OUyKk4cvThJVA==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
…
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
我尝试过的步骤
更新了依赖项:确保所有生命周期和启动依赖项在
build.gradle
中都是最新的。
清理和重建项目:在 Android Studio 中执行清理和重建步骤。
检查了 ProGuard 规则:添加了保留所有必要类的规则。
清除 Gradle 缓存:删除了 Gradle 缓存以解决任何潜在的损坏问题。
手动验证类:尝试验证 JAR 文件中是否存在该类。
build.gradle
(应用程序级别)配置
dependencies {
implementation 'androidx.lifecycle:lifecycle-runtime:2.4.0'
implementation 'androidx.lifecycle:lifecycle-process:2.4.0'
implementation 'androidx.startup:startup-runtime:1.1.0'
}
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
ProGuard 规则
-keep class androidx.lifecycle.** { *; }
-keep class androidx.startup.** { *; }
Helo,如果您使用 viewModel,请确保您有以下版本:
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
implementation 'androidx.lifecycle:lifecycle-livedata:2.6.2'
这确实有效!