Flutterでflavorを用いたiOSリリースフロー
まず初めに
アプリをリリースしてからバグ修正や機能追加などをしてリリースするまでの手順に関して、初見だと意外にすんなりいかないこともあると個人的に感じていますので、執筆します📝
リリース周りのことってプロバイダー(Apple)の仕様や取り決めに依存するのでAIの苦手分野なんですよね、、、
前提
開発環境

Git運用方法
-
hotfix/i-⚪︎⚪︎ブランチ
=> 修正するためのコードを書くブランチ。直近リリースしたコミットからブランチを切る。イシュー番号と紐付けてブランチを作成 -
release/v⚪︎.⚪︎.⚪︎ブランチ
=> hotfixブランチで修正完了後、リリースビルド〜App Storeへレビュー申請するまでに編集したコード。具体的にはGoogleService-Info.plistとか。審査を通すために編集したコードをこのブランチで書くこともある。 -
masterブランチ
=> App Storeでのレビュー完了後、実際にリリースしたコードをPR&マージする
手順
1. 修正を完了させ、リリースのためのブランチにPR&マージする
マージする前にpubspec.yaml内のバージョン情報を更新してしまっていますが、リリースのためのブランチで編集する方がよいかもしれません。
version: 1.1.1+1
2. リリースビルド
2-1 最新バージョンに更新したか確認
手順1のpubspec.yamlのバージョンを編集したら、シュミレーターや実機にインストールされているアプリを一度アンインストールしてから再度インストールして、バージョンが最新になっているか確認します。
私は下記のようにpackage_info_plusを用いてバージョン情報をアプリ内で表示しているのでここで確認しています。https://pub.dev/packages/package_info_plus
Future<String> getCurrentAppVersion() async {
final info = await PackageInfo.fromPlatform();
return info.version;
}
また、これはApp Storeでのレビュー時のバージョン表記と合わせます。
2-2 リリースビルド実行
ターミナルで下記を実行し、リリースビルドを実行します。
この時、リリース用のflavorを指定しているか注意します。
flutter build ios --release --dart-define=FLAVOR=production
完了すると下記のように表示されます。

2-3 Xcodeで当該プロジェクトを開く
Android Studioのターミナルで下記を実行してXcodeを開く
open ios/Runner.xcworkspace
2-4 アーカイブ実行
Schemeがリリース用のものであるか確認の上、Xcodeの上部タブのProduct>Archiveと選択します。

しばらく待つとアーカイブダイアログが開き、アプリの配布方法の選択を求められるので、App Storeを選択します。
これも少し待つと結果が表示されます。
下図のようになっていれば問題ないです。

3. AppStoreConnectでのレビュー前準備を実施
3-1 AppStoreConnectで新規バージョンを追加する
当該アプリコンソールの左上にプラスボタンがあるので、ここから先ほど指定したバージョン文字列と同様のもので新たにバージョンを作成します。


3-2 ビルドを追加し、コンプライアンス回答を実施
先ほどアーカイブしたビルドを選択する。
コンプライアンスの注意メッセージが表示されるので、管理 >> 2つの質問に答えることで解消できます。※下図切れてしまっていますが、「コンプライアンスがありません」の右横に青文字で「管理」というリンクが表示されます。

ビルドの追加

1つ目の質問

2つ目の質問

こうなればOK
このタイミングでTestFlightでもテスト可能になりますので、リリース前の最後の動作確認を実機で行います。リリースビルドをミスってflavorが指定されていない状態で審査に提出してアプリが正常に起動せずにリジェクトされて無駄な時間を使ってしまうなんてことを防ぎましょうね!!(私の過去のやらかしエピ)
3-3 このバージョンの最新情報を記載
前回バージョンからの変化点として、バグ修正や機能追加の内容をここに箇条書きで書きます。

3-4 プレビューとスクリーンショットを追加
前回と同じスクリーンショットを使用したい場合は、
メディアマネージャーですべてのサイズを表示から別ページに飛び、再度戻って来ると前に追加したスクリーンショットが出現します。(謎仕様)


4. 審査へ提出する
審査へ追加>審査へ提出と進んで審査への提出を完了させる。

48時間以内に結果が出る(Appleの方ほんとにありがとうございます)
自動でリリースするに設定している場合は同時にリリースされます。
最後に
ご覧の通りフローが長いので可能な限り自動化したいと考えている日々。。。
よい方法があればご教授願いますm(__)m
Discussion