🛫 Flutterで開発中のアプリをビルドしたら自動でTestFlightに飛ばすようにしてみた
この記事は最終更新日から4年以上経過しています。
🤖 Flutter で開発中のアプリをビルドしたら自動で apk を Slack に投稿するようにしてみた に続いて iOS の方も同じ事をしたかったのですが、iOS は .ipa のファイルを Slack に投げたところでそのまま実機にインストールする事はできないので TestFlight を使用する事にしました。
Android版と同様に make コマンドを使用しています。
iOS版はFlutterのビルドの後にさらに xcodebuild
でアーカイブを作って、そこからさらに .ipa を作って、さらに altool
を使用してApp Storeにアップロードする、という工程があってちょっと面倒でした。
Makefile:
コピーしました
#!make
-include .env
FILE_PATH_IPA=./build/appname.ipa
build-ios:
flutter build ios;\
xcodebuild \
-workspace ./ios/Runner.xcworkspace \
-scheme Runner \
-sdk iphoneos \
-configuration Release \
archive \
-archivePath ./build/Runner.xcarchive;\
xcodebuild \
-exportArchive \
-archivePath ./build/Runner.xcarchive \
-exportOptionsPlist ./build/ExportOptions.plist \
-exportPath ./build;\
xcrun altool --validate-app -f ${FILE_PATH_IPA} -t ios -u ${ALTOOL_ID} -p ${ALTOOL_PW};\
xcrun altool --upload-app -f ${FILE_PATH_IPA} -t ios -u ${ALTOOL_ID} -p ${ALTOOL_PW}
先に altool コマンドで使用する App 用パスワードを https://appleid.apple.com/ から生成しておく必要があります。
.env:
コピーしました
ALTOOL_ID=<apple_id_mail>
ALTOOL_PW=<app_password>
APPLE_TEAM_ID=<team_id>
あと、コマンドライン経由でビルド〜アップロードしても、最後にブラウザで「輸出コンプライアンスがありません」のチェックだけは入れないと配信まで行えないのですが、
Info.plist
に以下を追加しておく事で上記手続きが回避できるので、コマンドラインだけで TestFlight 配信を完結させる事ができるようになりました。
Info.plist:
コピーしました
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
これで iOS の方も $ make build-ios
するだけで実機の検証ができるようになりました。
参考にさせていただいたURL:
よく見られている記事