`flutter build ipa` でiOS向けのビルドとアーカイブを同時に実行 🍎
Flutter 1.24.0–6.0以降のバージョンで使えるようになったコマンド
これまでは `flutter build ios`とアーカイブの2つの手順が必要だった
Flutterで、iOS向けのビルドをしてApp Store Connectなどにアップロード可能なipaファイルを得るにはこれまで以下の2つの手順が必要でした。
バージョン 1.24.0–6.0 以降では `flutter build ipa` だけで済むようになった
1.24.0-6.0
以降のバージョンのFlutterでは flutter build ipa
でそれらをまとめて1コマンドで実行できるようになりました 🎉
(2020年12月11日時点では beta
以降のchannelで利用可能で、 stable
ではまだ使えません)
利用手順
https://flutter.dev/docs/deployment/ios#create-a-build-archive にざっくり書いてありますが、簡単です。
flutter build ipa
を実行
flutter build ipa --export-options-plist=ExportOptions.plist
--export-options-plist=ExportOptions.plist
部分に何を指定するのか戸惑うかもしれませんが、XcodeでArchiveしてエクスポートして成果物として得られるフォルダに入っているこちらを持ってきて指定すれば良いです。
中身は以下のように簡単で、AppStoreへアップロードするipaを生成したい場合はこれをコピーして teamID
の値を変更するだけで使えるはずです(将来中身が変更されていく可能性があるのでそれに合わせて適宜調整してください)。
App Store Connect へfastlaneの upload_to_testflight
を使ってアップロード
元々fastlaneのbuild_app
を使っていた場合は ipa
の出力先がfastlaneでデフォルト指定されたルートで良ければ特にその指定は不要でしたが、 flutter build ipa
を使った場合は少し調整が必要です。
以下のように build/ios/ipa
配下に出力されます。
そのため、 Fastfile
の upload_to_testflight
のipa
に次のようにそのパスを指定すると良いです。
参考: https://docs.fastlane.tools/actions/upload_to_testflight/#parameters
ビルド時間も短縮⚡️
重複処理が減ってビルド時間も短縮されてそうに思って、とある大きめのプロジェクトにてM1 MacBook Airで計測してみたら、以下のような結果になりました。
flutter build ios
+ Archive : 154 + 132 = 286秒flutter build ipa
: 217秒
→ つまり、リリースビルドの時間がトータルで24%短縮されました🎉
Androidでは普通に flutter build apk(or appbundle)
だけで良いのにiOSではビルド後に似たようなアーカイブ処理が必要で面倒かつ戸惑い要因になってましたが、 flutter build ipa
コマンドのおかげでそれが解消され、さらにビルド時間も大幅短縮で最高です🐶