モケラ

Tech Sheets

mokelab

FlutterでProduct Flavorを使う

最終更新日:2023-03-23

Androidアプリではビルド時に設定などを変更できるProduct Flavorという仕組みがあります。この仕組みはFlutterでも用意されています。

公式ドキュメントはこちら

Androidの設定

Android側はネイティブアプリと同様にProduct Flavorを作るだけです。 android/app/build.gradle にProduct Flavorを追加します。

android {
  ...
  flavorDimensions "default"

  productFlavors {
    stg {
      dimension "default"
      applicationIdSuffix ".stg"
    }
    production {
      dimension "default"
    }
  }
}

iOSの設定

iOS側はconfigurationとschemeの追加で実現します。

まず、 ios/Runner.xcworkspace をXCodeで開きます。

Runner -> ProjectのRunner -> infoのConfigurationsで、Debug/Release/ProfileのConfigurationをそれぞれDuplicateで作ります。名称は Debug-stgDebug-production のように -flavor名 にしておきます。

次にSchemeを追加します。XCode上部の Runner > デバイス名 の部分のRunnerをクリック -> Edit Scheme -> Duplicate Scheme で複製します。名前は stg や production のようにflavor名にします。Flutterがこのflavor名を使ってSchemeを決定するので Runner-stg みたいにすると動きません。

Schemeを複製したら、左側にあるBuild/Run/Test/Profile/Analyze/Archiveで使用するBuild ConfigurationをFlavor用に複製したConfigurationに変更します。

これでFlavorができました。あとはAndroidのFlavorと同様にstgビルドの時は別のBundle IdentifierとなるようConfigurationを設定します。

Runner -> TargetsのRunner -> Build Settings -> Product Bundle Identifier で、 Debug-stg/Profile-stg/Release-stg の時は別のBundle Identifierを設定します。

Flavorを使ったビルド

最後にFlavorを使ったビルドです。 --flavor flavor名 を追加するだけです。

# stgビルドで実行
% flutter run --flavor stg

# productionビルドでapp bundleを作る
% flutter build appbundle --flavor production

一覧に戻る