我试图包括两个不同的第三方库,两者似乎都包括不同版本的Spongy城堡.两者都包含在我的build.gradle中的编译语句中,一个包含在AAR(@aar)中,而另一个包含在正常情况下.
当我尝试用这两个libs编译调试buildType时(sync不显示问题).我看到以下内容,
Error:Execution Failed for task
‘:app:transformClassesWithJarMergingForDebug’.com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry:
org/spongycastle/LICENSE.class一直在寻找如何解决这个问题,同时保留两个库(两者都需要),但一直无法找到方法.任何来自高级Android开发人员或gradle专家的帮助将不胜感激.
谢谢!
[的build.gradle]
apply plugin: 'com.android.application' repositories { maven { url 'http://mobile-sdk.jumio.com' } } android { compileSdkVersion 23 buildToolsVersion "23.0.2" packagingOptions { pickFirst 'org/spongycastle/x509/CertPathReviewerMessages.properties' pickFirst 'org/spongycastle/x509/CertPathReviewerMessages_de.properties' } defaultConfig { applicationId "com.example.me.license" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs',include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile "com.jumio.android:jumio-mobile-sdk:1.9.0@aar" compile 'com.worldpay:cse-android-sdk:1.0.2' }
最佳答案
如果开发人员直接包含其依赖项,则会发生这种情况.这里的坏人是jumio-mobile-sdk.这个包直接包含com.madgag.spongycastle类,而不是像它应该在pom中那样指定它们.
幸运的是,其他包已正确设置,因此您应该能够从中排除spongycastle:
compile ('com.worldpay:cse-android-sdk:1.0.2'){
exclude group: 'com.madgag.spongycastle'
}
现在想象两个包都会直接包含这些类.那么手动编辑文件就不可能了.这就是为什么我讨厌如果有人做了jumio的人正在做的事情.如果您有联系人,请告诉他们为依赖系统准备他们的包,因此不会再出现此问题.