質問: Android上でFTPなどを行いたいとき、以下みたいな感じでjarファイルを持ってきたりして、 http://gacken.com/wp/program/android/1646/ FTPClient などを利用しますが、ビルド(実行)するときにわけわかめなエラーが出現します。 ``` compile files('libs/commons-net-3.4.jar') compile files('libs/commons-net-3.4-sources.jar') compile files('libs/commons-net-examples-3.4.jar') ``` なんか以下のファイルが邪魔をしているようで、 META-INF/LICENSE.txt META-INF/NOTICE.txt これは、build.gradleの中で ``` android { packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } } ``` みたいにして除外すれば通るようです。 こんな事で延々と引っかかるんですよ、ソース組むよりこんなんばっかでつまずくのは苦しいですね
回答: 複数のライブラリーを入れると、それぞれのJARファイルに`LICENSE.txt`や`NOTICE.txt`が含まれていて、それらをパッケージングでひとつにまとめようとすると、同じファイルが重複してしまい、ビルドエラーになります。 これらのファイルは、ライブラリーによってはファイル名が異なりますが、Apacheのライブラリーは基本的に同じ構成になっていると思いますので、Apacheのライブラリー同士だと必ず重複が発生します。 Apache以外の場合、ライブラリーによっては、他にも除外設定が必要なファイルがあるようです。 参考リンクのページを見てみてください。 参考リンク: Android のビルドで依存を追加した時に META-INF で duplicate して死ぬ話 | たのしい人生 【Android】僕の考えた最強で平凡なbuild.gradle