Retina MacBook Proが修理から戻ってきて、MacアプリをRetina対応しようと思ったら”Permission Error”が出て起動できなくなってしまいました。それがようやく解決出来ました。
現象
XcodeのRunボタンを押してアプリでデバッグ実行すると、次のようなメッセージが出ます。
Could not launch “アプリ名”
Permission denied
そして、エラーメッセージのとおりアプリが起動しません。
コンソールログ
Xcodeのエラーメッセージだけでは意味がわからないので、コンソールログを見ます。(アプリケーションフォルダ > ユーティリティ > コンソール)
taskgated: unable to retrieve provisioning profiles
taskgated: killed 〜 because its use of the com.apple.developer.ubiquity-container-identifiers entitlement is not allowed
iCloud対応のアプリなので、Provisioning profile が必須なのですが、そのファイルが見つけられないようです。
ちなみに、次の機能をサポートするアプリはProvisioning profileをシステムにインストールする必要があります。
- iCloud
- Game Center
- Apple Push Notification
対処
修理に出す前はエラーが出ていなかったので、Mac内のProvisioning 設定は問題なかったはずです。それが修理後にエラーが出るようになったので、Provisioningで登録してあるシステム情報が変わってしまったのではないかと思いました。修理でロジックボードが交換になっているのであやしいです。
Provisioning の確認
■Hardware UUID
Appleの開発者用サイトにあるProvisioningの設定ページを開いて”Systems”を確認すると、 Hardware UUIDが変わっているのが分かりました。ロジックボードが変わると、Hardware UUIDが変わるようです。
Provisioning の再設定
Provisioningの設定は、いつも最初に覚えた手順でやっていて、今回もProvisioningポータルサイトで再設定しました。しかし、押せないボタンなどがあり、どうも、かなりの部分がXcodeのOrganizerで自動的にできるようになっているようでした。もしかすると、ポータルサイトではデータの削除だけ行えば良かったのかもしれません。
■ 再設定した内容
- Certificates (Mac Development) : 削除して再度登録
- Systems : 新UUIDを登録
- Provisioning Profiles : Development profileの登録システムを変更
キーチェーンのデータ登録とProvisioning profileのダウンロードとインストールも同時にやっています。
■ Organizerの登録内容を更新
XcodeのOrganizerのDeviceタブにある”Provisioning Profiles”で”Refresh”ボタンを押してポータルサイトの内容と同期をとります。
Statusが一時”unknown”になったりしていたのですが、何度か”Refresh”ボタンを押していると最終的に全て”Valid profile”となりました。
■ アプリ実行確認
OrganizerのStatusが緑マークになったので、Xcodeでアプリをdebug実行してみました。しかし、相変わらず同じエラーが出て起動できません。コンソールログも同じ内容です。
途方に暮れて、Appleに連絡し、Developer Technical Support(DTS)にメールしました。
ずばり正解の回答はもらえませんでしたが、やり取りしている間に自分で気が付きました。
原因
システム環境設定に登録されたプロファイルがダブっているのが原因のようです。
何回もやり直したので、6つもダブっています^^;
最後にインストールしたプロファイルを残して他全部を削除すると、アプリが起動するようになりました。
このダブっているスクリーンショットもDTSに送っていたんですけどね・・・
きっとファイル名の右端が切れているので見過ごしていたのでしょう。
DTSには、結果報告と合わせて、Xcodeのエラーメッセージの改善とシステムプロファイルの重複登録問題が発生しないようリクエストしておきました。そのうち改善されることを願います。