FlutterでiOSアプリのリリース手順
自己紹介
はじめましての方もそうでない方も、レシピサイトやSNSなどメニューを横断的に取り込める
おうちメニュー
というプロダクトをやっているkentarohです。
iOS | Android |
---|---|
本題
Flutterで開発したアプリをさてApp Storeで配布しようとしたときに手順で困ることありませんか?私は毎回はまっている気がしますのでドキュメントとして残そうと思いました。
前提
Flutterの開発環境ですが、development staging production’と環境を用意しています。今回ビルドのコマンドでもFlavorとして指定しています。
手順
ストアでのリリースに必要なファイルや情報を作成していきます。
- リリースノートを作成
- アプリバージョン番号の更新
- Flutterでビルド
- XCodeでArchive
- App Store ConnectでTestflightにてテスト
- ストアリリース
1リリースノートを作成
まずは前回のリリースから今回のリリースまでに含まれるコミットを確認
git log
前回のリリースとの差分のコメントを確認しメモします。
そしてリリース文のテンプレートに今回のリリースをストーリーとして追記しリリース文を作成します。
2アプリのバージョン番号の更新
ストアのバージョンを確認して、
今回のバージョンを差分を意識した階層でインクリメントしてコミットを作成します。
編集するのはここ。
version: 1.0.26+27
+を挟んで前後を更新します。
3Flutterでビルド
コンソールからflutterコマンドでビルドしていきます。
とその前に
flutter clean
をしておくのがおすすめです。
それからようやくビルドです。
flutter build ios --dart-define=FLAVOR=production
Flavorを使って環境をわけているので、--dart-define=FLAVORは環境依存でオプションです。
Use Release for command-line buildsに設定しているために、flavorのオプションなしでReleaseでビルドされます。
これでアプリファイルができました
※pod install周りでいつもハマってます。M1 Mac使ってます。Android Studioじゃなくてターミナルから
pod install --repo-update
したり、そもそもpubspec.yamlのバージョン指定消したり、pubspec.lock消したり、
iosのビルド高速化に挿入しているコード。ios/podfileの
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.1.0'
の8.1.0とかを修正したり色々記事見て対応しています。この辺りももうちょっと対応纏めたいな。
4XcodeでArchive
こんどはXcodeを開いて上部のproduct(英語のまま使ってるので日本語でそれっぽいの探してください)のArchiveを選択
※Simurator がAny iOS Deviceにしていないと Archiveが選択できません。
Archiveが終わるとあとは画面ぽちぽちで、App Store Connectへデプロイしてくれます。
ビルドはまりポイント
ITMS-90338: Non-public API usage
こちら、先日Apple側のトラブルでこのメッセージでApp Store Connectへのアップロード時にはじかれるというトラブルがあったようですが、私の場合そうではなく、ビルドがReleaseモードじゃない状態でビルドしてアップロードしていることが原因でした。
5TestFlightでもテスト
さてそのままでもストアにリリースできますが、ここでちょっと落ち着いてテストしています。ユーザーがよく使うであろうゴールデンパスのシナリオをさらっとというのもありますし、ベータテストユーザーに自由にさわってもらったりしています。そのためにも設定がいるのでちょっとメモ。
App Store Connectの画面でアプリを選択し、TestFlightのタブを選択。
まずはTestFlightからビルドを選択し審査に出します。
審査が終わったら、
今回デプロイしたビルドを選んでテスターを追加します。
そして内部グループや外部グループのパブリックリンクを選択し、ビルドを追加します。
そうすることで、ユーザーのTestFlightに最新のアプリがインストールできる状態になります。
特に問題がなかったら、ストアリリースです。
あ、ベータテスターからのありがたい改善のアイデアなどはバックログ※に入れておきましょうね。
※バックログとはスクラム開発(アジャイル開発手法の一つ)における、やることリスト・アイデアリストのようなもの
6ストアリリース
さていよいよストアのリリースです。
1で作成したリリースノートや、事前に作成した新しいストア画像などを登録して審査へ。
アップデートなら半日ほどでストアにリリースされることも。
あとはメールで審査完了を待つのみです。
おまけ 本番環境設定からの戻し
Firebaseのリリースも行ったとき、現在のプロジェクトが本番環境向けになっています。
※検証環境と本番環境でFirebaseのプロジェクトをわけている前提
firebase projects:list
で現在の設定を確認しましょう。
current がついているものが現在設定中のプロジェクトです。
firebase use プロジェクト名
で変更しておきましょう。
GoogleSearvices.Infoも検証と本番でわけているので
flutter cleanして
podfile.lockを消して
pod install
もしておく必要があります。
感想
Confluenceなどでリリース手順をまとめていなかったので記事にさせてもらいました。意外とチームで共有できてなかったことでもあるので、そういう知財は積極的にここに残そうと思います。
次回予告
現在、テスト駆動開発に移行するために活動しています。こちらをを共有しようと思います。
Discussion