search
LoginSignup
3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

アプリプロジェクトにおいて、使用する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では試していないが、おそらく同じ方法で行けるはず。
ダメだったらコメント頂ければ^^;

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3
Help us understand the problem. What are the problem?