こんにちは。みなさんtvOSアプリ作ってますか?
tvOSには現状iOSのOTAのような便利な配布方法がないため、β配布する場合は、どんな人でもXcodeからインストールしなければなりません。
手順にまとめる機会があったため、せっかくなので記事にしました。
配布方法としては、以下の2つがあります。
- AdHoc署名のipaを配布
- Enterprise署名の配布(Xcode8.3.2くらいから利用可能になりました。)
AdHoc配布の場合、デバイス登録が必要になります。まずはこの部分を解説します。
Enterprise配布を利用する方は、そのまま ArchiveしてExportする に進んでください。Xcode8のAutomatic Signingを利用すれば、困ることはないと思います。
インストールしたいAppleTVのUDIDをProvisioning Profileに登録する
何はともあれ、テスターさんが使用するAppleTVのUDIDをプロビジョニングに登録しましょう。
他のアプリと使い回して良いのであれば、Xcodeが自動生成したプロビジョニングに追加していけば良いと思います。
UDIDはiTuneもしくはXcode経由で確認することができます。
実機Debugビルドで自動でUDIDを追加する
Xcode7からは、実機にデバッグインストールするときに自動でUDIDを追加してプロビジョニングを更新してくれます。Member Centerにログインしなくて良いので、この機能を使うと楽だと思います。
初回実機をdestinationにしてビルドすると怒られます。(スクショは初回じゃないので微妙に違うかもしれません)
Fix Issueを押して解決できれば、プロビジョニングにUDIDが追加されているはずです。
これだけでReleaseビルドしたアプリもインストールできているので、tvOS Team Provisioning Profile: *
と XC Ad Hoc: *
の少なくとも2つが自動生成されているようです。
Member CenterからUDIDを追加する
ここはいつも通りかと思いますので割愛します。
iTunesでUDIDを確認する
USBでAppleTVをつなぐと、iTunesに表示されると思います。
UDIDの表示がないという方は、Serial Numberとか書かれたあたりをクリックすると表示が切り替わります。この辺りはiOSと一緒ですね。UDID右クリックでcopyできますのでくれぐれも手入力しようとしないように。。
XcodeでUDIDを確認する
ArchiveしてExportする
いつも通りArchiveしてAdHocでipaをExportします。
このipaをGoogle Driveとか適当な場所において、配布完了となります。
Xcodeからインストールする
ipaをダウンロードしたら、Xcodeを開きます。
Window=>Devices の画面の「+」ボタンを押してください。
ファイルインスペクタが出てきますので、ipaを選択すればインストールできます。
Enterprise配布の場合は、設定の「一般」=>「デバイス管理」(一番下)から「開発元を信頼」する必要があります。
おまけ:ビルドしたアプリのプロビジョニングにデバイスが含まれていることを確認する
Payloadの中のembedded.mobileprovision
でUDIDを確認できます。
$ unzip Sample.ipa
$ editor Payload/Sample.app/embedded.mobileprovision
.
.
.
<key>ProvisionedDevices</key>
<array>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
</array>
余談になりますがunzipする手順が面倒だと思うので、拙作の以下のツールを使うと便利です。
https://github.com/toshi0383/ipanema
$ brew tap toshi0383/ipanema && brew install ipanema
$ ipanema -E Sample.ipa
.
.
.
<key>ProvisionedDevices</key>
<array>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
<string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
</array>
以上になります。