XcodeからiPhoneやiPadへアプリをインストール・実行しようとした際に、次のようなエラーが表示されることがあります。
A valid provisioning profile for this executable was not found.
このエラーは、実行しようとしているアプリに対して、有効なProvisioning ProfileをXcodeまたはデバイス側で利用できないときに発生します。
原因は単純にProvisioning Profileが存在しない場合だけではありません。Bundle Identifier、Development Team、Signing Certificate、登録デバイス、Entitlements、Profileの有効期限などのどれかが一致していない場合にも発生します。
まずSigning & Capabilitiesを確認し、特別な理由がなければAutomatic Signingを有効にするのが最も簡単な対処です。
- 「A valid provisioning profile for this executable was not found」とは
- 主な原因
- 1. Provisioning Profileが存在しない
- 2. Bundle IdentifierがProvisioning Profileと一致していない
- 3. 実行するiPhoneやiPadがProfileに含まれていない
- 4. Provisioning Profileの有効期限が切れている
- 5. Development Certificateが一致していない
- 6. 証明書の秘密鍵がMacにない
- 7. Development Teamが違う
- 8. EntitlementsとProvisioning Profileが一致していない
- 9. 古いProvisioning Profileがキャッシュされている
- 10. Extension側のProvisioning Profileが不正
- 代表的な発生状況
- まず確認する手順
- 解決方法1:Automatically manage signingを有効にする
- 解決方法2:正しいTeamを選択する
- 解決方法3:Bundle Identifierを確認する
- 解決方法4:デバイスを登録する
- 解決方法5:手動でDevelopment Provisioning Profileを作成する
- 解決方法6:Signing Certificateを確認する
- 解決方法7:Provisioning Profileを再生成する
- 解決方法8:古いProvisioning Profileを削除する
- 解決方法9:Provisioning Profileの内容を確認する
- 解決方法10:デバイスのUDIDを確認する
- 解決方法11:Capabilitiesを確認する
- 解決方法12:Extensionも確認する
- 解決方法13:DebugとReleaseを比較する
- 解決方法14:Clean Build Folderを実行する
- 新しいMacへ移行した場合
- GitHubからCloneした場合
- CI環境で発生する場合
- App Store Connect用Archiveで発生する場合
- Ad Hoc配布の場合
- やってはいけない対処
- 最短で確認するチェックリスト
- まとめ
「A valid provisioning profile for this executable was not found」とは
iPhoneやiPadなどの実機で開発中のアプリを動かすには、そのアプリとデバイスの組み合わせに適合するProvisioning Profileが必要です。
Development Provisioning Profileには主に次の情報が関連します。
- App ID
- Bundle Identifier
- Development Team
- Development Certificate
- 登録済みデバイス
- Entitlements
- 有効期限
これらの条件がビルド対象と一致しないと、Xcodeはアプリを正しく署名・インストールできません。
A valid provisioning profile for this executable was not found.
Appleの現行手順でも、手動でDevelopment Provisioning Profileを作成する場合はApp ID、Development Certificate、登録済みデバイスを選択します。Automatic Signingを利用する場合はXcodeがDevelopment Provisioning Profileを管理します。 :contentReference[oaicite:1]{index=1}
主な原因
1. Provisioning Profileが存在しない
対象のBundle Identifierに対応するDevelopment Provisioning Profileが作成されていない場合です。
Manual Signingを利用しているプロジェクトで特に起こりやすくなります。
2. Bundle IdentifierがProvisioning Profileと一致していない
例えばXcode側が次のBundle Identifierだとします。
com.example.myapp
Provisioning Profileが別のApp ID用に作成されている場合、そのProfileは使用できません。
3. 実行するiPhoneやiPadがProfileに含まれていない
Development Provisioning Profileでは、実行対象のデバイスが登録されている必要があります。
新しいiPhoneへ機種変更した直後などに発生しやすい原因です。
Appleも、Development Provisioning Profileの作成には登録済みデバイスが必要と説明しています。Automatic Signingの場合は、権限があればXcodeが接続デバイスを登録します。 :contentReference[oaicite:2]{index=2}
4. Provisioning Profileの有効期限が切れている
期限切れProfileは有効な署名Profileとして利用できません。
Appleは、Provisioning Profileが期限切れの場合はProfileを再生成するよう案内しています。 :contentReference[oaicite:3]{index=3}
5. Development Certificateが一致していない
Provisioning Profileに含まれている証明書と、現在Mac上で使用しているSigning Certificateが異なる場合があります。
証明書を作り直した直後によく発生します。
6. 証明書の秘密鍵がMacにない
証明書がキーチェーンに表示されていても、対応する秘密鍵がないとコード署名には使用できません。
別のMacから.cerファイルだけをコピーした場合などに発生します。
7. Development Teamが違う
個人Teamと会社Teamなど複数のTeamへ参加している場合、Profileを作成したTeamとXcodeで選択しているTeamが違うと使用できません。
8. EntitlementsとProvisioning Profileが一致していない
Push Notifications、App Groups、Associated Domains、iCloudなどを追加した後、Profileが更新されていない場合があります。
Xcode 15以降では、Automatic Signingと対応するApp ID Capabilityを利用することで、Xcodeが必要なEntitlementsを含む新しいProvisioning Profileを作成できます。 :contentReference[oaicite:4]{index=4}
9. 古いProvisioning Profileがキャッシュされている
正しいProfileを作成しても、Xcodeが古いProfileを使用し続ける場合があります。
10. Extension側のProvisioning Profileが不正
Widget、Share Extension、Notification Service Extensionなどは、アプリ本体とは別Targetとして署名されます。
本体が正しくてもExtension側に有効なProfileがないと、インストールやArchiveが失敗することがあります。
代表的な発生状況
- 新しいiPhoneで初めて実機テストした
- GitHubからCloneしたプロジェクトを実行した
- Bundle Identifierを変更した
- Apple Development証明書を作り直した
- 別のMacへプロジェクトを移動した
- Automatic SigningからManual Signingへ変更した
- Provisioning Profileの期限が切れた
- Push NotificationsやApp Groupsを追加した
- WidgetやExtensionを追加した
- Debugは成功するがArchiveやインストールで失敗する
まず確認する手順
1. Signing & Capabilitiesを確認する
Xcodeで次の順に開きます。
Project → TARGETS → 対象アプリ → Signing & Capabilities
次の項目を確認します。
- Automatically manage signing
- Team
- Bundle Identifier
- Signing Certificate
- Provisioning Profile
2. 実効設定を確認する
Terminalから署名関連のBuild Settingsを確認できます。
xcodebuild -showBuildSettings | grep -E "PRODUCT_BUNDLE_IDENTIFIER|DEVELOPMENT_TEAM|CODE_SIGN|PROVISIONING_PROFILE"
特に次の値を確認してください。
PRODUCT_BUNDLE_IDENTIFIER DEVELOPMENT_TEAM CODE_SIGN_STYLE CODE_SIGN_IDENTITY PROVISIONING_PROFILE PROVISIONING_PROFILE_SPECIFIER
解決方法1:Automatically manage signingを有効にする
Manual Signingが必要でなければ、最初にAutomatic Signingを試します。
- 対象Targetを選択します。
- Signing & Capabilitiesを開きます。
- Automatically manage signingを有効にします。
- 正しいTeamを選択します。
- 実機を接続します。
- 再度ビルドします。
Appleの現行ドキュメントでも、Automatic Signingを利用する場合、XcodeがDevelopment Provisioning Profileを管理します。 :contentReference[oaicite:5]{index=5}
ポイント:通常の個人開発や実機テストでは、特別な理由がなければAutomatic Signingの方がトラブルを減らしやすくなります。
解決方法2:正しいTeamを選択する
Signing & CapabilitiesのTeamが、Provisioning Profileを作成したDeveloper Teamと一致しているか確認します。
Team: Example Company Bundle Identifier: com.example.myapp
複数Teamを利用している場合は特に注意してください。
解決方法3:Bundle Identifierを確認する
Provisioning ProfileはApp IDに対応しています。
Xcode側のBundle Identifierと、Apple Developer側のApp IDが一致しているか確認します。
Xcode:
com.example.myapp
App ID:
com.example.myapp
GitHubから取得したサンプルの場合は、作者のBundle Identifierを自分専用の値に変更します。
解決方法4:デバイスを登録する
新しいiPhoneやiPadでのみエラーになる場合は、デバイス登録を確認します。
Automatic Signingを利用している場合、Xcodeは権限があれば接続したデバイスを登録できます。 :contentReference[oaicite:6]{index=6}
Manual Signingの場合は、Apple Developer側でUDIDを登録し、そのデバイスを含むProvisioning Profileを作り直します。
解決方法5:手動でDevelopment Provisioning Profileを作成する
Manual Signingを使用する場合は、正しい条件でProfileを作成します。
- Certificates, Identifiers & Profilesを開きます。
- Profilesを選択します。
- 追加ボタンをクリックします。
- iOS App Developmentを選択します。
- 対象App IDを選択します。
- 使用するDevelopment Certificateを選択します。
- 実行するデバイスを選択します。
- Profile名を入力します。
- Generateを実行します。
- ProfileをダウンロードしてXcodeへ読み込みます。
これはAppleが現在案内しているDevelopment Provisioning Profile作成手順と同じ流れです。 :contentReference[oaicite:7]{index=7}
解決方法6:Signing Certificateを確認する
Mac上で利用可能なコード署名Identityを確認します。
security find-identity -v -p codesigning
正常な例:
1) ABCDEF1234567890 "Apple Development: Developer Name (ABCDE12345)" 1 valid identities found
次のように表示される場合は、有効な署名Identityがありません。
0 valid identities found
この場合はApple Development証明書または秘密鍵を確認してください。
解決方法7:Provisioning Profileを再生成する
証明書、デバイス、App Servicesなどを変更した場合、既存Profileが無効になることがあります。
Appleは、証明書の失効、デバイス変更、App Services変更、Profile期限切れなどの場合にProfileを編集または再生成できると案内しています。 :contentReference[oaicite:8]{index=8}
Manual Signingの場合はApple Developer側でProfileを再生成し、Xcodeへ新しいProfileを読み込みます。
解決方法8:古いProvisioning Profileを削除する
Automatic Signingを利用しているにもかかわらず古いProfileが使用される場合は、XcodeのProfileキャッシュを確認します。
~/Library/MobileDevice/Provisioning Profiles/
一覧を確認します。
ls ~/Library/MobileDevice/Provisioning\ Profiles/
不要なProfileをバックアップ後に削除し、再度実機ビルドします。
Appleも、Automatic Signingで新しいProvisioning Profileを要求させる方法として、このキャッシュから不要なProfileを削除して再ビルドする手順を案内しています。 :contentReference[oaicite:9]{index=9}
解決方法9:Provisioning Profileの内容を確認する
.mobileprovisionファイルはTerminalでデコードできます。
security cms -D -i MyProfile.mobileprovision > profile.plist
内容を確認します。
plutil -p profile.plist
特に次を確認します。
- Name
- UUID
- TeamIdentifier
- ExpirationDate
- ProvisionedDevices
- Entitlements
- application-identifier
有効期限、Team、App ID、対象デバイスが正しいか確認してください。
解決方法10:デバイスのUDIDを確認する
Manual Signingの場合、Profile内のProvisionedDevicesに現在のデバイスが含まれている必要があります。
Provisioning Profileをデコードした後、次の項目を確認します。
ProvisionedDevices
現在接続しているiPhoneのUDIDが含まれていなければ、デバイスを登録してProfileを再生成します。
解決方法11:Capabilitiesを確認する
Push Notifications、App Groups、Associated Domains、iCloudなどを追加した直後に発生した場合、Provisioning Profileが古い可能性があります。
Automatic Signingなら、Signing & CapabilitiesでCapabilityとTeamを確認し再ビルドします。
Xcode 15以降では、対応するCapabilityがApp IDへ割り当てられている場合、Xcodeが新しいEntitlementsを含むProvisioning Profileを自動作成できます。 :contentReference[oaicite:10]{index=10}
Manual Signingでは、新しいCapabilitiesを反映したProfileを再生成してください。
解決方法12:Extensionも確認する
アプリ本体以外のTargetが存在する場合、それぞれのSigning & Capabilitiesを確認します。
- Widget Extension
- Share Extension
- Notification Service Extension
- Watch App
- App Clip
例えば次のように別のBundle Identifierを持ちます。
com.example.myapp com.example.myapp.widget com.example.myapp.notification
各Targetに対応したApp IDとProvisioning Profileが必要です。
解決方法13:DebugとReleaseを比較する
実機では実行できるのにArchiveだけ失敗する場合は、DebugとReleaseで署名設定が異なる可能性があります。
xcodebuild -showBuildSettings -configuration Debug | grep -E "PRODUCT_BUNDLE_IDENTIFIER|CODE_SIGN|PROVISIONING|DEVELOPMENT_TEAM"
xcodebuild -showBuildSettings -configuration Release | grep -E "PRODUCT_BUNDLE_IDENTIFIER|CODE_SIGN|PROVISIONING|DEVELOPMENT_TEAM"
Releaseだけ古いProvisioning Profileや別Teamを使用していないか確認します。
解決方法14:Clean Build Folderを実行する
署名設定を修正した後は、Xcodeのビルドキャッシュも整理します。
Product → Clean Build Folder
必要に応じてDerivedDataを削除します。
rm -rf ~/Library/Developer/Xcode/DerivedData/*
注意:DerivedData削除だけではProvisioning Profileの問題は直りません。署名設定を正しくした後の補助的な対処として使用してください。
新しいMacへ移行した場合
プロジェクトを新しいMacへコピーしても、元のMacに保存されていた秘密鍵は自動的に移動しません。
まず次を確認します。
security find-identity -v -p codesigning
Automatic Signingの場合はApple AccountをXcodeへ追加し、正しいTeamを選択して再ビルドします。
Manual Signingでは、必要に応じて元のMacから証明書と秘密鍵を.p12形式で安全に移行します。
セキュリティ上の注意:.p12ファイルには秘密鍵が含まれるため、GitHubなどへコミットしないでください。
GitHubからCloneした場合
GitHubから取得したプロジェクトでこのエラーが出た場合は、次の順番で確認すると効率的です。
- Bundle Identifierを自分専用の値に変更する
- Development Teamを自分のTeamへ変更する
- Automatically manage signingを有効にする
- 実機を接続して再ビルドする
- Extensionがあれば各Bundle Identifierも変更する
作者のApp IDやProvisioning Profileは自分のTeamでは使用できないため、この設定変更が必要です。
CI環境で発生する場合
GitHub Actions、Jenkins、BitriseなどのCIでのみ発生する場合は、CIへインストールしているProvisioning Profileを確認します。
実効設定は次のように確認できます。
xcodebuild -showBuildSettings \ -scheme MyApp \ -configuration Release \ | grep -E "PRODUCT_BUNDLE_IDENTIFIER|CODE_SIGN|PROVISIONING_PROFILE|DEVELOPMENT_TEAM"
さらにCIへ配置したProfileを確認します。
security cms -D -i MyProfile.mobileprovision > profile.plist plutil -p profile.plist
ローカルでは成功しCIだけ失敗する場合は、古いProfile、異なる証明書、異なるTeamやBundle Identifierを優先的に疑ってください。
App Store Connect用Archiveで発生する場合
実機開発用とApp Store Connect配布用ではProvisioning Profileの種類が異なります。
App Store Connectへアップロードする場合は、App IDとDistribution Certificateに対応した配布用Provisioning Profileが必要です。
Appleの現行ドキュメントでは、Automatic Signingを選択した場合、XcodeがApp Store Connect用の配布Provisioning Profileを管理します。 :contentReference[oaicite:11]{index=11}
Ad Hoc配布の場合
Ad Hoc配布では、App ID、Distribution Certificate、登録済みデバイスを含むAd Hoc Provisioning Profileを使用します。
AppleもAutomatic Signingを使用する場合は、XcodeがAd Hoc Provisioning Profileを管理すると案内しています。 :contentReference[oaicite:12]{index=12}
やってはいけない対処
別アプリ用のProvisioning Profileを適当に選択してエラーだけを消そうとしないでください。
Provisioning ProfileはApp ID、証明書、Team、デバイス、Entitlementsなどと対応しています。
不適切なProfileを選択すると、次のような別エラーにつながります。
- Provisioning profile doesn’t include signing certificate
- Provisioning profile doesn’t match the entitlements file
- Invalid entitlements
- No signing certificate found
最短で確認するチェックリスト
- Signing & CapabilitiesでAutomatic Signingを確認する
- 正しいTeamを選択する
- Bundle Identifierを確認する
- 新しい実機ならデバイス登録を確認する
- security find-identityでSigning Certificateを確認する
- Manual SigningならProfileを作り直す
- Profileの有効期限を確認する
- ProvisionedDevicesに実機が含まれているか確認する
- Capabilities変更後ならProfileを更新する
- Extensionの署名設定を確認する
- DebugとReleaseを比較する
- 古いProfileを整理して再ビルドする
まとめ
「A valid provisioning profile for this executable was not found」は、現在のアプリ、Developer Team、証明書、実機、Entitlementsなどに適合する有効なProvisioning Profileが利用できないときに発生するエラーです。
まずSigning & Capabilitiesで正しいTeamを選び、Automatically manage signingを有効にして再ビルドしてください。
Manual Signingを使用する場合は、対象App ID、Development Certificate、実機を選択してDevelopment Provisioning Profileを作成します。
それでも直らない場合は、Profileの期限、証明書、秘密鍵、デバイス登録、Bundle Identifier、Capabilities、Extension、DebugとRelease、古いProfileのキャッシュを順番に確認すると原因を特定しやすくなります。
