【发布时间】:2018-06-28 01:34:59
【问题描述】:
在 Android 项目中添加 Square 的 Wire 库以支持 Protobuf 后,我在编译期间收到以下 D8 异常:
D8:程序类型已存在:com.google.protobuf.DescriptorProto$ExtensionRange$ProtoAdapter_ExtensionRange
电线依赖:implementation 'com.squareup.wire:wire-runtime:2.2.0'
Gradle 的 dependencyInsight 揭示了我的项目中的另一个依赖项,它传递地引入了 com.google.protobuf.nano:protobuf-javanano:3.1.0。所以我添加了一个排除:
implementation ('com.google.vr:sdk-base:1.100.0'){
exclude group: 'com.google.protobuf.nano'
}
但这并没有解决问题。
是什么让 D8 悲伤,我怎样才能让它再次快乐?
更新
有问题的设置是:有 3 个模块 A、B、C。 A 取决于 B 和 C。 B 和 C 都托管在内部 maven 服务器上,它们都依赖于 wire-runtime,并带有以下 POM 条目:
<dependency>
<groupId>com.squareup.wire</groupId>
<artifactId>wire-runtime</artifactId>
<version>2.3.0-RC1</version>
<scope>compile</scope>
</dependency>
我试过 Wire 版本 2.2 和 2.3.0。当A 只依赖于B 或只依赖于C 时,一切都很美好,但是当A 依赖于B 和C 时,D8 会感到难过。
那么你如何依赖多个传递依赖 Wire 的模块呢?
【问题讨论】:
标签: android protocol-buffers maven-publish android-d8 square-wire