PC パソコン

Xcode「A valid provisioning profile for this executable was not found」の解決方法

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を有効にするのが最も簡単な対処です。

  1. 「A valid provisioning profile for this executable was not found」とは
  2. 主な原因
    1. 1. Provisioning Profileが存在しない
    2. 2. Bundle IdentifierがProvisioning Profileと一致していない
    3. 3. 実行するiPhoneやiPadがProfileに含まれていない
    4. 4. Provisioning Profileの有効期限が切れている
    5. 5. Development Certificateが一致していない
    6. 6. 証明書の秘密鍵がMacにない
    7. 7. Development Teamが違う
    8. 8. EntitlementsとProvisioning Profileが一致していない
    9. 9. 古いProvisioning Profileがキャッシュされている
    10. 10. Extension側のProvisioning Profileが不正
  3. 代表的な発生状況
  4. まず確認する手順
    1. 1. Signing & Capabilitiesを確認する
    2. 2. 実効設定を確認する
  5. 解決方法1:Automatically manage signingを有効にする
  6. 解決方法2:正しいTeamを選択する
  7. 解決方法3:Bundle Identifierを確認する
  8. 解決方法4:デバイスを登録する
  9. 解決方法5:手動でDevelopment Provisioning Profileを作成する
  10. 解決方法6:Signing Certificateを確認する
  11. 解決方法7:Provisioning Profileを再生成する
  12. 解決方法8:古いProvisioning Profileを削除する
  13. 解決方法9:Provisioning Profileの内容を確認する
  14. 解決方法10:デバイスのUDIDを確認する
  15. 解決方法11:Capabilitiesを確認する
  16. 解決方法12:Extensionも確認する
  17. 解決方法13:DebugとReleaseを比較する
  18. 解決方法14:Clean Build Folderを実行する
  19. 新しいMacへ移行した場合
  20. GitHubからCloneした場合
  21. CI環境で発生する場合
  22. App Store Connect用Archiveで発生する場合
  23. Ad Hoc配布の場合
  24. やってはいけない対処
  25. 最短で確認するチェックリスト
  26. まとめ

「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を試します。

  1. 対象Targetを選択します。
  2. Signing & Capabilitiesを開きます。
  3. Automatically manage signingを有効にします。
  4. 正しいTeamを選択します。
  5. 実機を接続します。
  6. 再度ビルドします。

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を作成します。

  1. Certificates, Identifiers & Profilesを開きます。
  2. Profilesを選択します。
  3. 追加ボタンをクリックします。
  4. iOS App Developmentを選択します。
  5. 対象App IDを選択します。
  6. 使用するDevelopment Certificateを選択します。
  7. 実行するデバイスを選択します。
  8. Profile名を入力します。
  9. Generateを実行します。
  10. 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から取得したプロジェクトでこのエラーが出た場合は、次の順番で確認すると効率的です。

  1. Bundle Identifierを自分専用の値に変更する
  2. Development Teamを自分のTeamへ変更する
  3. Automatically manage signingを有効にする
  4. 実機を接続して再ビルドする
  5. 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

最短で確認するチェックリスト

  1. Signing & CapabilitiesでAutomatic Signingを確認する
  2. 正しいTeamを選択する
  3. Bundle Identifierを確認する
  4. 新しい実機ならデバイス登録を確認する
  5. security find-identityでSigning Certificateを確認する
  6. Manual SigningならProfileを作り直す
  7. Profileの有効期限を確認する
  8. ProvisionedDevicesに実機が含まれているか確認する
  9. Capabilities変更後ならProfileを更新する
  10. Extensionの署名設定を確認する
  11. DebugとReleaseを比較する
  12. 古い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のキャッシュを順番に確認すると原因を特定しやすくなります。