iOS App Store用とAd Hoc用のプロビジョニングプロファイル

常識なのか分かりませんが、iOSアプリ開発でのプロビジョニングプロファイルの管理と使い分けに関するメモです。

プロビジョニングプロファイルには大きく分けて

  • Development
  • Distribution

の2種類があります。(2013/4/24現在のiOS Dev Center仕様)
DistributionにはさらにApp Store用とAd Hoc用があります。

自分の理解では

  • Developmentは、MacにiPhoneを接続して直接インストールする際の署名に使用するプロファイル
  • DistributionのうちApp Store用のものは、App Storeに提出するバイナリ用のプロファイル
  • DistributionのうちAd Hoc用のものは、Ad Hoc配信する場合のバイナリ用のプロファイル

という程度のものでしたので、ビルド設定までをバージョン管理しておくとすると

  • リポジトリのmasterブランチではApp Store用のプロファイルで署名する設定で常に管理
  • 開発・デバッグ・テスト時は一時的にDevelopment/Ad Hocに切り替えてビルド。App Store用でReleaseビルドすると実機に直接インストールはできないし、Ad Hocでインストールしようとすると失敗するし(端末のID情報がないので)。。。
  • 一時的に切り替えとはいえ、テストしたときの状態を完全に再現できる状態にしておきたいので、(Developmentはともかく)Ad Hocに切り替えたものを仕方なく別のブランチを作って残しておく
  • 結局App Storeに提出するバイナリファイルはテストの完了後に作るしかなく、App Store申請前にテストしておくのは無理?App Storeにリリースされて初めて動かせるなんて恐すぎる…

と思っていました。
が、App Store用のプロビジョニングプロファイルを指定してビルド/アーカイブし、アーカイブの一覧からAd Hoc用にDistributeするときに Ad Hoc用のプロビジョニングプロファイルを指定する(端末のID情報が入っていればDevelopmentでも良い?)、ということができるのですね・・。
なので、少なくとも配布に関する情報の差異があるとはいえ、アプリの本体部分はそのままApp Storeに提出できる状態の、限りなく本番に近いものを事前テストできる訳です。
アプリの仕様によっては接続先のサービスが本番用/テスト用などの使い分けがあり、必ずしもバージョン管理下のもの全てを 本番と同じにしてテストする訳にはいかないと思いますが、最終確認としてそうしたテストができるのが分かったのは 自分の中では大きな発見なのでした。

Androidの場合は、署名さえ同じであれば良いので事前に動かしたAPKファイルをそのままストアに登録できるので、AppleのApp Storeの仕組みが非常に厄介に思えてしまいました。
Androidアプリを開発してきてiOSに取り組むと、言語の違いよりもこうした仕組みの差の方が 馴染むのに時間がかかるかもしれません。。。

© 2010 ksoichiro