集成MapBoxMap与Flutter_Mapbox_Navigation时地图页崩溃求助
问题分析
报错java.lang.NoClassDefFoundError: Failed resolution of: Lcom/mapbox/android/core/FileUtils的核心原因是:你的Gradle配置中同时排除了mapbox-android-core库,又错误地引入该库并自我排除,导致运行时找不到MapBox核心工具类;另外Release模式下的混淆规则也可能误删了相关类。
修复步骤
1. 修正Gradle依赖配置
打开android/app/build.gradle,做以下修改:
- 移除
configurations块中对mapbox-android-core的排除规则:configurations { // 删掉这一行:all*.exclude module: 'mapbox-android-core' all*.exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-telemetry' } - 替换无效的
mapbox-android-core依赖声明:
原代码中这一行完全无效(引入库同时排除自身),直接替换为对应兼容版本的核心库:// 删掉这一行: // implementation('com.mapbox.mapboxsdk:mapbox-android-core:5.0.0') { // exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-core' // } // 替换为(版本号请与你使用的Flutter插件依赖的MapBox版本匹配,建议用最新兼容版): implementation 'com.mapbox.mapboxsdk:mapbox-android-core:6.2.0'
2. 配置Release模式的混淆规则
由于你开启了minifyEnabled true和shrinkResources true,需要在android/app/proguard-rules.pro中添加MapBox的混淆保护规则,避免核心类被移除:
# MapBox核心类保护 -keep class com.mapbox.android.core.** { *; } -keep class com.mapbox.mapboxsdk.** { *; } -keep class com.mapbox.navigation.** { *; }
3. 清理缓存并重新构建
执行以下命令彻底清理缓存后重新编译:
flutter clean cd android ./gradlew clean cd .. flutter run --release # 或者直接run debug模式测试
额外注意点
- 确保
MapBoxMap和flutter_mapbox_navigation两个Flutter插件的版本相互兼容,建议查看插件文档确认支持的MapBox原生库版本范围。 - 检查
minSdkVersion是否符合插件要求(当前你的minSdk是23,一般满足MapBox插件要求)。
内容的提问来源于stack exchange,提问作者Sovit Nayak
相关产品推荐
相关产品推荐

