🛫 Flutterで開発中のアプリをビルドしたら自動でTestFlightに飛ばすようにしてみた

2021-01-16 #Development

🤖 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:

comments powered by Disqus
Profile
😛

石原 悠 / Yu Ishihara

デザインとプログラミングとヨーグルト作りが好きです。