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

迁移至Mapbox 11时遭遇重复类错误,如何解决?

解决Mapbox 10迁移到11时的重复类错误

问题本质

你当前用的部分Mapbox依赖版本太老,和Mapbox 11的架构变更完全不兼容:

  • mapbox-android-plugin-offline-v9:0.9.0、mapbox-android-navigation-ui:0.42.6、com.mapbox.navigation:android:2.5.1都是针对Mapbox 10及更早版本开发的,它们会自动引入旧版mapbox-android-core库;而Mapbox 11已经把权限管理这类核心功能迁移到com.mapbox.common库中,两边的类完全重复,自然冲突。
  • 单纯靠排除旧库根本没用,因为这些老依赖的内部逻辑就是基于旧版core写的,强行排除只会引发更多运行时崩溃。

一步步解决

1. 把所有依赖升级到适配Mapbox 11的版本

直接替换你的依赖配置为下面的兼容版本:

// Mapbox Maps核心库(11.x稳定版)
implementation("com.mapbox.maps:android:11.0.0")

// 离线功能注意:旧的v9离线插件只支持Mapbox 9.x,必须换用Mapbox 11官方的离线API
// 不需要再依赖旧插件,直接通过MapboxMap实例操作离线区域即可

// 导航相关:升级到适配Mapbox 11的Navigation SDK版本
implementation("com.mapbox.navigation:android:2.13.0") // 这个版本完美适配Mapbox 11
implementation("com.mapbox.navigation:ui:2.13.0") // 对应配套的Navigation UI库

2. 全局强制统一依赖版本(可选,若仍有冲突)

如果替换依赖后还存在重复类问题,在Module级别的build.gradle里,dependencies块外面加这段规则,强制统一版本:

configurations.all {
    resolutionStrategy {
        // 强制使用Mapbox 11依赖的common版本
        force "com.mapbox.common:common:24.0.0"
        // 彻底移除旧版core库
        exclude group: "com.mapbox.mapboxsdk", module: "mapbox-android-core"
        // 统一okhttp相关依赖的版本,避免重复
        force "com.mapbox.common:okhttp:24.0.0"
    }
}

3. 清理构建缓存,确保生效

最后一定要清理缓存,避免旧依赖残留:

  • 在Android Studio里点File → Invalidate Caches... → Invalidate and Restart
  • 终端执行命令:./gradlew clean build --refresh-dependencies

重要提醒

  • Mapbox 11对核心模块做了大重构,旧版本的第三方插件(比如离线v9)已经完全不兼容,别再用了,直接用官方新API就行。
  • Navigation SDK要2.10及以上版本才支持Mapbox 11,低版本的导航库和Mapbox 11根本没法共存,必须升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:15:10