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 タスクを実行すればいい。