两个外部第三方混淆库中存在重复的类名

Gar*_*Bak 8 android gradle

我有一个项目,其中包括两个外部第三方库。当尝试构建项目时,这两个库的类文件名都被混淆了,并且 gradle barfs 了。

Duplicate class a.a.a.a.a.b found in modules...
Run Code Online (Sandbox Code Playgroud)

我无法排除任何类,因为它们不是重复的,我也没有看到 gradle 为名称添加前缀的方法。

有什么简单的解决办法吗?

lan*_*ava 3

您可以使用影子插件重新定位有问题的包。然后,您将依赖于阴影罐子而不是原始罐子

plugins {
   id "com.github.johnrengelman.shadow" version "5.2.0"
}
configurations {
   shadowMe { transitive = false } 
} 
dependencies {
   shadowMe 'foo:jar-to-shadow:1.0'
   compile files({tasks.shadowJar})
}
task shadowJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
   archiveBaseName = 'shadowed-foo' 
   relocate 'a.a.a.a.a', 'shadow.a.a.a.a'
   from zipTree(configurations.shadowMe.singleFile)
}
Run Code Online (Sandbox Code Playgroud)

这些都没有经过测试,可能需要一些调整,但希望你明白