`flutter build ipa` でiOS向けのビルドとアーカイブを同時に実行 🍎

Flutter 1.24.0–6.0以降のバージョンで使えるようになったコマンド

mono 
Flutter 🇯🇵
Dec 11, 2020

--

Photo by an_vision on Unsplash

これまでは `flutter build ios`とアーカイブの2つの手順が必要だった

Flutterで、iOS向けのビルドをしてApp Store Connectなどにアップロード可能なipaファイルを得るにはこれまで以下の2つの手順が必要でした。

  1. flutter build ios
  2. Xcodeアプリを使ってArchive実行(コマンドなら、fastlaneの build_app ( gym ) など)

バージョン 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 を実行

--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 配下に出力されます。

そのため、 Fastfileupload_to_testflightipa に次のようにそのパスを指定すると良いです。

参考: 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 コマンドのおかげでそれが解消され、さらにビルド時間も大幅短縮で最高です🐶

--

--