#author("2016-08-09T11:19:13+09:00","default:wikiwriter","wikiwriter") #author("2016-08-09T11:42:11+09:00","default:wikiwriter","wikiwriter") [[iOSSDK]] &tag(iOSSDK/プロビジョニング関連); *目次 [#y2430025] #contents *関連ページ [#wa2ef512] *参考情報 [#p5d830cf] -[[iOSアプリのプロビジョニング周りを図にしてみる - Qiita:http://qiita.com/fujisan3/items/d037e3c40a0acc46f618]]…基礎から理解したい場合の情報 *概要 [#i86384f9] -ざっくり説明するとAppleの[[iOS Certificates - Apple Developer:https://developer.apple.com/account/ios/certificate/]]で作成したApp ID、Provisoning Profileと、アプリに埋め込まれたProvisoning Profileが一致していないといけない。 -最近のXcodeはXcode側で自動的に取り扱う機能が実装されている。 *App ID [#zf6a6b62] -アプリケーションごとに割り当てるID。 -App ID Prefix(数字)とApp ID Suffix(net.srcw.xxxみたいなやつ)を組み合わせて一つのIDとなる。 -App ID Prefixは以前は複数作る事が出来ていたが、最近はアカウントごとに一つ割り当てられているTeam IDしか使えない。 -App ID Suffixはワイルドカードを指定することもできるが、普通は明示か?(2016年)。 *Provisioning Profiles [#a7008b4d] -App IDを指定して開発用、配布用などの種別を指定してファイルを作成する。 -しかし最近はXcodeが自動的に生成する模様。 *Tips [#c35d646e] **プロビジョニングプロファイルの情報を確認する [#s02ec4e3] -mobileprovisionファイルのチェック security cms -D -i /path/to/AppStoreProfile.mobileprovision -アプリ組み込みの情報をチェック security cms -D -i /path/to/the.app/embedded.mobileprovision *トラブルシューティング [#h4b4af37] **App installation failed This application's application-identifier entitlement does not match that of the installed applicationが発生 [#tfbc6741] -開発時にアプリをインストールしようとすると発生。 -メッセージ通りに解釈するとapplication-identifierが、インストール済みアプリのapplication-identifierと一致しないということを言っている。 ***解決作1: アプリを削除 [#e02fb8f2] -[[ios - App installation failed due to application-identifier entitlement - Stack Overflow:http://stackoverflow.com/questions/32677133/app-installation-failed-due-to-application-identifier-entitlement]]によると、既存アプリを削除するという解決作が提示されているが、これではバージョンアップ時のマイグレーションテストができない。 ***解決作2: Apple公式 [#d16eb346] -[[Technical Note TN2319: Installation Failure Troubleshooting for iOS:https://developer.apple.com/library/ios/technotes/tn2319/_index.html#//apple_ref/doc/uid/DTS40013778-CH1-ERRORMESSAGES-UPGRADE_S_APPLICATION_IDENTIFIER_DOES_NOT_MATCH_THE_INSTALLED_APP]]によると、App ID prefixを変更したくない場合、正しいprovisioning profileをダウンロードするか、App IDを変更する場合previous-application-identifiersを指定した特殊なプロビジョニングプロファイル(要サポート連絡)を使うしかないらしい。 ***解決作3 [#b77fe8b7] -すごく古いアプリの場合Team IDへの変更の影響で詰んでいるかも。 -[[Bundle Seed ID - ほし日記:http://d.hatena.ne.jp/hoshi_takanori/20120124/p1]] -以下実際に遭遇したこと。 -AppleのサイトでApp IDを確認すると、既存のApp IDのPrefixがTeam IDに変わっていてかつ使用中と判定される(削除しようとするとApp Storeで公開中であると警告される)。 -実際に公開中にアプリに埋め込まれているApp IDのPrefixはTeam IDじゃないもの(Suffix部分は同じ) -この場合Team ID版のプロビジョニングプロファイルを埋め込んでバージョンアップしようとするとエラーになりどうしようもない。 -古いPrefixを使ったApp IDは重複エラーで作れないし(この場合Suffix部分だけで判断している模様)、新しいTeam IDのPrefixのApp IDを使うとバージョンアップエラーになる。