Flutter新手Android Studio打包APK安装后打开闪退报ClassNotFoundException求助
问题报错原文
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.test.beauty/com.test.beauty.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.test.beauty.MainActivity" on path: DexPathList[[zip file "/data/app/~~vVpGIeyV47V4c3-Hh5r9Wg==
修复方案
核对包名与MainActivity文件路径
如果你有过改包名、移动代码文件的操作,首先核对两个位置的一致性:
- 安卓清单文件
android/app/src/main/AndroidManifest.xml中,<activity>标签的android:name属性、根标签的package属性,是否和你的目标包名com.test.beauty完全一致 - MainActivity文件的存放路径要和包名完全匹配,kotlin编写的MainActivity路径应为
android/app/src/main/kotlin/com/test/beauty/MainActivity.kt,Java编写的对应路径为android/app/src/main/java/com/test/beauty/MainActivity.java,路径任一节点不匹配都会触发类找不到异常。
- 安卓清单文件
清理构建缓存重新打包
按顺序执行以下命令清理冗余缓存后重新构建:
- 清理Flutter项目缓存:
flutter clean - 重新拉取项目依赖:
flutter pub get - 清理安卓端构建缓存:
- Mac/Linux系统执行:
cd android && ./gradlew clean - Windows系统执行:
cd android && gradlew clean
- Mac/Linux系统执行:
- 退回项目根目录重新打release包:
flutter build apk --release
- 清理Flutter项目缓存:
开启多Dex配置
如果项目引入的第三方依赖较多,方法数超出65536限制未开启多Dex也会触发该问题,打开
android/app/build.gradle文件做如下修改:- 在
defaultConfig配置块中添加多Dex开关:
defaultConfig { // 保留原有其他配置不变,新增如下配置 multiDexEnabled true }- 在
dependencies配置块中添加多Dex依赖:
dependencies { // 保留原有其他依赖不变,新增如下配置 implementation "androidx.multidex:multidex:2.0.1" }- 在
调整混淆规则
如果你开启了代码混淆,可能是混淆规则误移除了MainActivity类,打开
android/app/proguard-rules.pro文件,添加如下规则保留对应类:-keep class com.test.beauty.MainActivity { *; }同时确认已添加Flutter官方要求的基础混淆规则,避免核心类被误混淆。
内容的提问来源于stack exchange,提问作者bilal benzine
相关产品推荐
相关产品推荐

