我对Gradle构建系统和Android Studio很陌生,并且无法弄清楚如何解决此问题。我的构建失败了:
* What went wrong:
Execution failed for task ':cyanEngine:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: javax/annotation/ParametersAreNullableByDefault.class
如果我执行 Ctrl + N 并搜索 ParametersAreNullableByDefault 。一个参考指向外部库 |的 jsr305-1.3.9 即可。另一个指向 xwalk_core_library 下的 classes.jar 。
xwalk_core_library在我的xwalk_cordova模块中通过以下方式引用:
{
android{
dependencies{
compile 'org.xwalk:xwalk_core_library:11.40.277.7'
}
}
我的应用程序的gradle依赖项有:
compile project (':xwalk_cordova')
似乎我需要摆脱外部图书馆,但我不知道它来自哪里。
有关如何解决此问题的任何指示?
更新
我发现外部引用来自Guava,通过compile ('com.google.guava:guava:11.0.2')
在应用程序build.gradle中引用。刚刚更新到Guava版本18.0似乎让我现在已经过了这个。猜猜新版本不再依赖于jsr。
不过,我觉得我会再遇到这种情况。基本上,我们有两个第三方库,具体取决于相同的库。什么是清理它的最佳方法?
我注意到robolectic,有一个排除,我猜测是出于类似的原因:
testCompile('org.robolectric:robolectric:3.0-rc2') {
exclude group: 'commons-logging', module: 'commons-logging'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
我很好奇这个陈述是如何运作的,并且不太了解Gradle文档。这句话是什么意思?在哪里'组'和'模块'来自?