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-stg
や Debug-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