我的应用在pre-21版本上崩溃,出现了java.lang.NoClassDefFoundError app.module.SomeClass
错误。
我已经启用了Multidex:
build.gradle:
android {
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
...
implementation "androidx.multidex:multidex:2.0.1"
}
我的Application类:
class App : DaggerApplication() {
...
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
MultiDex.install(this)
}
阅读了有关于在主DEX文件中声明必需的类后,我创建了multidex-config.pro
文件以将app.module.**
包含在主DEX文件中:
-keep class app.module.** { *; }
并在 build.gradle 文件中进行注册:
android {
buildTypes {
debug {
...
multiDexKeepProguard file('multidex-config.pro')
}
}
我通过检查 build/intermediates/legacy_multidex_main_dex_list/debug/mainDexList.txt
并分析调试 APK (检查 classes.dex
是否包含 app.module.SomeClass
)进行确认。
但仍然出现了 java.lang.NoClassDefFoundError app.module.SomeClass
错误。
我还尝试了清除缓存、在不同的机器上运行(仅使用命令行构建,没有使用 Android Studio)、禁用即时运行、指定 javaMaxHeapSize
、仅扩展 MultiDexApplication
等。
接下来我可以尝试什么?
multiDexKeepProguard file('multidex-config.pro')
? - Archie G. Quiñonesapp.module.SomeClass
是否存在,它确实存在吗?这听起来不像是生产问题。您尝试过删除 Proguard 优化吗? - Archie G. Quiñones