【问题标题】:java.util.zip.ZipException with spongycastle LICENSE.classjava.util.zip.ZipException 与 spongycastle LICENSE.class
【发布时间】:2016-05-10 02:08:17
【问题描述】:

我正在尝试包含两个不同的 3rd 方库,它们似乎都包含不同版本的海绵城堡。两者都通过编译语句包含在我的 build.gradle 中,一个作为 AAR (@aar) 包含,而另一个作为正常包含。

当我尝试使用这 2 个库编译调试 buildType 时(同步没有显示问题)。我看到以下内容,

错误:任务执行失败 ':app:transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目: 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'
}

【问题讨论】:

  • 在此处发布您的 gradle 文件。

标签: android android-studio android-gradle-plugin build.gradle


【解决方案1】:

如果开发人员直接包含他们的依赖项,就会发生这种情况。这里的坏人是jumio-mobile-sdk。这个包直接包含 com.madgag.spongycastle 的类,而不是像应该在 pom 中那样指定它们。

幸运的是,另一个包设置正确,所以你应该能够从中排除 spongycastle:

compile ('com.worldpay:cse-android-sdk:1.0.2'){
    exclude group: 'com.madgag.spongycastle'
}

现在想象一下,这两个包都会直接包含这些类。然后手动编辑文件就没有其他可能性了。这就是为什么我讨厌有人做 jumio 的人正在做的事情。如果你有联系人,告诉他们为依赖系统准备他们的包,这样这个问题就不会再出现了。

【讨论】:

  • 谢谢!。您能否解释一下(或指出一个好的来源)这个exclude 指令是如何工作的?我见过groupmodule 等提到它。但并不真正了解它或如何以及何时使用它。
猜你喜欢
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
相关资源
最近更新 更多