升级到 agp 7+ 后解决 NoClassDefFoundError 的任何解决方案?

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

当我将 agp 版本从 4.1.0 升级到 7.4.2(gradle 版本 7.5.1)时,出现 NoClassDefFoundError 异常并且应用程序崩溃了。

自从我把agp从4.1.0升级到7.0后,dx已经默认deprecated了,block dexOptions没有效果,我的配置是之前的:

dexOptions {
    javaMaxHeapSize "4000M"
    jumboMode true
    threadCount 6
    preDexLibraries false
    additionalParameters += "--set-max-idx-number=65000"
    additionalParameters += "--minimal-main-dex"
}

agp 说 dex 操作默认由 agp 优化。所以我删除了块,然后构建收到了同样的错误。谷歌...,我发现一个解决方案是指定适合 agp 的正确 r8 版本,我仍然随机收到相同的错误。我把agp升级到7.4.2,gradle升级到7.5.1,删除了r8 version define,还是出现同样的错误。 建设...错误随机发生。 dex proguard 似乎什么都不做。 Agp native-dex 默认为 api 21,没有提供 proguard。

我想错误的原因是d8 dex内存,因为当我在CI上构建时,错误发生的频率降低了。有什么方法可以配置dex或者有什么其他方法可以解决吗?或者有什么方法可以使用 dx?

顺便说一句,我将 kotlin 版本作为 android 开发者网站升级到 1.8.10.

以下错误:

Process: com.***.***, PID: 20480
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/***/***/Logger;
at ......
at ......
......
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

有时会变成:

Process: com.***.***, PID: 20480
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/app/CoreComponentFactory;

例如:

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;
java.lang.NoClassDefFoundError: Failed resolution of: LandroidX/collection/ArrayMap;
java.lang.NoClassDefFoundError: Failed resolution of: com/{$privatePackage}/AppUpgradeService;
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/startup/AppInitializer;

以上所有内容如下:

Caused by: java.lang.ClassNotFoundException: Didn't find class "***" on path: DexPathList[[zip file "system/framework/org.apache.http.legacy.boot.jar", zip file ...... /base.apk"], nativeLibraryDirectories=[//***==/lib/x86_64]...]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... business code
android android-gradle-plugin android-build dex android-d8
© www.soinside.com 2019 - 2024. All rights reserved.