Android StudioでFlavor・BuildTypeを分岐させてアプリビルドする詳細手順

Android Studioでアプリビルドするとき、

こういうケースを考えてみます。

  • FREE版のアプリAPK / AABを作りたい
  • PRO版のアプリAPK / AABを作りたい
  • 全verを1つのプロジェクトで管理したい

例えばGooglePlayに広告ありのFREE版アプリと広告なしのPRO版アプリを同時にリリースしたい……そういう時にAPK/AABを1つのプロジェクト上で分岐させたいってことです。

そういう時に使えるのが次の機能

  • Build Types
  • Build Flavos

これら2つを合わせてBuild Variantsと言います。

その分岐方法とかを将来のために残しときます。

1.モジュールbuild.gradleにproductFlavorsを追加

まずモジュールレベルのbuild.gradleを開きます。

▼ Module:... の方のbuild.gradleを開く

赤線で囲ったモジュールレベルのbuild.gradleを開く

▼ defaultConfigの設定箇所を見つける

このdefaultConfigのあと(中じゃないよ)に productFlavors  というブロックを追加します。そこでFREE版・PRO版とかの切り替えを定義できます。

▼ FREE/PROで分岐させるproductFlavors設定例

ひとまず dimension "default"  は共通にしておき、applicationSuffix・versionNameSuffixでプロ版のみに接頭語(.pro/-pro)を付与しています。

これでビルド時に分岐させれるってわけです。

2.モジュールbuild.gradleのbuildTypesを編集

あとデバッグ設定も追加します。

▼ BuildTypesブロックの箇所に注目

▼ ここにdebugブロックを追加する

ということで初期設定はこれにて完了

3.アプリコード側でFREE/PRO版ごとに処理分岐とかする

ここまでだとBuild Flavorが追加されただけ

実際には以下のような切り替えが必要です。

  • Flavorごとの動作コードの切替
  • Flavorごとのリソースなどの切替

ここではコードをflavorで分岐させてみます。

▼ 例えばこんなコードを書いてみた

このように簡単にコード分岐が可能

Build Variantの関する情報は BuildConfig.FLAVOR  から取得できます。返ってくる値はbuild.gradleのproductFlavorsで定義したフレーバー名です。

4.文字列リソースをflavorごとに切り替えする

通常、文字列リソースはstrings.xmlで定義します。

これをPRO版では一部だけ変更したいケースもあるはずです。

そういう時はそのflavor専用のリソース追加します。

まず左側のプロジェクトマネージャのAndroidを開き、
そこから 左クリック => Android Resource File をクリック。

▼ このようにPRO版用リソース追加

"Android : Android Resource File を開き、この画像のようにPRO版リソースを追加

これは例なので各自の環境で置き換えること

上記では文字列リソースファイル名として env_string.xml という名前にし、Resources type : Values 、Source set : pro としてPROフレーバー用のリソースを追加しました。

▼ アプリ名だけPRO用に切り替える(env_strings.xml)

デフォルトだとアプリ名として app_name というIDが作られますが、もしflavorがそれを上書きしてるならそっちが優先されます。

同じ要領で文字列以外のリソースも分岐させれます。

5.Flavor・Build Typeごとにアプリをビルドする

どうやってFlavorをビルド分岐させるかですが…

次のような手順でBuild Variantsを表示します。

▼ View => Tool Windows => Build Variants

Android Studio ⇒ Tool Windows ⇒ Build Variants から開く

▼ Build Variantウインドウが表示される

Android Studio : Build Variantウインドウが表示したときの様子

ここからビルド対象のflavor/build typeを選んでください。

リリース時の署名のやり方などは全く変わりません。

プロジェクト内でBuild Variantを切り替えるだけです。

総括.ビルド分岐手順さえ分かれば簡単にできる

念のためにここまでの手順を箇条書きしときます。

  1. モジュールbuild.gradleにproductFlavorsを追加
  2. モジュールbuild.gradleのbuildTypesを編集
  3. コード側でFREE/PRO版ごとに処理分岐とかする
  4. 文字列リソースをflavorごとに切り替えする
  5. Flavor・Build Typeごとにアプリをビルドする

以上、Android Studioでのアプリビルド切替でした。

大まかな手順さえ知っておけば大丈夫です。