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

集成MapBoxMap与Flutter_Mapbox_Navigation时地图页崩溃求助

解决MapBoxMap与flutter_mapbox_navigation共存时的NoClassDefFoundError问题

问题分析

报错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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:30:16