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

升级Google Cloud Speech API protobuf gradle至0.8.5后遇重复库问题

解决Protobuf Gradle升级至0.8.5后的依赖冲突问题

这个问题我之前踩过类似的坑,本质是Protobuf相关依赖被重复引入导致的类冲突——你看到的com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream这个类,在多个版本或不同类型的Protobuf库中都存在,下面是一步步解决的具体方法:

1. 定位重复依赖的来源

首先得搞清楚到底是哪些依赖在偷偷引入重复的Protobuf库,打开Android Studio的Terminal,运行对应的Gradle命令查看依赖树:

  • Mac/Linux:./gradlew app:dependencies
  • Windows:gradlew.bat app:dependencies

在输出结果里搜索com.google.protobuf,重点看有没有同时出现protobuf-lite和protobuf-java,或者同一个库的不同版本(比如一个是3.10.x,一个是3.12.x)。

2. 排除重复的冲突依赖

找到冲突的来源后,在对应的依赖项里手动排除重复模块。举两个常见场景:

场景1:Google Speech SDK间接引入旧版本Protobuf

如果是Speech相关依赖带了旧版Protobuf,就在依赖声明里排除冲突模块:

implementation('com.google.cloud:google-cloud-speech:你的版本号') {
    // 根据排查结果选其中一个,或者两个都排除
    exclude group: 'com.google.protobuf', module: 'protobuf-lite'
    exclude group: 'com.google.protobuf', module: 'protobuf-java'
}

场景2:Protobuf Gradle插件自动引入的版本冲突

检查你的build.gradle(Module级)里的Protobuf配置块,确保protoc和javalite的版本一致,且和0.8.5版本的插件兼容(0.8.5建议搭配3.12.0及以上的protoc版本):

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.12.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.12.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite {}
            }
        }
    }
}

3. 验证解决效果

重新同步Gradle,然后尝试编译运行项目。如果还有冲突,再回去检查依赖树,看看有没有漏排除的重复依赖,或者有没有其他第三方库也引入了Protobuf。

小提示:这个错误里的类属于Protobuf Lite模块,所以优先排查protobuf-lite的重复引入,大概率能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:25:18