PC パソコン

App Store ConnectのBundle Name関連エラーの解決方法

App Store Connectへのアップロードや検証時に、Bundle Name(バンドル名)に関連するエラーや警告が表示されることがあります。Bundle Nameは主にInfo.plistのCFBundleNameやXcodeのProduct Nameから生成され、ホーム画面上の表示名にはCFBundleDisplayNameも関係します。ここでは、Bundle Name関連エラーの代表的な原因と確認手順、修正方法をまとめます。

主な原因

  • CFBundleNameが空、想定外の値、またはビルド設定変数の展開失敗になっている
  • PRODUCT_NAMEやTarget名を変更した後にInfo.plistとの整合性が崩れている
  • アプリ本体、Extension、Widgetなど複数TargetでBundle Name設定が不整合になっている
  • CFBundleNameとCFBundleDisplayNameを混同している
  • Archive内のInfo.plistが、Xcode上で確認している設定と異なっている

代表的な発生状況

アプリ名やTarget名を変更した直後、既存プロジェクトを複製した場合、複数Targetを追加した場合、CI環境でビルド設定を上書きしている場合などに発生しやすくなります。

確認対象の例

<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleDisplayName</key>
<string>My App</string>

確認手順

  1. Xcodeで対象Targetを選択します。
  2. Build SettingsでProduct Nameを確認します。
  3. InfoまたはInfo.plistでBundle name(CFBundleName)を確認します。
  4. 表示名を個別指定している場合はBundle display name(CFBundleDisplayName)も確認します。
  5. ExtensionやWidgetがある場合は、それぞれのTargetでも同様に確認します。
  6. Archive後の実体を確認し、設定が期待どおり反映されているか調べます。
Archive内のInfo.plistを確認する例

plutil -p "Payload/YourApp.app/Info.plist" | grep -E "CFBundleName|CFBundleDisplayName|CFBundleIdentifier"

解決方法1:CFBundleNameを見直す

通常はCFBundleNameを$(PRODUCT_NAME)にしておくと、TargetのProduct Nameと連動できます。空文字や存在しない変数を設定している場合は修正してください。

<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>

解決方法2:Product Nameを確認する

Build Settings → Packaging → Product Nameを確認します。DebugとReleaseで別の値になっている場合は、App Store Connect向けのRelease設定を重点的に確認してください。

解決方法3:CFBundleDisplayNameとの役割を分ける

CFBundleNameはBundleの短い名前、CFBundleDisplayNameはiOSのホーム画面などでユーザーに表示される名前です。表示名だけを変えたい場合は、むやみにBundle Nameを変更せず、CFBundleDisplayNameを設定します。

解決方法4:複数Targetの設定を確認する

Widget、Notification Service Extension、Share Extensionなどを含む場合は、各Targetが独立したInfo.plistとビルド設定を持つことがあります。アプリ本体だけでなく、埋め込まれる各BundleのCFBundleNameも確認してください。

解決方法5:Archiveを作り直す

設定変更後は古いArchiveを再利用せず、新しくArchiveを作成してください。必要に応じてClean Build FolderやDerivedDataの削除も行います。

rm -rf ~/Library/Developer/Xcode/DerivedData/*
注意:DerivedData削除はすべてのXcodeプロジェクトのビルドキャッシュを消すため、必要な場合だけ実行してください。また、Bundle NameとBundle Identifierは別物です。CFBundleIdentifierはアプリを一意に識別する値で、App Store Connect上のBundle IDと一致させる必要があります。

まとめ

Bundle Name関連エラーでは、まずCFBundleName、PRODUCT_NAME、CFBundleDisplayNameの役割を分けて確認します。複数Targetがある場合は全Targetを確認し、最終的にはArchive内のInfo.plistを直接調べると原因を特定しやすくなります。設定修正後は新しいArchiveを作成して、再度ValidateまたはUploadを実行してください。