首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型com.google.protobuf.Any$1是多次定义的

类型com.google.protobuf.Any$1是多次定义的
EN

Stack Overflow用户
提问于 2020-06-25 07:18:35
回答 1查看 1.1K关注 0票数 0

我正在以这样的方式实现protobuf:

代码语言:javascript
复制
 implementation 'com.google.protobuf:protobuf-lite:3.0.1'
protobuf 'com.google.protobuf:protobuf-java:3.10.0'

除此之外,我还有一个领域:

代码语言:javascript
复制
 kapt 'io.realm:realm-annotations-processor:6.1.0'

当我试图构建代码时,我会得到以下错误:

代码语言:javascript
复制
Type com.google.protobuf.Any$1 is defined multiple times: ..\.gradle\caches\transforms-2\files-2.1\27abd4bf864632f274bb28f15772efb2\jetified-protolite-well-known-types-17.0.0-runtime.jar:com/google/protobuf/Any$1.class, ..\app\build\intermediates\transforms\RealmTransformer\demo\debug\0\com\google\protobuf\Any$1.class

我需要用:

代码语言:javascript
复制
protobuf 'com.google.protobuf:protobuf-java:3.10.0' 

因为我的proto文件包含Any.proto

是否有一种方法可以将proto文件排除在域之外,或者使用我的proto文件中的任何文件?

EN

回答 1

Stack Overflow用户

发布于 2020-08-07 13:54:05

删除: protobuf‘com.google.Probuf:protobuf-java:3.10.0’

通过删除该行,您应该会得到另一个错误,因为Duration.proto不在包中。这个错误将在下一个版本的Protobuf中修复。

有一项工作可以解决这个问题:

  • 下载java版本的

的jar文件

  • 下载java lite版本的

的jar文件

  • 从java版本

中提取Duration.proto

  • 将Duration.proto纳入java lite版本的

中。

  • 将java的jar文件复制到应用程序/libs

中。

  • 替换gradle中的行:

实现'com.google.protobuf:protobuf-lite:3.0.1'

通过

代码语言:javascript
复制
implementation fileTree(dir: 'libs', include: ['protobuf-javalite-3.10.0.jar'])

使用两个jar文件的相同版本。

在新版protobuf发布之前,这是一个临时修复。

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

https://stackoverflow.com/questions/62569903

复制
相关文章

相似问题

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