アプリを開発するとき、ビルドを分けて開発することになるので、ビルド環境を分ける方法についてまとめてみた。
AndroidStudio
AndroidStudioの場合はモジュールのbuild.gradleで設定ができる。
最初プロジェクトを作ってbuild.gradleをみると下のようにdebugとreleaseがdefaultに設定されているのが確認できる。
環境を分けるには二つの方法がある。buildTypesを追加するのとproductFlavorsを追加すること。
BuildTypes
まず、staging環境を作りたいとしたら、
上段のバーの Build -> Edit Build Types のところでビルドタイプを下のように追加する。
すると、buildTypesに追加されることが確認できる。
もし、それぞれの機能や設定を指定する場合は、たとえば、WebviewのそれぞれのurlをセッティングするときだとしたらBuildConfig.BUILD_TYPE
メソッドを使って分岐して処理することができる。
1 2 3 4 5 6 7 |
|
ProductFlavors
ここで同じソースコードを使って別のアプリを作らなきゃいけないときがあるかもしれない。たとえば、無料バージョンと有料バージョンを分けるとしたらProductFlavorsを設定する。
上段のバーの Build -> Edit Flavor のところでflavorを追加する。
すると、productFlavorsに追加されることが確認できる。
productFlavorsもBuildConfig.FLAVOR
を使って分岐ができる。
1 2 3 4 5 |
|
上の画像をみたらわかるように各flavorの下にbuildTypesがつく。今までのセッティングでfreeDebug,freeStaging,freeRelease,paidDebug,paidStaging,paidRelease全部で6個のビルドが生成される。
で、問題はこの分けられた6個のビルドのapplicationIdやversionNameが同じでインストールやリリースのときにうまくできないことだ。なので、applicationIdSuffix
,versionNameSuffix
を使ってそれぞれのapplicationIdとversionNameを持つようにする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
そして、アプリ名も別にする必要があるので設定させる。アプリ名はAndroidManifestで変更できるが。
build.gradleでmanifestPlaceholders
を使ったらAndroidManifestで使用できる。たとえば、
1
|
|
上のように設定すると、AndroidManifestで
1
|
|
こういうふうに使うことができる。