設定:
Mac OS X 10.8 + Xcode 4.4
私の簡単な解決策:
- アプリIDのプッシュ通知を設定した後、アドホックプロビジョニングプロファイルを再発行し、Xcodeにインポートします。
- .xcodeprojフォルダーを調べて(右クリック->パッケージの内容を表示)、
xcuserdata
フォルダーを削除します。
- それでおしまい ;)
その問題に関するいくつかのヒント:
アプリのプッシュ通知をアクティブにした後、突然アドホックファイルを作成できなくなりました。次のようなアプリをインストールしようとしたときに、iPhoneのコンソールログでエラーが発生しました。
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr 1 20:56:11 unknown com.apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client
アプリがApplePushNotifications用に正しく署名されているかどうかを確認するために使用することを推奨するテクニカルノートがいくつかあります。codesign -d --entitlements - <YourAppName>.app
codesignコマンドの出力にaps-environmentが本番環境または開発環境に設定されていない場合は、何か怪しいものがあります。
これまでのところ、アドホックプロビジョニングプロファイルで署名されたアプリは、常にフォルダーembedded.mobileprovision
内<YourAppName>.app
に次のような特定の部分が含まれています。
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.*</string>
</array>
</dict>
codesignを使用した後、実際のバイナリにはXMLも含まれていることに気付きました。これは、私のファイル<YourAppName>.app
とは非常に異なることを示しています。embedded.mobileprovision
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.com.myappname.tester</string>
</array>
</dict>
</plist>
これが私たち全員が経験しているエラーメッセージの原因だと思います。(このエラーには、いくつかの異なるルートや、stackoverflowに関する他の投稿が示唆されている可能性があります)
The executable was signed with invalid entitlements.
The entitlements specified in your application's Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).
私の推測では、Xcodeにバグがあり、plistの設定がスキームで更新されないため、最終的にアプリが間違ったプロビジョニングプロファイルで署名されるようになります。したがって、xcuserdataフォルダーを削除すると、すべてのスキームが削除されます。したがって、Xcodeは次回、適切な設定でそれらを再作成し、再び満足します。