在 Android 项目中添加 Square 的Wire库以支持 Protobuf 后,我在编译期间收到以下 D8 异常:
D8:程序类型已经存在:com.google.protobuf.DescriptorProto$ExtensionRange$ProtoAdapter_ExtensionRange
电线依赖:implementation 'com.squareup.wire:wire-runtime:2.2.0'
GradledependencyInsight
在我的项目中揭示了另一个依赖项,即传递引入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
时,D8 会变得悲伤。A
B
C
那么你如何依赖于传递依赖于 Wire 的多个模块呢?