Android
AndroidStudio

ライブラリプロジェクトで参照するjarをproductFlavor/BuildTypeで切り替える

More than 3 years have passed since last update.

アプリプロジェクトにおいて、使用する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を設定。


build.gradle(AndroidLibProject)

dependencies {

debugCompile files('libs/sdk_debug.jar')
releaseCompile files('libs/sdk.jar')
}

で、BuildVariantsを

AppProject=debug

AndroidLibProject=debug

としてビルドしたが、どうもsdk.jarを参照している動きをしていて、想定通りでない。


正解

まず、ライブラリプロジェクトのbuild.gradleにpublishNonDefault trueを追加する。


build.gradle(AndroidLibProject)

apply plugin: 'com.android.library'

android {

...(省略)...

publishNonDefault true

}

dependencies {
debugCompile files('libs/sdk_debug.jar')
releaseCompile files('libs/sdk.jar')
}


続いて、AppProject側のbuild.gradleにもdepentenciesの指定をする。


build.gradle(app)

dependencies {

debugCompile project(path: ': AndroidLibProject', configuration: 'debug')
releaseCompile project(path: ': AndroidLibProject', configuration: 'release')
}

こうしておくと、AppProjectのBuildVariantsを切り替えると、AndroidLibProjectも連動して切り替わるようになる。

productFlaovrでは試していないが、おそらく同じ方法で行けるはず。

ダメだったらコメント頂ければ^^;