[iOS] ProvisionQLによるipaやプロビジョニングプロファイルの内容表示
1 はじめに
ProvisionQLを使用すると、ipaやプロビジョニングプロファイルの内容を簡単に確認できます。
https://github.com/ealeksandrov/ProvisionQL
サポートしているファイルは次の通りです。
- ipa - iOS アプリケーションパッケージ
- app - iOS アプリケーション
- mobileprovision - iOS用のプロビジョニングプロファイル
- provisionprofile - OS用のプロビジョニングプロファイル
ProvisionQLをインストールしておくと、ファイルを選択してスペースキーを押すと、こんな感じになります。
2 インストール
ProvisionQLは、Quick Lookのプラグインとしてインストールされます。
既にHomebrew caskが導入済みであれば、次のコマンドを入力するだけです。
$brew cask install provisionql
インストールが完了すると、~/Library/QuickLookの下に、(シンボリックリンクですが)配置されているのを確認することができます。
$ pwd /Users/sin/Library/QuickLook $ ls -la ProvisionQL* lrwxr-xr-x 1 sin staff 69 4 7 08:55 ProvisionQL.qlgenerator -> /opt/homebrew-cask/Caskroom/provisionql/1.2.0/ProvisionQL.qlgenerator
3 プロビジョニングプロファイルの情報
プロビジョニングプロファイルを開くと、次のような内容を確認することができます。
(1) Profile UUID
プロビジョニングプロファイル固有の識別子です。(作成時に自動的に生成されています)
(2) Profile Type
プロビジョニング作成時に選択したタイプです。
- iOS Development // ① 開発用
- iOS Distribution (App Store) // ② App Store配布用
- iOS Distribution (Ad Hoc) // ③ Ad hoc配布用
(3) Team
このプロビジョニングプロファイルを作成したAppIDの名前とPrefixです。
(4) Creation date / Expiretion Date
作成日と期限(日数)です。
(5) DEVELOPER CERTIFICATES
証明書の名前と有効期限です。
キーチェンアクセスにこの証明書及び秘密鍵が無いと、このプロビジョニングプロファイルを使用できません。
(6) DEVICE
App Store用以外の場合、プロファイル作成時に選択した、利用可能なデバイス(UDID)の一覧です。
App Store用の場合、デバイスを選択することができませんが、次のように表示されます。
(7) ENTITLEMENTS
AppIDで設定した各種サービスの情報です。
例えば、PUSH通知(Push Notifications)が有効であれば、aps-environmentの行が追加されています。
なお、この情報(aps-environment)は、例えば、AppIDのPUSH通知用の証明書登録がされていなくても関係なく追加されているので、有効に機能しているかどうかの判定には利用できません。
4 アプリ
ipaファイルを開いた場合、先のプロビジョニングプロファイルの情報に加えて、アプリの情報として、名前、バージョン、ビルド番号、バンドルID、対象デバイスが確認できます。
すなわち、ipaを開くと、アプリのBundole ID・プロビジョニングプロファイル・証明書などの情報が、全部見れることになります。
5 応用
プロビジョニングプロファイルを作り直したり、証明書を作り直したりして、端末上のものと一致しないままアプリを作成してしまった場合、最終的に配布でエラーとなります。
最新のXcodeでは、Xcode - Preferences - Account で、証明書もプロビジョニングプロファイルも簡単にデベロッパーセンターからボタンひとつでダウンロードできますが、以下は、それをうっかり忘れていた場合の話です。
Arciveを作成して、ipaをエクスポートします。
出来上がった、ipaを開いてみると次のようになっていました。
そして、デベロッパーセンターからダウンロードしたプロビジョニングプロファイルと比べてみると・・・・
すでにUUIDが違うので、別物であることは明白です。証明書の方だけはあっているようです。
Xcode - Preferences - Account で最新のものをダウンロードして、再作成すると、UUIDが一致することを確認できました。
6 最後に
iOS初心者の私には、本当に辛いプロビジョニングプロファイルです。いろいろな資料を読んでも、「プロビジョニングプロファイルは、バンドルID、証明書、利用端末情報が入っている」みたいな概念的な説明が多く、なかなか理解が進まなかったのですが、このビューで見ながら、一つ一つ確認していけば、ちゃんと理解できるようになるかも知れません。
7 参考資料
ProvisionQL
https://developer.apple.com/legacy/library/technotes/tn2250/_index.html
アーカイブ済みバイナリのプロビジョニングを確認する