アプリプロジェクトにおいて、使用するjarをproductFlavor/BuildTypeで切り替える方法は、こちらに書いたとおりだが、ライブラリプロジェクトがあって、そちらで使うjarを切り替えたい時にどうしようかというお話。
前提
AndroidStudio 1.3
最終目標
構成サンプル
+ AppProject
+ AndroidLibProject
+ Libs
+ sdk_debug.jar
+ sdk.jar
上記サンプルのような構成の時に、debug/releaseでそれぞれリンクするjarを変えたい。
debug時はsdk_debug.jarを、release時はsdk.jarをリンクして欲しい。
NGだった方法
こちらと同じく、ライブラリプロジェクトのbuild.gradleでdependenciesを設定。
dependencies {
debugCompile files('libs/sdk_debug.jar')
releaseCompile files('libs/sdk.jar')
}
で、BuildVariantsを
AppProject=debug
AndroidLibProject=debug
としてビルドしたが、どうもsdk.jarを参照している動きをしていて、想定通りでない。
正解
まず、ライブラリプロジェクトのbuild.gradleにpublishNonDefault true
を追加する。
apply plugin: 'com.android.library'
android {
...(省略)...
publishNonDefault true
}
dependencies {
debugCompile files('libs/sdk_debug.jar')
releaseCompile files('libs/sdk.jar')
}
続いて、AppProject側のbuild.gradleにもdepentenciesの指定をする。
dependencies {
debugCompile project(path: ': AndroidLibProject', configuration: 'debug')
releaseCompile project(path: ': AndroidLibProject', configuration: 'release')
}
こうしておくと、AppProjectのBuildVariantsを切り替えると、AndroidLibProjectも連動して切り替わるようになる。
productFlaovrでは試していないが、おそらく同じ方法で行けるはず。
ダメだったらコメント頂ければ^^;