在 android studio 中将包从 com.example.travelapp 更改为 com.company.travelapp 后,我收到错误:RuntimeException,NoClassDefFoundError

问题描述 投票:0回答:1

我在 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)

我尝试过的步骤

  1. 更新了依赖项:确保所有生命周期和启动依赖项在

    build.gradle
    中都是最新的。

  2. 清理和重建项目:在 Android Studio 中执行清理和重建步骤。

  3. 检查了 ProGuard 规则:添加了保留所有必要类的规则。

  4. 清除 Gradle 缓存:删除了 Gradle 缓存以解决任何潜在的损坏问题。

  5. 手动验证类:尝试验证 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.** { *; }
java android
1个回答
0
投票

Helo,如果您使用 viewModel,请确保您有以下版本:

implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
implementation 'androidx.lifecycle:lifecycle-livedata:2.6.2'

这确实有效!

© www.soinside.com 2019 - 2024. All rights reserved.