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

求助:Gradle依赖重复类问题——Google Cloud双API集成冲突

解决Google Cloud Speech + Translation API集成时的Protobuf重复类错误

你遇到的是典型的依赖版本冲突问题:Google Cloud Translation API默认依赖了完整版的protobuf-java,而你的gRPC配置使用了轻量版的protobuf-lite,两者包含大量完全重复的Protobuf核心类(比如报错里的AbstractMessageLite),导致打包时出现类重复冲突。

核心解决思路

让整个项目统一使用Protobuf的同一个变体(要么全用lite版,要么全用完整版)。考虑到Android项目的性能和体积优化,推荐统一使用protobuf-lite,具体修改步骤如下:

步骤1:修改Translation API的依赖配置

在Translation的依赖块中主动排除它自带的protobuf-java,避免和gRPC的protobuf-lite冲突:

//Translation
implementation('com.google.cloud:google-cloud-translate:1.12.0') {
    exclude group: 'org.apache.httpcomponents'
    exclude group: 'org.json', module: 'json'
    exclude group: 'com.google.protobuf', module: 'protobuf-java' // 新增:移除冲突的完整版Protobuf
}
annotationProcessor 'com.google.cloud:google-cloud-translate:1.12.0'

步骤2:统一Protobuf版本(可选但推荐)

确保项目中Protobuf的版本和gRPC依赖的版本完全匹配。你可以查看grpcVersion对应的Protobuf Lite版本(比如gRPC 1.25.0对应Protobuf Lite 3.10.0),然后调整protobuf的依赖:

// 替换原来的protobuf-java依赖为对应版本的protobuf-lite
protobuf 'com.google.protobuf:protobuf-lite:3.10.0' // 版本请匹配你的grpcVersion

步骤3:验证依赖树(排查潜在冲突)

执行Gradle命令查看完整的依赖树,确认没有同时存在protobuf-java和protobuf-lite:

./gradlew app:dependencies | grep "com.google.protobuf"

如果还有其他依赖引入了冲突的Protobuf变体,同样用exclude语法排除即可。

补充说明

你之前配置的packagingOptions主要用于排除重复的资源文件(比如LICENSE、META-INF),对Java类重复冲突没有作用,所以可以保留但不用依赖它解决当前问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:42:49