提问人:lx94569456 提问时间:4/20/2023 最后编辑:lx94569456 更新时间:4/24/2023 访问量:105
升级到 agp 7+ 后有什么解决方案可以解决 NoClassDefFoundError 吗?
Any solutions to solve NoClassDefFoundError after upgrade to agp 7+?
问:
当我将 agp 版本从 4.1.0 升级到 7.4.2(gradle 版本 7.5.1)时,出现 NoClassDefFoundError 异常并且应用程序崩溃。
由于我将 agp 从 4.1.0 升级到 7.0,因此 dx 默认已弃用,并且块 dexOptions 不起作用,我的配置之前:
dexOptions {
javaMaxHeapSize "4000M"
jumboMode true
threadCount 6
preDexLibraries false
additionalParameters += "--set-max-idx-number=65000"
additionalParameters += "--minimal-main-dex"
}
AGP 表示,默认情况下,AGP 会优化 DEX 操作。所以我删除了块,然后构建收到同样的错误。google...,我发现一个解决方案是指定适合agp的正确r8版本,我仍然随机收到相同的错误。我将 agp 升级到 7.4.2 并将 gradle 升级到 7.5.1 并删除了 r8 版本定义,仍然出现相同的错误。 建筑。。。错误是随机发生的。 DEX Proguard 似乎什么也没做。api 21 默认使用 Agp native-dex,并且未提供 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
答: 暂无答案
评论
NoClassDefFoundError