修改包名后Flutter Android应用安装后无法启动,报ClassNotFoundException
问题描述
我的Firebase项目中有2个Android应用,希望将Flutter应用关联其中一个。已修改build.gradle中的包名且确认正确,但应用安装后无法打开,出现以下致命异常:
E/AndroidRuntime(27385): FATAL EXCEPTION: main E/AndroidRuntime(27385): Process: com.tis.tis_root, PID: 27385 E/AndroidRuntime(27385): java.lang.RuntimeException: 无法实例化活动ComponentInfo{com.tis.tis_root/com.tis.tis_root.MainActivity}: java.lang.ClassNotFoundException: 未在路径上找到类"com.tis.tis_root.MainActivity": DexPathList[[zip文件"/data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/base.apk"],nativeLibraryDirectories=[/data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/lib/arm64, /data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] E/AndroidRuntime(27385): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3681) E/AndroidRuntime(27385): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3938) E/AndroidRuntime(27385): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) E/AndroidRuntime(27385): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) E/AndroidRuntime(27385): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) E/AndroidRuntime(27385): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2291) E/AndroidRuntime(27385): at android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime(27385): at android.os.Looper.loopOnce(Looper.java:210) E/AndroidRuntime(27385): at android.os.Looper.loop(Looper.java:299) E/AndroidRuntime(27385): at android.app.ActivityThread.main(ActivityThread.java:8319) E/AndroidRuntime(27385): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(27385): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) E/AndroidRuntime(27385): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1038) E/AndroidRuntime(27385): Caused by: java.lang.ClassNotFoundException: 未在路径上找到类"com.tis.tis_root.MainActivity": DexPathList[[zip文件"/data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/base.apk"],nativeLibraryDirectories=[/data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/lib/arm64, /data/app/~~biRvmKsCdAVdqrEFB9fN6A==/com.tis.tis_root-E9f7gEaJHF3Cy7QSfZfH3A==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] E/AndroidRuntime(27385): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) E/AndroidRuntime(27385): at java.lang.ClassLoader.loadClass(ClassLoader.java:379) E/AndroidRuntime(27385): at java.lang.ClassLoader.loadClass(ClassLoader.java:312) E/AndroidRuntime(27385): at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) E/AndroidRuntime(27385): at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) E/AndroidRuntime(27385): at android.app.Instrumentation.newActivity(Instrumentation.java:1274) E/AndroidRuntime(27385): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3668) E/AndroidRuntime(27385): ... 12 more
解决步骤
检查AndroidManifest.xml中的MainActivity路径
打开android/app/src/main/AndroidManifest.xml,确认<activity>标签的android:name属性与新包名完全匹配,格式应为com.tis.tis_root.MainActivity:<activity android:name="com.tis.tis_root.MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">清理项目缓存并重构
执行以下命令彻底清理Flutter和Android项目的缓存,避免旧配置残留:flutter clean cd android ./gradlew clean cd .. flutter pub get flutter build apk --debug验证Firebase配置文件
确保从Firebase控制台下载的google-services.json文件已替换到android/app目录,且文件内的package_name字段值为com.tis.tis_root。检查代码目录结构
确认Android端的MainActivity文件路径正确:- Kotlin项目:
android/app/src/main/kotlin/com/tis/tis_root/MainActivity.kt - Java项目:
android/app/src/main/java/com/tis/tis_root/MainActivity.java
若目录结构不匹配,需手动调整包名目录或移动文件到对应路径。
- Kotlin项目:
启用MultiDex支持
若应用依赖较多导致方法数超过限制,需开启MultiDex:- 在
android/app/build.gradle中添加配置:android { defaultConfig { ... multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' } - 在AndroidManifest.xml的
<application>标签中指定MultiDexApplication:<application ... android:name="androidx.multidex.MultiDexApplication">
- 在
卸载旧版本应用
先彻底卸载设备上的旧版本应用,再重新安装新构建的安装包,避免新旧版本缓存冲突。
内容的提问来源于stack exchange,提问作者Shree venkat
相关产品推荐
相关产品推荐

