XcodeでiPhoneやiPadの実機へアプリをインストール・実行しようとしたときに、A valid provisioning profile was not found と表示されることがあります。このエラーは、アプリのBundle Identifier、開発チーム、証明書、Provisioning Profile、登録済みデバイスなどの組み合わせが一致せず、Xcodeが有効なプロビジョニングプロファイルを使用できない場合に発生します。
- 「A valid provisioning profile was not found」とは
- 主な原因
- 1. Signing & Capabilitiesを確認する
- 2. Bundle Identifierを確認する
- 3. Automatically manage signingを使う
- 4. 実機がDeveloper Accountに登録されているか確認する
- 5. Provisioning Profileを更新する
- 6. 証明書を確認する
- 7. 古いProvisioning Profileを削除して再取得する
- 8. Clean Build FolderとDerivedData削除を試す
- 9. 手動署名の場合はBuild Settingsも確認する
- まとめ
「A valid provisioning profile was not found」とは
Provisioning Profileは、どのApp IDを、どの証明書で、どの端末や配布方式に対して署名できるかを定義する情報です。Xcodeが現在のビルド設定に合うプロファイルを見つけられないと、実機へのインストールやArchive時にエラーになります。
表示例
A valid provisioning profile was not found
主な原因
- Signing & Capabilitiesで正しいTeamが選択されていない
- Bundle IdentifierとApp IDが一致していない
- Automatically manage signingが無効で手動設定が不完全
- Provisioning Profileが期限切れ、削除済み、または未作成
- 実機のUDIDが開発用プロファイルに登録されていない
- Signing CertificateとProvisioning Profileの組み合わせが一致していない
- Capability追加後にプロファイルが更新されていない
- 古いプロファイルやキャッシュが残っている
1. Signing & Capabilitiesを確認する
Target → Signing & Capabilitiesを開き、TeamとBundle Identifierを確認します。通常はAutomatically manage signingを有効にすると、Xcodeが必要なプロファイルを自動管理します。
複数のApple Developer Teamに所属している場合、誤ったTeamを選ぶと有効なプロファイルが見つからないことがあります。
2. Bundle Identifierを確認する
Bundle IdentifierはApple Developer側のApp IDと一致している必要があります。スペル違い、開発用Suffixの付け忘れ、別ターゲットのIdentifierを使っていないか確認します。
com.example.myapp
3. Automatically manage signingを使う
手動署名が不要であれば、Automatically manage signingを有効にしてXcodeに管理させるのが最も簡単です。設定後にTeamを選び直し、エラー表示が消えるか確認します。
4. 実機がDeveloper Accountに登録されているか確認する
開発用Provisioning Profileを使う場合、対象のiPhoneやiPadがDeveloper Accountに登録されている必要があります。XcodeのWindow → Devices and Simulatorsで端末が認識されているか確認し、必要に応じてデバイス登録を行います。
5. Provisioning Profileを更新する
手動署名を使用している場合は、Apple Developer側で正しいApp ID、証明書、デバイスを含むProvisioning Profileを作成または再生成し、Xcodeで選択します。
Push Notifications、Associated Domains、iCloudなどのCapabilityを追加した直後は、古いプロファイルのままだと新しいEntitlementを含まないため、再生成が必要になることがあります。
6. 証明書を確認する
Provisioning Profileが参照している開発用・配布用証明書がMacのキーチェーンに存在し、有効期限内であるか確認します。証明書を更新した後は、古いProfileとの不一致が起きることがあります。
7. 古いProvisioning Profileを削除して再取得する
ローカルに古いProfileが残っている場合は、Xcodeを終了して不要なProfileを整理し、再度Xcodeから取得します。保存場所を確認する場合はFinderで次のディレクトリを開けます。
~/Library/MobileDevice/Provisioning Profiles/
ただし、必要なProfileまで削除しないよう注意してください。
8. Clean Build FolderとDerivedData削除を試す
署名設定を直してもエラーが残る場合は、Product → Clean Build Folderを実行します。必要ならDerivedDataを削除します。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
9. 手動署名の場合はBuild Settingsも確認する
CODE_SIGN_STYLE、DEVELOPMENT_TEAM、PROVISIONING_PROFILE_SPECIFIERなどが意図した設定になっているか確認します。DebugとReleaseで設定が異なる場合もあるため、対象Configurationを必ず確認してください。
ネット上の古い記事を参考にPROVISIONING_PROFILEへUUIDを直接固定すると、環境変更時にエラーの原因になりやすくなります。現在のXcodeでは可能な限り自動署名を利用する方が管理しやすいです。
まとめ
「A valid provisioning profile was not found」は、現在のアプリ設定に一致する有効なProvisioning ProfileをXcodeが見つけられないときに発生します。まずSigning & CapabilitiesでTeam、Bundle Identifier、Automatically manage signingを確認し、次にDeveloper Account側のApp ID、証明書、デバイス登録、Provisioning Profileを確認してください。
Capabilityや証明書を変更した直後はProfileの再生成が必要になることがあります。設定修正後も改善しない場合は、Clean Build Folder、DerivedData削除、古いProfileの整理を行ってから再ビルドします。
