首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.RuntimeException:添加firebase远程配置时出现重复的类com.google.protobuf.AbstractMessageLite

java.lang.RuntimeException:添加firebase远程配置时出现重复的类com.google.protobuf.AbstractMessageLite
EN

Stack Overflow用户
提问于 2020-01-21 18:08:56
回答 3查看 2.6K关注 0票数 9

当我添加com.google.firebase:firebase-config:19.1.0以使用firebase远程配置时,遇到了这个问题。

代码语言:javascript
复制
  java.lang.RuntimeException: Duplicate class com.google.protobuf.AbstractMessageLite found in modules protobuf-java-2.5.0.jar (com.google.protobuf:protobuf-java:2.5.0) and protobuf-lite-3.0.1.jar (com.google.protobuf:protobuf-lite:3.0.1)

我已经将firebase-analyticsgoogle-play-services都更新到了最新版本。但问题仍然存在。但当我将远程配置更改为旧版本的18.0.0 or less时,它工作得很好。但是我想用最新的版本。我的依赖项:

代码语言:javascript
复制
    firebase_analytics       : "com.google.firebase:firebase-analytics:17.2.2",
    fcm                      : "com.google.firebase:firebase-messaging:20.1.0",
    performance              : "com.google.firebase:firebase-perf:19.0.0",
    config                   : "com.google.firebase:firebase-config:19.0.0",

也尝试排除以下内容不起作用:

代码语言:javascript
复制
exclude group: 'com.google.protobuf', module: 'protobuf-lite'
exclude group: 'com.google.protobuf', module: 'protobuf-java'
EN

回答 3

Stack Overflow用户

发布于 2020-01-28 16:53:13

最后,我解决了这个问题。首先,让我们了解一下这个问题:

protobuf-javaprotobuf-lite是不兼容的包。它们都包含com.google.protobuf包中的类。protobuf-java通常用于桌面和服务器端使用的包中(即普通Java),而protobuf-lite则经常用于针对安卓的包中。

Firebase包依赖于protobuf-lite。项目中的其他内容必须依赖于protobuf-java。您可以按照以下说明查看依赖关系的树视图:https://stackoverflow.com/a/35235229

排除是为了解决不兼容性问题,但实际上你应该看看你正在使用的任何引入protobuf-java的软件包是否有一个特定于android的变体。

要排除导致问题的重复类,请将以下代码添加到build.gradle (应用程序模块)文件中:

代码语言:javascript
复制
android {
    ... 

  configurations { 
      implementation.exclude module:'protobuf-lite' 
  }
}
票数 15
EN

Stack Overflow用户

发布于 2021-04-12 20:34:49

试试这个,在app的构建中添加代码

代码语言:javascript
复制
configurations {
    implementation.exclude module:'protobuf-java'
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-21 18:10:16

缺少类是一个已知的问题。Full proto和lite proto不能混合;它们使用不同的生成代码。不要依赖protobuf-java作为实现依赖,而是作为protobuf依赖,这将导致gradle-protobuf- .protos生成代码。

代码语言:javascript
复制
dependencies {
  ...
  protobuf 'com.google.protobuf:protobuf-java:3.7.1'
}

请注意,此解决方案仅对应用程序有效。如果你是一个库,这是危险的,因为你的库的用户可能会看到为众所周知的protos生成的代码的多个副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59838700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档