当我添加com.google.firebase:firebase-config:19.1.0以使用firebase远程配置时,遇到了这个问题。
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-analytics和google-play-services都更新到了最新版本。但问题仍然存在。但当我将远程配置更改为旧版本的18.0.0 or less时,它工作得很好。但是我想用最新的版本。我的依赖项:
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",也尝试排除以下内容不起作用:
exclude group: 'com.google.protobuf', module: 'protobuf-lite'
exclude group: 'com.google.protobuf', module: 'protobuf-java'发布于 2020-01-28 16:53:13
最后,我解决了这个问题。首先,让我们了解一下这个问题:
protobuf-java和protobuf-lite是不兼容的包。它们都包含com.google.protobuf包中的类。protobuf-java通常用于桌面和服务器端使用的包中(即普通Java),而protobuf-lite则经常用于针对安卓的包中。
Firebase包依赖于protobuf-lite。项目中的其他内容必须依赖于protobuf-java。您可以按照以下说明查看依赖关系的树视图:https://stackoverflow.com/a/35235229。
排除是为了解决不兼容性问题,但实际上你应该看看你正在使用的任何引入protobuf-java的软件包是否有一个特定于android的变体。
要排除导致问题的重复类,请将以下代码添加到build.gradle (应用程序模块)文件中:
android {
...
configurations {
implementation.exclude module:'protobuf-lite'
}
}发布于 2021-04-12 20:34:49
试试这个,在app的构建中添加代码
configurations {
implementation.exclude module:'protobuf-java'
}发布于 2020-01-21 18:10:16
缺少类是一个已知的问题。Full proto和lite proto不能混合;它们使用不同的生成代码。不要依赖protobuf-java作为实现依赖,而是作为protobuf依赖,这将导致gradle-protobuf- .protos生成代码。
dependencies {
...
protobuf 'com.google.protobuf:protobuf-java:3.7.1'
}请注意,此解决方案仅对应用程序有效。如果你是一个库,这是危险的,因为你的库的用户可能会看到为众所周知的protos生成的代码的多个副本。
https://stackoverflow.com/questions/59838700
复制相似问题