31

我有一个使用 Android Studio 创建的基本 Android 应用程序,但在我的构建中添加黄油刀时遇到问题。我收到此错误:

Error:: duplicate files during packaging of APK C:\apps\orion\app\build\apk\app-debug-unaligned.apk
Error:Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK META-INF/services/javax.annotation.processing.Processor
    File 1: C:\Users\andres\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife\4.0.1\f43b36925363701633d01adb8e54df7150397a78\butterknife-4.0.1.jar
    File 2: C:\Users\andres\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife\4.0.1\f43b36925363701633d01adb8e54df7150397a78\butterknife-4.0.1.jar

我的依赖项如下所示:

dependencies {

    compile 'com.android.support:support-v4:+'
    compile 'com.squareup.dagger:dagger-compiler:1.2.1'
    compile 'com.squareup.dagger:dagger:1.2.1'
    compile 'com.jakewharton:butterknife:4.0.1'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.android.support:appcompat-v7:+'
    compile project(':lib')
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
4

4 回答 4

82

该插件的更高版本将告诉您如何解决此问题。我认为我们在 0.8 中引入了修复,因此您可能应该升级。然后解决方法是将其放入您的build.gradle

android {
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
}

这将从包装中排除此文件,这很好,因为 APK 中实际上不需要它。

于 2014-03-16T18:31:00.263 回答
15

那是因为您写了compilefor dagger-compiler,将其替换为 ,provided问题将得到解决。

compile 'com.squareup.dagger:dagger:1.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
于 2015-03-24T19:43:11.193 回答
7

Gradle 构建工具 >= 0.9.1 版本中的最佳选择可能是:

android {
    packagingOptions {
        pickFirst 'META-INF/services/javax.annotation.processing.Processor'
    }
}

有关更多信息,请参阅 Android 工具项目页面:新构建系统

编辑:如果您开始遇到生成代码的问题,请注意最后一点,请确保正确构建您的依赖关系。我最终删除了处理器行的任何排除并构建了我的注释处理依赖项,例如:

compile "org.parceler:parceler-api:0.2.15"
apt "org.parceler:parceler:0.2.15"

provided 'com.squareup.dagger:dagger-compiler:1.2.2'
apt 'com.squareup.dagger:dagger-compiler:1.2.2'
于 2015-02-18T01:07:47.290 回答
3

如果在应用上述给定的解决方案后,您仍然面临与我相同的问题,那么如果您使用的是glide库,则将glide的版本更改为最高版本。例如。

implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
于 2019-10-09T09:04:30.203 回答