[iOS] ProvisionQLによるipaやプロビジョニングプロファイルの内容表示

2016.04.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

ProvisionQLを使用すると、ipaやプロビジョニングプロファイルの内容を簡単に確認できます。
https://github.com/ealeksandrov/ProvisionQL

サポートしているファイルは次の通りです。

  • ipa - iOS アプリケーションパッケージ
  • app - iOS アプリケーション
  • mobileprovision - iOS用のプロビジョニングプロファイル
  • provisionprofile - OS用のプロビジョニングプロファイル

ProvisionQLをインストールしておくと、ファイルを選択してスペースキーを押すと、こんな感じになります。

001

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

プロビジョニングプロファイル固有の識別子です。(作成時に自動的に生成されています)

008

(2) Profile Type

プロビジョニング作成時に選択したタイプです。

  • iOS Development // ① 開発用
  • iOS Distribution (App Store) // ② App Store配布用
  • iOS Distribution (Ad Hoc) // ③ Ad hoc配布用

002

(3) Team

このプロビジョニングプロファイルを作成したAppIDの名前とPrefixです。

(4) Creation date / Expiretion Date

作成日と期限(日数)です。

003

(5) DEVELOPER CERTIFICATES

証明書の名前と有効期限です。

004

キーチェンアクセスにこの証明書及び秘密鍵が無いと、このプロビジョニングプロファイルを使用できません。

005

(6) DEVICE

App Store用以外の場合、プロファイル作成時に選択した、利用可能なデバイス(UDID)の一覧です。

006

App Store用の場合、デバイスを選択することができませんが、次のように表示されます。

007

(7) ENTITLEMENTS

AppIDで設定した各種サービスの情報です。

011

例えば、PUSH通知(Push Notifications)が有効であれば、aps-environmentの行が追加されています。

009

なお、この情報(aps-environment)は、例えば、AppIDのPUSH通知用の証明書登録がされていなくても関係なく追加されているので、有効に機能しているかどうかの判定には利用できません。

010

4 アプリ

ipaファイルを開いた場合、先のプロビジョニングプロファイルの情報に加えて、アプリの情報として、名前、バージョン、ビルド番号、バンドルID、対象デバイスが確認できます。

012

すなわち、ipaを開くと、アプリのBundole ID・プロビジョニングプロファイル・証明書などの情報が、全部見れることになります。

013

5 応用

プロビジョニングプロファイルを作り直したり、証明書を作り直したりして、端末上のものと一致しないままアプリを作成してしまった場合、最終的に配布でエラーとなります。

最新のXcodeでは、Xcode - Preferences - Account で、証明書もプロビジョニングプロファイルも簡単にデベロッパーセンターからボタンひとつでダウンロードできますが、以下は、それをうっかり忘れていた場合の話です。

Arciveを作成して、ipaをエクスポートします。

016

出来上がった、ipaを開いてみると次のようになっていました。

017

そして、デベロッパーセンターからダウンロードしたプロビジョニングプロファイルと比べてみると・・・・

015

すでにUUIDが違うので、別物であることは明白です。証明書の方だけはあっているようです。

Xcode - Preferences - Account で最新のものをダウンロードして、再作成すると、UUIDが一致することを確認できました。

6 最後に

iOS初心者の私には、本当に辛いプロビジョニングプロファイルです。いろいろな資料を読んでも、「プロビジョニングプロファイルは、バンドルID、証明書、利用端末情報が入っている」みたいな概念的な説明が多く、なかなか理解が進まなかったのですが、このビューで見ながら、一つ一つ確認していけば、ちゃんと理解できるようになるかも知れません。

7 参考資料


ProvisionQL
https://developer.apple.com/legacy/library/technotes/tn2250/_index.html
アーカイブ済みバイナリのプロビジョニングを確認する