【Flutter/Dart】flutter_flavorizrで開発/本番環境の切り替え

この記事からわかること
- Flutter/Dartでflutter_flavorizrの使い方
- 開発/本番環境の切り替え
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Meerkat
- Xcode:16.0
- Flutter:3.29.2
- Dart:3.7.2
- flutter_flavorizr:2.4.0
- Mac M1:Sequoia 15.4
Flutterアプリで環境(フレーバー)ごとに設定を切り替える方法
iOSやAndroidアプリを開発する際に開発環境や本番環境でAPIの向き先が変わったり、設定ファイルを変更したりすることは多いと思います。これを都度手動で切り替えたりするのは大変なのでflutter_flavorizr
パッケージを使用して簡単に管理する方法を紹介していきます。
例えばよくあるのは以下の3環境を用意するパターンです。
- 開発環境(dev / Debug)
- ステージング環境(stg / Staging)
- 本番環境(prod / Release)
ビルドタイプ
環境を構築する前に「ビルドタイプ」についても理解しておきます。ビルドタイプとはアプリをビルドする際にどの状態でビルドするかを決めるタイプで、iOSでは「Build Configuration」、Androidでは「buildTypes」として定義されている部分です。デフォルトではそれぞれに「Debug / debug」と「Release / release」が定義されており、開発用と公開用でビルド実行内容が変化します。
- Debug / debug・・・最適化されずデバッグログが出力される
- Release / release・・・最適化されデバッグログが出力されない
おすすめ記事:【Kotlin/Android Studio】ビルド環境を変更する方法!buildConfigField
おすすめ記事:【Xcode】開発環境(ReleaseとDebug)モード(Build Configuration)の切り替え方法
この環境(フレーバー)とビルドタイプを組み合わせることでdebugDev
やreleaseProd
のような環境が構築でき、これをflutter_flavorizr
を使って簡単に管理できるようになっています。
flutter_flavorizrとは?
flutter_flavorizr
はFlutterアプリでフレーバー(環境)を作成・管理できる自動ツールパッケージです。専用の「YAMLファイル(flavorizr.yaml)」にフレーバーごとの設定を記述することでiOS・Android両方のプラットフォームで必要な構成ファイルや設定を自動生成してくれます。
※ flutter_flavorizr
は新しくクリーンなFlutterプロジェクト状態での使用が推奨されています。一部のプロセッサは既存のファイルや特定の基本構造を参照するため、既存のプロジェクトで実行するとエラーが発生する可能性があります。
導入
flutter_flavorizr
を使用するためには以下のソフトウェアが必要になります。「Ruby」や「Gem」のインストールはこちらの記事の一部などを参考にしてください。
- Ruby
- Gem
- xcodeproj(RubyGems 経由)
※ 上記はiOS・macOSのプロジェクトに必要でAndroidのみの場合は不要です
Flutterでflutter_flavorizr
を利用できるようにするために以下のコマンドを実行してパッケージを導入します。
これでパッケージの導入が完了です。
flavorizr.yamlファイルの作成
プロジェクト直下に「flavorizr.yaml」ファイルを作成します。中にフレーバーとその設定を記述していきます。
基本的にはflavors
の中に定義したいフレーバーを記述します。例えば上記は「dev」、「stg」、「prod」の3つのフレーバーを定義しそれぞれのアプリ名とアプリID(BundleID)をフレーバーごとに切り替えています。
他にも利用可能なフィールドはたくさんあるので詳しくは「available-fields」を参考にしてください。
自動生成コマンドの実行
「flavorizr.yaml」ファイルへの記述が完了したら以下のコマンドを実行します。するとDo you want to proceed? (Y/n)
と問われるのでY
と入力すればフレーバー切り替えに必要な設定ファイルなどを自動生成してくれます。
上記コマンドを実行することで全てのプロセッサが実行されますが、特定のプロセッサのみ実行したい場合は-p
オプションの後に実行したいプロセッサを指定すればOKです。
プロセッサの種類
またrun
コマンド時以外でも「flavorizr.yaml」に実行したいプロセッサを記載しておくことで実行するプロセッサをファイルで管理することも可能です。実行する順番によっては動作しないこともあるので注意してください。
プロセッサを実行することで色々なファイルが自動生成&更新されます。
※ 自動生成されるファイルのコミット履歴
例えばflutter:main
プロセッサでは「main.dart」ファイルの中身を以下のようにフレーバーに応じてアプリ内で切り替えられるようにF.appFlavor
にフレーバーをセットしています。既存のコードがある場合でも問答無用で置き換わってしまうので注意してください。
ここで必要なのは以下部分だけなので既存プロジェクトの場合はここだけコピーすれば良いと思います。
最後に作成したフレーバーごとにアプリをビルドしてみます。これで環境ごとに設定や構成を変更することが可能になります。
Configurations設定
古い記事を見るとflutter pub run flutter_flavorizr
コマンドの実行でlib/main_{flavor}.dart
ファイルが自動生成され、Configurationsにも自動で追加されているようでしたが、最新のバージョンからなのか自動生成はされませんでした。さらにデフォルトであるlib/main.dart
のConfigurationsにフレーバーが未設定のためAndroid Studioからビルドしようとすると正常にビルドできなくなりました。
これを解消するためにAndroid Studioの上部の「main.dart」>「Edit Configurations..」をクリックすると以下の画面になるので「Build flavor」に任意のフレーバーを指定する必要がありました。

さらに「+」>「Flutter」から新規でConfigurationを追加することも可能です。そのためにはまずlib/main_{flavor}.dart
を作成しておき、「Dart entrypoint」でそのパスを指定、「Build flavor」に任意のフレーバーを指定すれば完了です。「Name」も変更できるのでわかりやすい名前にしておくと良いかもしれません。
.gitignoreへの追加
flutter_flavorizr
を使用する場合「.gitignore」に追加するべきファイルは以下のとおりです。
上記のファイルはassets:download
とassets:extract
を実行した際に生成されるファイルでflutter_flavorizr
で使用するアセットやテンプレートが格納されているファイルです。プロジェクトには必要ないので無視するようにしておきます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。