AppClipsアプリをXcode Cloudでビルド
この記事はMoAR - Museum of AR Advent Calendar 2022の8日目の記事です。
前置き
MoARというAppClipsで簡単にARを体験できるアプリを作った際の制作記録です。
Whateverは普段はUnityのプロジェクトが多いチームではありますが、Whatever(何でも)という名にもあるように、作るジャンル、技術には縛られず、特にCTOであるSaqooshaはプロジェクト毎にリサーチして、そのプロジェクトで一番最適と思われし技術を選びます。あとたまに趣味で選んだりします。とあるプロジェクトではRustで、またとあるプロジェクトではではUnityEngineではできないからと、C#でオレオレUnityEngineみたいな3Dフレームワークを作り始めたりします。
そしてこの度久々にiOS限定アプリを作ることになったので、Swift. Swift UI. AppClipsでARなアプリを作りました。
Xcode Cloud
Xcode Cloudを使ってみました。プロジェクト本開発開始時(2022年7月あたりかなー)時点ではβリリース、今では本公開となり、月に25時間以上は有料です。
iOSアプリを作る際のCIの選択肢として、Circle CI、Fastlane、GitHub Actionsなど様々なものがありますが、今回はXcode Cloudを選んでみました。理由としては、
- 今回はiOS限定なので、Apple Platformにベッタリ依存でも大丈夫
- Xcode Cloud新しくでたので試してみたい
- そんなに大きなプロジェクトじゃないので、恐らく無料範囲に収まる
といった理由です。大きなプロジェクトのときはこなれた技術を選定しますが、これくらいの規模のアプリのときにさり気なく新技術を試しておくのが良いでしょう。
設定は非常に簡単で、Apple ConnectのXcode CloudタブからGitHub等のリポジトリを紐付けるだけでした。詳しい説明はAppleドキュメントを確認してください。
Xcode Cloud良かったところ
さすが、App Store Connectに紐付いているアプリだけあって、他のCIに必要な、.p12ファイルを書き出すなどのややこしい設定は一切なく、自然にTestFlightのテスターへの配信、更にはAppStoreへのアップロードもApp Store ConnectのUIだけで完結したのに驚きました。
超楽です。
Xcode Cloud辛かったところ
情報少ないし、developer.apple.com に情報まとまってるけど、返信少なすぎでは?
更にこれはAppClipsをXcode Cloudでビルドする場合だけの問題ですが、Xcode CloudからAppStoreへアップロードするたびに以下のようなエラーのemailが届きました。
> ITMS-90876: Missing entitlement - This app contains an app clip. The entitlement 'com.apple.developer.associated-appclip-app-identifiers' should be present and include the value of the app clip's application identifier.
どうやら、ローカルのXcodeでビルドする際は、Archibeする際に自動で必要なentilementを紐付けしているようですが、Xcode Cloudビルド時にはそれが行われないようです。
フォーラムに載っていた方法を試しても解決せず、そもそもAppClipsアプリ且つXcode Cloudを使っているアプリに母数が少ないので解決せず。警告が出たままストアに申請しても、審査は通り、AppClipsは使えたので、一旦目をつぶりました。
というわけで
でかい規模の案件で採用するかと言われると、他にも問題が出そうなので、ちょっと待ちかな…。となる気がしました。私が試したのはβ版でしたので、このような問題は近いうちに直っているかもしれません。
Discussion