Flutterでアプリを開発していると、次のような課題に直面することがあります。
- 開発用と本番用でAPIのエンドポイントを切り替えたい
dev
、staging
、prod
などの複数のビルド構成を管理したい- AndroidとiOSでのFlavor設定が面倒くさい
こうした悩みを自動で解決してくれる便利なツールが「flutter_flavorizr」です。
本記事では、flutter_flavorizrの概要から導入・設定手順、活用方法までをわかりやすく紹介します。
flutter_flavorizrとは?
flutter_flavorizr
は、Flutterプロジェクトにおけるビルドフレーバーの設定を自動生成するCLIツールです。
特徴:
- AndroidとiOS両方のFlavor構成を一括管理
- コマンド一発でビルドスクリプト・設定ファイルを自動生成
- Dartコード内でのFlavor分岐もサポート
yaml
ファイルによる宣言的な設定で簡単
これにより、環境ごとの分岐管理が圧倒的に楽になります。
インストール方法
まずはdev_dependencies
に追加します:
dev_dependencies:
flutter_flavorizr: ^2.2.1 # 最新バージョンはpub.devで確認
コマンドラインから実行するため、パスを通しておくと便利です:
dart pub global activate flutter_flavorizr
設定ファイルの作成
プロジェクトルートに flavorizr.yaml
を作成し、以下のように記述します。
flavors:
dev:
app:
name: "MyApp Dev"
android:
applicationId: "com.example.myapp.dev"
ios:
bundleId: "com.example.myapp.dev"
prod:
app:
name: "MyApp"
android:
applicationId: "com.example.myapp"
ios:
bundleId: "com.example.myapp"
このように、各フレーバーのアプリ名・パッケージ名(Bundle ID)を設定できます。
自動生成コマンド
設定ファイルを記述したら、以下のコマンドを実行するだけです。
flutter pub run flutter_flavorizr
すると以下が自動で生成されます:
- Androidの
flavors.gradle
設定 - iOSの
xcconfig
およびスキーム設定 - Dart側のFlavor定義(例:
flavors.dart
)
Dart側でのFlavor判定
自動生成されたlib/flavors.dart
などを使って、Dartコード内でもフレーバーを識別できます。
import 'flavors.dart';
void main() {
const flavor = String.fromEnvironment('FLAVOR');
if (flavor == 'dev') {
runApp(MyApp(apiUrl: 'https://dev.api.example.com'));
} else {
runApp(MyApp(apiUrl: 'https://api.example.com'));
}
}
このように、ビルドフラグでAPI先などを出し分けることも簡単です。
ビルド・実行コマンド例
Android
flutter run --flavor dev -t lib/main.dart
flutter run --flavor prod -t lib/main.dart
iOS
flutter run --flavor dev -t lib/main.dart
flutter run --flavor prod -t lib/main.dart
※Xcodeでビルドする場合は、Runner
のスキームから適切なFlavorを選択してください。
よくある活用シーン
- 開発チームごとのAPI環境の切り替え
- Googleサービスファイル(GoogleService-Info.plistやgoogle-services.json)の切り替え
- アイコン・アプリ名をフレーバーごとに変更
- β版・リリース版のビルド管理
これらを手動でやっていた頃に比べて圧倒的に効率的になります。
注意点・ベストプラクティス
flutter_flavorizr
実行後はiOSのXcodeスキームが更新されるので、Xcode再起動が必要な場合があります- Firebaseを使う場合、Flavorごとに
GoogleService-Info.plist
を分けて管理しましょう .gitignore
設定に注意(自動生成ファイルを含めるかはチーム内で統一)
まとめ
Flutterアプリで環境を分けたいとき、flutter_flavorizr
は以下の点で非常に強力です。
- 複雑なFlavor設定をYAMLだけで管理
- Android・iOS両対応
- Dartコードとも連携
- 時短かつミス防止
ビルド環境の構成管理に課題を感じている方、手動での設定に疲れている方は、ぜひ一度「flutter_flavorizr」を導入してみてください。