Flutter代码无法在Android Studio打开,运行抛出MainActivity类未找到异常
解决Flutter项目ClassNotFoundException: MainActivity问题
问题现象
Flutter项目在Android Studio中运行时抛出致命异常:
E/AndroidRuntime(23949): FATAL EXCEPTION: main E/AndroidRuntime(23949): Process: com.android.application, PID: 23949 E/AndroidRuntime(23949): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.application/com.android.application.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.android.application.MainActivity" on path: DexPathList[[zip file "/data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/lib/x86_64, /data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]] E/AndroidRuntime(23949): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3689) E/AndroidRuntime(23949): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922) E/AndroidRuntime(23949): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) E/AndroidRuntime(23949): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) E/AndroidRuntime(23949): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) E/AndroidRuntime(23949): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) E/AndroidRuntime(23949): at android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime(23949): at android.os.Looper.loopOnce(Looper.java:205) E/AndroidRuntime(23949): at android.os.Looper.loop(Looper.java:294) E/AndroidRuntime(23949): at android.app.ActivityThread.main(ActivityThread.java:8177) E/AndroidRuntime(23949): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(23949): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) E/AndroidRuntime(23949): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) E/AndroidRuntime(23949): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.application.MainActivity" on path: DexPathList[[zip file "/data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/lib/x86_64, /data/app/~~iXAnX6a9vdUz4tmXDKPM-Q==/com.android.application-2ZDoD7mz9RqSs7rXmH0yhQ==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]] E/AndroidRuntime(23949): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) E/AndroidRuntime(23949): at java.lang.ClassLoader.loadClass(ClassLoader.java:379) E/AndroidRuntime(23949): at java.lang.ClassLoader.loadClass(ClassLoader.java:312) E/AndroidRuntime(23949): at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) E/AndroidRuntime(23949): at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) E/AndroidRuntime(23949): at android.app.Instrumentation.newActivity(Instrumentation.java:1378) E/AndroidRuntime(23949): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3676) E/AndroidRuntime(23949): ... 12 more
已尝试清理Flutter项目、修复Firebase,问题仍未解决。
解决方法
检查AndroidManifest.xml配置
确认AndroidManifest.xml中MainActivity的包名和类名与实际文件一致,示例配置:<activity android:name=".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"> <!-- 其他配置项 --> </activity>若使用自定义包名,需填写完整路径如
com.your.package.MainActivity。验证MainActivity文件路径
检查android/app/src/main/kotlin或android/app/src/main/java下的MainActivity.kt/MainActivity.java是否在对应包目录中。比如包名为com.android.application,文件需放在com/android/application文件夹内。启用MultiDex支持
若项目依赖过多导致Dex文件超限,在android/app/build.gradle中开启MultiDex:android { defaultConfig { // 其他配置 multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' }同时让Application类继承
MultiDexApplication:class MyApplication : MultiDexApplication() { // 业务代码 }并在
AndroidManifest.xml中指定该Application:<application android:name=".MyApplication" <!-- 其他配置 --> >彻底清理并重构项目
执行以下命令清理缓存后重新构建:flutter clean cd android ./gradlew clean ./gradlew assembleDebug cd .. flutter run检查版本兼容性
运行flutter doctor检查Flutter SDK与Android插件、gradle、kotlin版本是否兼容,按照提示更新对应组件。
内容的提问来源于stack exchange,提问作者Nicolas Montovani
相关产品推荐
相关产品推荐

