Android アプリを Eclipse で開発する場合、使用するサードパーティーのライブラリ(jar)は、 libs
フォルダの下に配置しなければならない。
しかし、 Gradle の dependencies に依存関係を追加しただけでは、 jar は libs
の下には配置されない。
つまり、 Eclipse からはライブラリが参照できず、実装ができない。
そこで、依存ライブラリの jar を libs
の下にコピーするタスクを追加することで対応する。
build.gradle を修正する
プロジェクトを右クリックして、「エクスポート」→「Android」→「Generate Gradle build files」を選択し、画面の指示に従って build.gradle を出力。
以下の要領で build.gradleを修正する。
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
repositories {
mavenCentral()
}
dependencies {
compile files('libs/android-support-v4.jar')
compile 'org.roboguice:roboguice:2.0'
}
task copyLibs(type : Copy) {
configurations.compile.each {
from it.toString()
into 'libs'
exclude {
new File('libs', it.name).exists()
}
}
}
copyLibs
タスクは、 compile
で指定している依存ライブラリを libs
の下にコピーする。
ただし、既に libs
の下に配置されているライブラリについてはコピー対象外にしている。
また、自動生成された build.gradle では、 libs
フォルダ直下の全ての jar を参照するように dependencies が設定されている。
これをそのままにしていると、追加した依存関係と copyLibs
タスクで配置した jar が重複してしまい気持ち悪い。
なので、デフォルトの記述は削除し、最初から配置されている android-support-v4.jar
だけを参照するように変更している。
あとは、依存関係を追加したら、都度 copyLibs
タスクを実行すればいい。