【Android Studio】Product Flavorで環境を切り分ける方法!

この記事からわかること
- Android Studio/KotlinでProduct Flavorの使い方
- Build Typeとは?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Meerkat
- Kotlin:2.0.21
- AGP:8.9.2
- Gradle:8.11.1
- Android OS:15以降
アプリを環境で切り分けてビルドする
個人開発ではなかなかないですが、チーム開発となるとバックエンドの環境も開発(Develop)やステージング、本番環境などに切り分けられることが多いです。アプリ側もそれに準ずる形でエンドポイントへの向き先やアプリ名、AppIDなどを柔軟に切り替えて開発できる体制にしておくとスイッチコストを削減でき、効率的な開発を行うことが可能になります。
Android Studio(Android Gradle Plugin)にも環境を切り分けるための機構として「Product Flavor
」と「Build Type
」が導入されています。今回はこれらを使用してアプリ内の環境を切り分けを構築する方法をまとめて行きます。
Product FlavorとBuild Type
「Product Flavor
」は開発版や本番において機能の差分を持たせたい場合に活用できる機能です。例えばdevelop
、staging
、production
といったバックエンドの環境に合わせたりする形で定義することが多いです。
「Build Type
」はアプリをビルドする際の設定を切り替えたい場合に活用できる機能です。こちらはデフォルトでdebug
とrelease
が用意されているのでそのまま使用すれば良いと思います。Build Type
」自体の使い方は以下記事でも解説しているので参考にしてください。
Build Variant
「Product Flavor
」と「Build Type
」で設定した値を元に「Build Variant
」が生成されます。例えば「Product Flavor
」がdevelop
、staging
、production
「Build Type
」がdebug
とrelease
の場合は以下の通りになります。
- developDebug
- developRelease
- stagingDebug
- stagingRelease
- productionDebug
- productionRelease
フィルタリングする
自動生成される「Build Variant
」ですが生成対象をフィルタリングすることも可能です。例えばproductionDebug
のような使わなそうなものは以下のようにvariant.ignore = true
で無視するように設定すれば表示されなくなります。
※ Gradle 8.x / AGP 8.x 以降ではvariantFilterは非推奨になりandroidComponents.beforeVariantsを使用することが推奨されるようになりました。そのため以下のように実装してください。
Product Flavorのセットアップ方法
「Product Flavor
」を有効にするためには「build.gradle」に追加して行きます。例としてdevelop
、staging
、production
の3つを定義してみます。
flavorDimensions
はフレーバーの軸となる値です。これは複数の軸も定義することができるのでアプリの要件に応じて増やしてあげてください。よくあるのは以下のような使い方です。
- env・・・develop, staging, production
- tier・・・free, paid
- region・・・japan, us, global
buildConfigField
で色々な値を設定できるので詳細は以下の記事を参考にしてください。
リソースファイルの管理
「Product Flavor
」を使用することでリソースをフレーバーごとに切り替えることができるようになります。以下のような形でsrc
ディレクトリ直下に各フレーバーごとのディレクトリが生成されその中でリソースファイルを管理することが可能です。これはフレーバーを切り替えると自動で該当のディレクトリ内のものが利用されるようになります。
リソースファイルを追加する際はvalues
を右クリックして「New」>「Values Resource File」をクリックして「Source Set」の部分を変更すればOKです。main
を選択すると全てのフレーバーで共通のものを使用することが可能です。

アプリ名を変更する
アプリ名は「AndroidManifest.xml」からリソースファイルを参照して設定されています。
そのため各フレーバーに以下のようにそれぞれ設置してあげれば環境ごとにアプリ名も変更することができます。
コードから識別する
Kotlinのコード内からフレーバーを取得するにはBuildConfig.FLAVOR
を使用します。この中に実行されているフレーバー名が格納されているのでその値によって処理を分岐してあげればOKです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。