You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Flutter项目中java.lang.ClassNotFoundException: android.MainActivity错误

Flutter在Nokia G21调试时出现MainActivity类找不到错误

错误日志

Launching lib\main.dart on Nokia G21 in debug mode...
Running Gradle task 'assembleDebug'...                             21.6s
√ Built build\app\outputs\flutter-apk\app-debug.apk
Installing build\app\outputs\flutter-apk\app-debug.apk...          31.5s
E/AndroidRuntime(12164): FATAL EXCEPTION: main
E/AndroidRuntime(12164): Process: we.pos_ssas.pos_ssas, PID: 12164
E/AndroidRuntime(12164): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{we.pos_ssas.pos_ssas/android.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "android.MainActivity" on path: DexPathList[[zip file "/data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/base.apk"],nativeLibraryDirectories=[/data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/lib/arm64, /data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
E/AndroidRuntime(12164):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3589)
E/AndroidRuntime(12164):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3840)
E/AndroidRuntime(12164):        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:105)
E/AndroidRuntime(12164):        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:136)
E/AndroidRuntime(12164):        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
E/AndroidRuntime(12164):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2252)
E/AndroidRuntime(12164):        at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(12164):        at android.os.Looper.loopOnce(Looper.java:201)
E/AndroidRuntime(12164):        at android.os.Looper.loop(Looper.java:288)
E/AndroidRuntime(12164):        at android.app.ActivityThread.main(ActivityThread.java:7941)
E/AndroidRuntime(12164):        at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(12164):        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:553)
E/AndroidRuntime(12164):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E/AndroidRuntime(12164): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.MainActivity" on path: DexPathList[[zip file "/data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/base.apk"],nativeLibraryDirectories=[/data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/lib/arm64, /data/app/~~MgJW1GpbwRrVLEWAdxZq9g==/we.pos_ssas.pos_ssas-yWLtXK2bVQAai1FY5c9YPg==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
E/AndroidRuntime(12164):        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
E/AndroidRuntime(12164):        at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
E/AndroidRuntime(12164):        at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(12164):        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
E/AndroidRuntime(12164):        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:44)
E/AndroidRuntime(12164):        at android.app.Instrumentation.newActivity(Instrumentation.java:1273)
E/AndroidRuntime(12164):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3575)
E/AndroidRuntime(12164):        ... 12 more

相关文件内容

android/app/src/main/kotlin/we/pos_ssas/pos_ssas/MainActivity.kt

package we.pos_ssas.pos_ssas

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity()

android/app/src/main/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:label="NoorERP"
        android:name="${applicationName}"
        android:icon="@mipmap/launcher_icon">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:taskAffinity=""
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
    <queries>
        <intent>
            <action android:name="android.intent.action.PROCESS_TEXT"/>
            <data android:mimeType="text/plain"/>
        </intent>
    </queries>
</manifest>

android/app/build.gradle

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
}

android {
    namespace = "we.pos_ssas.pos_ssas"
    compileSdkVersion 34
    ndkVersion = flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    defaultConfig {
        applicationId = "we.pos_ssas.pos_ssas"
        minSdk = flutter.minSdkVersion
        targetSdkVersion 34
        versionCode = flutter.versionCode
        versionName = flutter.versionName
        multiDexEnabled true
    }

    buildTypes {
        release {
            signingConfig = signingConfigs.debug
        }
    }

    sourceSets {
        main {
            java.srcDirs = ['./src/main/kotlin/']
        }
    }
}

flutter {
    source = "../../"
}

android/build.gradle

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    
    dependencies {
        classpath "com.android.tools.build:gradle:8.2.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20"
        classpath 'androidx.multidex:multidex:2.0.1'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = "../build"

subprojects {
    afterEvaluate { project ->
        if (project.plugins.hasPlugin("com.android.application") ||
                project.plugins.hasPlugin("com.android.library")) {
            project.android {
                compileSdkVersion 34
                buildToolsVersion "34.0.0"
            }
        }
        if (project.hasProperty("android")) {
            project.android {
                if (!project.hasProperty("namespace") || namespace == null) {
                    namespace = project.group.toString()
                }
            }
        }
    }

    project.buildDir = "${rootProject.buildDir}/${project.name}"

    if (project.name != "app") {
        project.evaluationDependsOn(":app")
    }
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

排查修复建议

  1. 修正AndroidManifest中Activity的全类名
    错误日志显示系统在查找android.MainActivity,说明相对路径解析异常。将android:name=".MainActivity"改为全类名android:name="we.pos_ssas.pos_ssas.MainActivity",避免路径解析错误。

  2. 修复sourceSets配置
    当前android/app/build.gradle中用java.srcDirs指定Kotlin目录,可能导致Gradle无法正确识别Kotlin源文件。修改为:

sourceSets {
    main {
        kotlin.srcDirs = ['./src/main/kotlin/']
        java.srcDirs = ['./src/main/java/']
    }
}

明确区分Kotlin和Java源目录,确保Gradle能正确编译MainActivity.kt。

  1. 彻底清理重建项目
    执行以下命令清理缓存并重建:
flutter clean
cd android && ./gradlew clean
cd .. && flutter pub get
flutter run
  1. 完善MultiDex配置
    如果你的minSdk低于21,需在Application类中继承MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this);若minSdk为21及以上,可忽略此步骤。

内容的提问来源于stack exchange,提问作者techmystic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:57:33