Ionic5+Cordova9.1.0应用Android11启动找不到MainActivity如何解决
10-21 16:31:29.281 5300 5300 E AndroidRuntime:
java.lang.RuntimeException: Unable to instantiate activity
ComponentInfo{de.meingolfclub.myapp/de.meingolfclub.myapp.MainActivity}:
java.lang.ClassNotFoundException: Didn't find class
"de.meingolfclub.myapp.MainActivity" on path: DexPathList[[zip file
"/data/app/~~7FMRVcshmIuFxkzCRS8B2g==/de.meingolfclub.myapp-kbOatrQJj_K4ZJHsuXESTg==/base.apk"],nativeLibraryDirectories=[/data/app/~~7FMRVcshmIuFxkzCRS8B2g==/de.meingolfclub.myapp-kbOatrQJj_K4ZJHsuXESTg==/lib/arm64,
/data/app/~~7FMRVcshmIuFxkzCRS8B2g==/de.meingolfclub.myapp-kbOatrQJj_K4ZJHsuXESTg==/base.apk!/lib/arm64-v8a,
/system/lib64, /system_ext/lib64]]
该报错为Android应用方法数超过65535阈值后,multidex配置异常导致主活动类无法被正常加载的典型问题,针对你使用的Ionic 5 + Cordova 9.1.0环境,按以下步骤修复即可:
步骤1:安装multidex支持插件
直接安装Cordova社区维护的multidex插件自动完成基础配置,执行命令:ionic cordova plugin add cordova-plugin-enable-multidex
步骤2:验证/补充gradle配置
如果安装插件后未生效,手动修改platforms/android/app/build.gradle文件:
- 找到
defaultConfig代码块,添加配置:
defaultConfig { // 原有其他配置保持不变 multiDexEnabled true }
- 找到
dependencies代码块,添加multidex依赖:
dependencies { // 原有其他依赖保持不变 implementation 'androidx.multidex:multidex:2.0.1' }
步骤3:清理缓存重新构建
执行以下命令清理旧构建产物,重新生成安装包:
- 移除旧Android平台:
ionic cordova platform rm android - 重新添加对应版本Android平台:
ionic cordova platform add android@9.1.0 - 清理构建缓存:
ionic cordova clean android - 构建测试包:
ionic cordova build android
异常排查
如果按上述步骤操作后仍然报错,检查以下两项配置:
- 确认
config.xml中<widget>标签的id属性值和报错中的包名de.meingolfclub.myapp完全一致,无拼写、大小写错误 - 如果你自定义了Application类,需要让自定义类继承
MultiDexApplication,或者重写attachBaseContext方法时调用MultiDex.install(this)
内容的提问来源于stack exchange,提问作者Ralf Schneider

