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を展開して下さい。