java.util.zip.ZipException:重复条目:dagger/Provides.class

java.util.zip.ZipException: duplicate entry: dagger/Provides.class

当我同步项目时一切正常,但是当我尝试 运行 时出现此错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: dagger/Provides.class

这是我的应用程序 build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'android-apt'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "appID"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {

    compile 'com.android.support:appcompat-v7:23.0.0'

    compile 'com.jakewharton:butterknife:8.4.0'
    apt 'com.jakewharton:butterknife-compiler:8.4.0'

    apt 'com.google.dagger:dagger-compiler:2.5'
    compile 'com.google.dagger:dagger:2.5'
    provided 'javax.annotation:jsr250-api:1.0'

    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'

    compile('com.sumup:merchant-sdk:1.61.0@aar') {
        transitive = true
    }
}

如果我 运行 没有 compile 'com.google.dagger:dagger:2.5' 编译成功.. 请帮助.

更新:

looks like sumup sdk 与 dagger 2.+ 不兼容。

所以我已经降级到 dagger 1.+ 并且工作正常。到目前为止没有出现其他问题。

在降级之前,您是否会考虑尝试将 compile 'com.google.dagger:dagger:2.5' 替换为以下内容:

compile ('com.google.dagger:dagger:2.0') {
    exclude group: 'javax.inject'
}

这将排除重复项 class。

我在切换到 Dagger 时遇到了类似的问题。

我们在@Component 和@Module 类 的不同工件中使用相同的包名称,而 Dagger 在我们使用相同包的每个工件中生成相同的 Dagger...Component.java 文件。

我们将组件移动到每个工件中的唯一包中后,问题就解决了。