Flutter集成Yandex MapKit启动时抛出MainActivity实例化异常
解决Yandex MapKit初始化时MainActivity类找不到的问题
针对配置yandex_mapkit: ^3.1.1后出现的java.lang.ClassNotFoundException: Didn't find class "com.example.test_yandex_map.MainActivity"异常,可尝试以下解决方案:
1. 校验MainActivity包名与Manifest配置一致性
- 打开
kotlin/com/example/test_yandex_map/MainActivity.kt,确认文件顶部的package声明和AndroidManifest.xml中根标签的package属性完全一致,例如Manifest中为package="com.example.test_yandex_map",则MainActivity必须以package com.example.test_yandex_map;开头,不能存在拼写或大小写错误。 - 检查Manifest中
<activity>标签的android:name属性,确保值为.MainActivity或完整类路径com.example.test_yandex_map.MainActivity。
2. 清理项目缓存并重建
- 执行Flutter清理命令:
flutter clean - 删除Android模块的编译产物:
Windows系统:
macOS/Linux系统:rmdir /s/q android\app\buildrm -rf android/app/build - 重新拉取依赖:
flutter pub get - 重新运行项目:
flutter run
3. 配置多Dex支持
尽管minSdkVersion≥21时默认开启多Dex,但部分场景仍需手动配置:
- 在
android/app/build.gradle的defaultConfig块中添加多Dex启用配置:defaultConfig { // 已有配置(如minSdkVersion、targetSdkVersion等) multiDexEnabled true } - 添加多Dex依赖:
dependencies { implementation 'androidx.multidex:multidex:2.0.1' } - 若自定义了Application类,需让其继承
MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this):override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) MultiDex.install(this) }
4. 检查Kotlin与编译版本兼容性
yandex_mapkit: ^3.1.1对Kotlin和编译SDK版本有要求:
- 在
android/build.gradle中确认Kotlin版本不低于1.6.x,例如:buildscript { ext.kotlin_version = '1.7.20' // 其他配置 } - 将
android/app/build.gradle中的compileSdkVersion设置为33或更高版本。
5. 清理设备缓存并重装应用
- 卸载设备/模拟器上的旧应用:通过模拟器界面删除,或执行命令:
adb uninstall com.example.test_yandex_map - 重启设备/模拟器后,重新运行项目安装应用。
内容的提问来源于stack exchange,提问作者Иван Игонькин
相关产品推荐
相关产品推荐

