iOSアプリのProvisioning Profile
iosアプリを実機にデプロイするために必要なもの。 App ID (prefix + Bundle ID)やインストール可能なDevice ID、 コード署名に用いた Apple発行の証明書などを含む。これらが一致しないとインストールできない。
次のTypeのProfileが存在する。
- development profile: 開発用のprofile。TeamのDeviceで動かす。
- ad hoc profile: テスト用のprofile。UDIDを登録したDeviceに配布できる。 AccountにDevice family (iPhone, iPad, etc.)ごとに100台まで登録可能。
- App Store profile: App Storeに上げるためのprofile。
$ ls ~/Library/MobileDevice/Provisioning\ Profiles
****.mobileprovision
...
$ security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/****.mobileprovision
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AppIDName</key>
<string>XC net sambaiz test-app</string>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>****</string>
</array>
<key>CreationDate</key>
<date>2020-03-18T11:05:13Z</date>
<key>Platform</key>
<array>
<string>iOS</string>
</array>
<key>IsXcodeManaged</key>
<true/>
<key>DeveloperCertificates</key>
<array>
<data>****</data>
<data>****</data>
</array>
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>****.net.sambaiz.test-app</string>
<key>keychain-access-groups</key>
<array>
<string>****.*</string>
</array>
<key>get-task-allow</key>
<true/>
<key>com.apple.developer.team-identifier</key>
<string>****</string>
</dict>
<key>ExpirationDate</key>
<date>2020-03-25T11:05:13Z</date>
<key>Name</key>
<string>iOS Team Provisioning Profile: net.sambaiz.test-app</string>
<key>ProvisionedDevices</key>
<array>
<string>****</string>
</array>
<key>LocalProvision</key>
<true/>
<key>TeamIdentifier</key>
<array>
<string>****</string>
</array>
<key>TeamName</key>
<string>Taiki Sakamoto</string>
<key>TimeToLive</key>
<integer>7</integer>
<key>UUID</key>
<string>*****-****</string>
<key>Version</key>
<integer>1</integer>
</dict>
automatic manage signing を有効にすると、Xcodeが自動で証明書を要求しダウンロードしてきて署名しProvisioning Profileを生成する。 証明書はkeychainに保存されていて、CIで署名するのに必要ならそこから秘密鍵(.p12)を出力できる。
証明書やProvisioning Profileは developer.apple.com/account からマニュアルで生成することもできる。
$ security find-identity -v -p codesigning
1) ***************************** "Apple Development: ****@****.com (******)"
...