XcodeからAdHocビルドしてアーカイブした際にiPhone実機にアプリをインストール出来ないことがあった(実機上で<アプリ名>はインストール出来ません、というアラートが出てiTunesからのインストールが出来ない)。そういう時は大抵プロビジョニングプロファイルが間違っているとは思うけど、実際にアーカイブされたipaファイルのプロビジョニングを確認する方法をメモしておく。
まずipaファイルをunzipする。HogeApp_adhocというファイル名の場合は
unzip HogeApp_adhoc.ipa
ipaファイルはzip圧縮されたファイルでDRMにより保護された書庫ファイル、unzipコマンドでなくてもファイル拡張子を.zipなどにすればFinderから展開できるらしい。しらんけど。
unzipするとPayloadディレクトリの下にappファイルがある。
Payload/HogeApp_adhoc.app
appファイルはアプリケーションパッケージなので、その下には画像などのリソースがあり、その中にあるembedded.mobileprovisionを開くとプロビジョニングが指定されている。例えばデバッグ用のプロビジョニングHogeApp_Debugを指定してビルドしていれば以下のようにXMLにより記述されている
<string>HogeApp_Debug</string>
<key>ProvisionedDevices</key>
非開発者端末にAdHocビルドしてアプリをインストールしたかったので、プロビジョニングはDevelopmentのHogeApp_DebugではなくDistributionのものを選ぶべきだった事に気づいてビルドしなおしたら解決。
Apple公式のリファレンス「iOS Code Signing Troubleshooting」が一番詳しく書いてた
http://developer.apple.com/library/ios/#technotes/tn2250/_index.html
上記これがどういう時に役立つかというと、自分以外の誰かにAdHocビルドをお願いしてipaファイルが送られてきた場合、それが正しいプロビジョニングプロファイル(具体的には証明書、AppID、デバイスの組み合わせ)であるかどうかを確認するのに役立つと思う。いや、そこまで出来るならソースコードもらってXcodeでビルドし直そうよと思わないでもない。しらんけど。
参考URL
“The executable was signed with invalid entitlements.” の対処方法
http://blog.fenrir-inc.com/jp/2012/02/the-executable-was-signed-with-invalid-entitlements.html
φ(.. )メモシテオコウ iOS、Androidバイナリに対してコード署名
http://kernhack.hatenablog.com/entry/2013/05/21/233009
iOS アプリのprovisioning profile差し替え方法
http://labs.septeni.co.jp/?p=815