🌺

【Flutter】目的別に最適化!フレーバー&ビルドタイプ完全解説

2025/01/27に公開

0. 前提

この記事では、iOSとAndroidにおけるビルドバリアントについて解説します。環境ごとの設定を効率化するために、Flutterのパッケージflutter_flavorizrを使用した構築方法を前提にしています。

1. こんな場面遭遇したことありませんか?

  • 開発環境、本番環境で、毎回手動で設定を変更するのが面倒で仕方がない。
  • APIのエンドポイントやログレベル、ビルド設定をそれぞれの環境に合わせて変更するたびに、ビルドやデプロイに時間がかかっている。
  • 同じアプリを開発用と本番用で分けて管理したいけど、設定を手動で切り替えるのが煩わしく、ミスも多い。

そんな時にこそ、Flutterのビルドバリアントをうまく活用すれば、面倒な設定を簡素化し、開発をより効率的に進めることができます。

2. ビルドバリアントとは?

ビルドバリアントは、iOSやAndroidでアプリのビルドをカスタマイズするための仕組みで、フレーバービルドタイプを組み合わせることで、さまざまな環境や目的に応じたビルドを作成できます。

フレーバー(Flavor)

フレーバーは、アプリの異なる「バージョン」や「環境」を定義するためのものです。例えば、開発用(Development)、テスト用(Staging)、本番用(Production)など、異なるフレーバーを設定することで、それぞれの環境に応じた設定やリソースを使い分けることができます。

▼ 活用例

  • 開発環境:開発中に使用するAPIエンドポイントやデバッグ設定
  • ステージング環境:本番前にテストを行うための環境
  • 本番環境:ユーザー向けにリリースする実際のアプリ

フレーバーを使うことで、異なる環境に合わせたビルドを一度に管理できるため、各環境ごとにビルド設定を分ける手間を減らせます。

ビルドタイプ(Build Type)

ビルドタイプは、ビルドの性質を決めるための設定です。

主に2つのタイプがあります。

  • デバッグ (debug):開発中に使用する設定。エラーや警告の表示、パフォーマンスの最適化は行われない。
  • リリース (release):最終的にユーザーに配布するビルド。パフォーマンスが最適化され、エラーのログなどは除去される。

ビルドタイプを使用することで、開発中と本番リリース時でアプリの動作を切り替えることができます。

フレーバーとビルドタイプの組み合わせ

ビルドバリアントは、フレーバーとビルドタイプの組み合わせによって成り立っています。

▼ 活用例

  • development/debug:開発環境用のデバッグビルド
  • staging/release:ステージング環境用のリリースビルド
  • production/release:本番環境用のリリースビルド
    これにより、アプリが動作する環境に応じた最適な設定を簡単に切り替えることができ、効率的な開発やデプロイが可能になります。

flutter_flavorizrでビルドバリアントを生成する

前提

Flavorizrを使用する前に、以下のソフトウェアのインストールが必要です。

  • Ruby
  • Gem
  • Xcodeproj (RubyGemsを経由)

※iOSとmacOSのプロジェクトとスキーマを操作するために必要なので、Androidのフレーバー化のみであれば不要です。

インストール手順

  1. pubspec.yamlに追加
pubspec.yaml
dev_dependencies:
  flutter_flavorizr: ^2.2.3
  1. パッケージのインストール
pub get

フレーバーの設定方法

  1. flavorizr.yamlをプロジェクト直下に作成する。
  2. 以下を作成したファイルに書く
flavorizr.yaml
flavors:
  prod: # prodフレーバー
    app:
      name: "Hoge App"
    android:
      applicationId: "com.example.hoge"
    ios:
      bundleId: "com.example.hoge"
  dev: # devフレーバー
    app:
      name: "Hoge App dev"
    android:
      applicationId: "com.example.hoge.dev"
    ios:
      bundleId: "com.example.hoge.dev"

主な設定項目

  • app.name: アプリ名
  • android.applicationId: AndroidのアプリケーションID
  • ios.bundleId: iOSのバンドルID

詳しくはpub.devのAvailable fields参考

使用方法

flavorizr 設定の定義が完了したら、次のコマンドでスクリプトを実行して設定を反映します。

flutter pub run flutter_flavorizr

実行するとlib/main_pub.dartlib/main_dev.dartlib/flavors.dartなどのファイルが自動生成されます。

上記のコマンドではすべてのプロセッサーが順番に実行されますが、以下のようにすると特定のプロセッサーのみ実行することも可能です。

flutter pub run flutter_flavorizr -p <processor_1>,<processor_2>

プロセッサー例

  • flutter:flavors Flutterフレーバー設定ファイルを作成する
  • flutter:app app.dartエントリを作成する

フレーバーの実行

flutter run --flavor pub -t lib/main_pub.dart
flutter run --flavor dev -t lib/main_dev.dart 

まとめ

この記事では、Flutterアプリ開発におけるビルドバリアントの効率的な活用方法を解説しました。フレーバー(開発・本番環境など)とビルドタイプ(デバッグ・リリース)を組み合わせることで、環境ごとの設定切り替えを簡素化できます。さらに、flutter_flavorizrを使うことで、ビルドバリアントの設定を効率化することが可能です。

Discussion