Installation errors

Fix a Bundle ID and Provisioning Profile Mismatch

Compare an IPA's bundle identifier, signed application identifier, App ID, entitlements, and embedded profile to find the first identity mismatch.

A bundle-ID/profile mismatch means the signed app identity falls outside the identity or entitlement authorization carried by the provisioning profile. A familiar profile name is not evidence that the profile belongs to this app.

Keep these identifiers separate:

profile name
  != App ID

main bundle ID matches
  != every signed entitlement is authorized

main app matches
  != every nested target matches

Preserve the exact IPA before changing anything

shasum -a 256 ClientBuild.ipa
mkdir ClientBuild-unpacked
unzip -q ClientBuild.ipa -d ClientBuild-unpacked
APP_PATH=$(find ClientBuild-unpacked/Payload -maxdepth 1 -name '*.app' -print -quit)

Record the checksum, version/build, intended Apple Developer team, and distribution method. Do not edit Info.plist inside the extracted app and re-zip it; changing signed content invalidates the existing signature.

Step 1: read the app’s bundle identifier

plutil -extract CFBundleIdentifier raw -o - "$APP_PATH/Info.plist"

This tells you the bundle identifier packaged in the app. It does not tell you whether the signed entitlements or provisioning profile authorize it.

Step 2: read the signed application identity and entitlements

codesign --display --entitlements :- "$APP_PATH" \
  > /tmp/app-entitlements.plist 2>/dev/null

plutil -extract application-identifier raw \
  -o - /tmp/app-entitlements.plist

plutil -p /tmp/app-entitlements.plist

The signed entitlements are what this artifact actually claims. Treat them as evidence from the final artifact, not as a copy of what the Xcode project intended to claim.

Step 3: decode the profile authorization

security cms -D \
  -i "$APP_PATH/embedded.mobileprovision" \
  -o /tmp/profile.plist

plutil -extract Entitlements.application-identifier raw \
  -o - /tmp/profile.plist

plutil -extract Entitlements xml1 \
  -o /tmp/profile-entitlements.plist \
  /tmp/profile.plist

plutil -extract TeamIdentifier xml1 -o - /tmp/profile.plist

Apple describes a provisioning profile as an authorization that answers who may sign, what may be signed, where it may run, when it may run, and which entitlements it may claim. The profile plist is useful for diagnosis, but Apple explicitly warns that its internal format is not a stable product API.

Step 4: compare the identity layers

For an explicit App ID, the profile should represent the intended team/App ID context and match the app target’s bundle identifier. Apple’s current App ID documentation distinguishes explicit App IDs, which identify one app, from wildcard App IDs, which can identify a set of apps.

Do not reduce the comparison to a string suffix alone. Check:

  1. CFBundleIdentifier;
  2. signed application-identifier;
  3. profile application-identifier;
  4. team/App ID prefix context; and
  5. entitlement compatibility.

Apple’s current account help says the capabilities enabled for an App ID form an allowlist. If you modify an App ID’s enabled capabilities, provisioning profiles that contain that App ID become invalid and must be regenerated.

Wildcard profiles are not universal authorization

A wildcard App ID can represent a set of bundle identifiers, but that does not mean it authorizes every capability or every target. Apple’s current App Store Connect provisioning flow requires an explicit App ID, and capabilities can impose additional App ID requirements.

Do not “fix” a mismatch by selecting a broader wildcard solely because the bundle string appears to fit. Verify the capabilities the target actually claims and use the App ID model required by the current Apple workflow.

Compare entitlements, not just bundle IDs

A visible bundle identifier can match while the app still claims an entitlement that the profile does not authorize.

Compare the signed app entitlements with the profile’s entitlement allowlist. Focus on the exact capabilities present in the artifact rather than adding every possible Apple capability to the diagnosis.

If a capability was recently enabled or changed for the App ID, regenerate the affected profiles before rebuilding. A stale profile can preserve an older authorization set even though the bundle identifier itself never changed.

Common places the mismatch enters the workflow

Inspect nested targets explicitly

find "$APP_PATH" -type d \
  \( -name '*.appex' -o -name '*.app' \) -print

For every signed nested target, repeat the relevant checks:

The main app matching its profile does not prove the whole IPA is internally consistent.

Decide between rebuild and authorized re-sign

Source available

Correct the Xcode target’s bundle identifier, team, capabilities, and signing configuration, then archive/export again. This is usually the safest option when multiple targets or capabilities are involved.

Source unavailable

Only consider an authorized re-sign when the app owner controls compatible signing assets and the new App ID/profile can technically and legitimately authorize every required identifier and entitlement. If the new team/App ID cannot represent the app’s signed capabilities, stop and obtain a correct build from the owner.

How to Re-sign an IPA Safely owns the re-sign boundary.

Distinguish this from certificate mismatch

If the bundle/App ID/entitlements align but the certificate that signed the app is not authorized by DeveloperCertificates, the problem is Profile and Signing Certificate Mismatch, not bundle identity.

If identity and certificate authorization both look correct but installation still fails, continue with App Integrity Could Not Be Verified or Unable to Install App using the exact device error.

Verify the replacement

After repair:

  1. checksum the replacement IPA;
  2. confirm CFBundleIdentifier;
  3. inspect signed entitlements;
  4. decode the embedded profile;
  5. compare application identifiers and team context;
  6. verify nested targets;
  7. verify code signatures; and
  8. acceptance-test the exact delivered checksum.

Run the iOS Distribution Checklist before client handoff. The objective is one artifact whose app identity, entitlement claims, profile authorization, signing identity, and distribution method all describe the same release.

Related next steps

Next step. Inspect the exact IPA first, identify the first identity mismatch, then rebuild or perform an authorized re-sign only with compatible app-owner assets. Join Early Access.

Sources