0. 環境

[Windows] 7
[Java] 1.8
[Android] 5.1.1
[Android API] 21

1. エラー内容

  • commons-langを使いたくなったので下記のように追記してビルドしたら、エラーが発生しました。 (文中の【】は読み替えて下さい)

    • (アプリルート)/mobile/build.gradle

      dependencies {
          compile '【他のライブラリ】'
          compile '【他のライブラリ】'
          compile '【他のライブラリ】'
          compile 'org.apache.commons:commons-lang3:3.4'
      }
      
    • エラー

      Error:duplicate files during packaging of APK C:\【パス】\mobile-debug-unaligned.apk
      Path in archive: META-INF/LICENSE.txt
      Origin 1: C:\【パス】\commons-cli-1.2.jar
      Origin 2: C:\【パス】\commons-lang3-3.4.jar
      You can ignore those files in your build.gradle:
      android {
      packagingOptions {
          exclude 'META-INF/LICENSE.txt'
      }
      }
      Error:Execution failed for task ':mobile:packageDebug'.
      > Duplicate files copied in APK META-INF/LICENSE.txt
      File 1: C:\【パス】\commons-cli-1.2.jar
      File 2: C:\【パス】\commons-lang3-3.4.jar
      

2. 解決方法

  • apkを作る際、複数のjarから、META-INFフォルダに同名のファイルを書き込もうとしてエラーになっているようです。

  • エラーメッセージの通り、build.gradle内でLICENSE.txtの除外を指定したら解消しました。

    • (アプリルート)/mobile/build.gradle

      apply plugin: 'com.android.application'
      
      android {
          compileSdkVersion 【バージョン】
          buildToolsVersion 【バージョン】
          //エラーが起きたファイルをここに追記。
          packagingOptions {
              exclude 'META-INF/LICENSE.txt'
              exclude 'META-INF/NOTICE.txt'
          }
          defaultConfig {
              //省略
          }
          buildTypes {
              release {
                  //省略
              }
          }
      }
      
      //以下省略
      
  • ちなみにapk内のMETA-INFOフォルダを確認するには、拡張子apkをzipに変えた後、解凍ソフトでapkを展開して下さい。