web-dev-qa-db-ja.com

Gradle付きのバターナイフを含めてファイルを複製する

私は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'])
}
31
Andres Olarte

プラグインの以降のバージョンでは、これを修正する方法を教えてくれます。 0.8で修正を導入したので、おそらくアップグレードする必要があります。次に、これをbuild.gradle

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

これはパッケージからこのファイルを除外しますが、実際にはAPKでは必要ないため、問題ありません。

82
Xavier Ducrohet

これは、dagger-compilerに対してcompileを作成したためです。providedに置き換えれば、問題は修正されます。

compile 'com.squareup.dagger:dagger:1.2.1'
provided 'com.squareup.dagger:dagger-compiler:1.2.1'
15
Nima G

Gradleビルドツールのバージョン0.9.1以上での最良のオプションは、おそらく次のとおりです。

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

詳しくは、Android Tools Project page: New Build System )をご覧ください。

編集:生成されたコードで問題が発生し始めた場合は、ここで最後の注意点として、依存関係を適切に構成してください。最終的に、Processor行の除外をすべて削除し、次のように注釈処理された依存関係を構造化しました。

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'
7
Zack

上記の解決策を適用した後も、私と同じ問題が発生する場合は、glideライブラリを使用している場合、glideのバージョンを最大に変更してください。例えば。

implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
1