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

集成Firebase性能监控时protobuf版本冲突及运行时异常解决求助

问题根因

  1. 项目原有依赖的com.google.protobuf:protobuf-lite:3.0.1是Protobuf官方已废弃的旧包名,3.10.0版本之后官方将轻量版Protobuf包名改为com.google.protobuf:protobuf-javalite,两个包存在大量相同全限定名的类,因此出现编译阶段类重复冲突。
  2. 引入的Firebase BOM 28.3.0依赖的是protobuf-javalite:3.14.0,全局排除旧的protobuf-lite后,原有业务代码依赖的旧版Protobuf API和新版javalite的API不兼容,同时Firebase用到的新版API在旧版中不存在,因此出现运行时类找不到、方法找不到的报错。

解决方案

按以下步骤修改配置即可:

  • 第一步:移除之前添加的全局排除protobuf-lite的配置。
  • 第二步:在module级的build.gradle中添加如下配置,强制统一Protobuf版本,同时将旧的protobuf-lite依赖替换为同版本的protobuf-javalite:
configurations.all {
    // 强制所有protobuf相关依赖统一使用3.14.0版本,和Firebase依赖的版本对齐
    resolutionStrategy.force 'com.google.protobuf:protobuf-javalite:3.14.0'
    resolutionStrategy.force 'com.google.protobuf:protoc:3.14.0'
    // 将所有对旧版protobuf-lite的依赖替换为新版的protobuf-javalite
    resolutionStrategy.dependencySubstitution {
        substitute module('com.google.protobuf:protobuf-lite') using module('com.google.protobuf:protobuf-javalite:3.14.0')
    }
}
  • 第三步:如果项目中有用到Protobuf编译插件生成代码,需要同步修改protobuf插件的配置,将lite选项改为javalite:
protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.14.0'
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                // 把原来的lite {} 配置替换为下面的javalite配置
                javalite {
                    option 'lite'
                }
            }
        }
    }
}
  • 第四步:清理项目缓存后重新编译:依次执行Build -> Clean Project、Build -> Rebuild Project即可。
    如果编译时出现少量Protobuf相关的API调用报错,直接按新版javalite的API规范调整即可,绝大多数常用API和旧版lite完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:27:04