LoginSignup
40
39

More than 5 years have passed since last update.

Android Gradle Pluginでduplicate files during packaging of APKエラー

Posted at

gradleでapk作成時に"duplicate files during packaging of APK"エラーが発生しました。

Error:Gradle: duplicate files during packaging of APK /git/intellij/example/app/build/outputs/apk/app-debug-unaligned.apk
Error:Gradle: Execution failed for task ':app:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /Users/test/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.0/8873bd0bb5cb9ee37f1b04578eb7e26fcdd44cb0/commons-lang3-3.0.jar
    File 2: /Users/test/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.0/8873bd0bb5cb9ee37f1b04578eb7e26fcdd44cb0/commons-lang3-3.0.jar

これはAndroid Gradle Pluginの問題でバージョン0.7あたりから知られているようです。

Goolge codeのAndroidプロジェクトでも下記のIssueが上がっていました。

依存ライブラリに指定した外部jarファイルを内部で展開した時に複数のjarファイルでリソースファイルなどのパスが競合してエラーになっているようです。回避策として、Android Gradle Plugin 0.7.1から導入されたpackagingOptionsのオプションで解消できるようです。いまいち腑に落ちませんが、このオプションに重複エラーになるリソースファイルを指定します。

${module_root}/build.gradle
android {
    // 省略
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

NOTICE.txtなども重複しやすいので追加しておくと良さそうです。大文字小文字が違っていたり拡張子.txtがなかったりする場合もありますのでそれらを全部追加しておけば良いかもしれません。あとはエラーが起きた時にその都度追加しましょう。

${module_root}/build.gradle
android {
    // 省略
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}
40
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
39