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

Android集成TomTom Maps遇protobuf-java重复类冲突问题求助

解决TomTom Maps集成时Protobuf重复类冲突问题

问题分析

引入TomTom Maps依赖 implementation "com.tomtom.sdk.maps:map-display:0.3.1617" 后,项目同时加载了protobuf-java-3.21.12和protobuf-javalite-3.17.3两个库,二者包含大量重复的Protobuf核心类,触发编译阶段的重复类检查失败。

解决方案

1. 定位冲突依赖来源

先执行Gradle命令排查依赖树,明确哪个第三方依赖引入了protobuf-javalite:

./gradlew app:dependencies

在输出结果中搜索protobuf-javalite,找到对应的父依赖(如Firebase或其他SDK)。

2. 排除冲突依赖

根据依赖来源,选择保留其中一个Protobuf库版本:

  • 若要保留protobuf-javalite-3.17.3,在TomTom的依赖中排除protobuf-java:
    implementation("com.tomtom.sdk.maps:map-display:0.3.1617") {
        exclude group: "com.google.protobuf", module: "protobuf-java"
    }
    
  • 若要保留protobuf-java-3.21.12,在引入protobuf-javalite的父依赖中排除该库:
    // 示例:假设Firebase Analytics引入了javalite
    implementation("com.google.firebase:firebase-analytics:xxx") {
        exclude group: "com.google.protobuf", module: "protobuf-javalite"
    }
    

3. 强制统一Protobuf版本

如果排除依赖后仍有问题,可通过Gradle版本强制策略,让所有依赖统一使用指定版本的Protobuf库:
在模块的build.gradle中添加:

configurations.all {
    resolutionStrategy {
        // 选择统一使用javalite版本,或替换为protobuf-java的版本
        force "com.google.protobuf:protobuf-javalite:3.17.3"
        // 或者 force "com.google.protobuf:protobuf-java:3.21.12"
    }
}

注意:强制版本前需测试TomTom SDK是否兼容所选版本,避免运行时异常。

4. 升级TomTom SDK版本

尝试升级到最新版的TomTom Maps SDK,新版本可能已调整依赖逻辑,避免了Protobuf版本冲突:

implementation "com.tomtom.sdk.maps:map-display:最新版本号"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:35:28