XcodeでiPhoneやiPad向けアプリを実機ビルドしようとした際に、Signing & Capabilitiesで次のようなエラーが表示されることがあります。
Failed to register bundle identifier
さらに詳細として、次のようなメッセージが表示される場合があります。
The app identifier "com.example.myapp" cannot be registered to your development team because it is not available.
このエラーは、Xcodeが現在設定されているBundle IdentifierをApple Developer側のApp IDとして登録できなかったときに発生します。
代表的な原因は、Bundle Identifierがすでに他の開発者や別チームで使用されている、現在のApple AccountにApp IDを登録する権限がない、Bundle Identifierの形式に問題がある、Xcodeで間違ったTeamを選択している、Apple Developer側に既存App IDがあるのに別の設定として登録しようとしている、といったケースです。
- 「Failed to register bundle identifier」とは
- Bundle IdentifierとApp IDの違い
- 主な原因
- 代表的な発生状況
- 最初に確認する手順
- 解決方法1:Bundle Identifierを一意な値へ変更する
- 解決方法2:正しいTeamを選択する
- 解決方法3:Automatically manage signingを有効にする
- 解決方法4:Apple Developer側のApp IDを確認する
- 解決方法5:App IDを手動で登録する
- 解決方法6:Developerロールの権限を確認する
- 解決方法7:ExtensionのBundle Identifierを確認する
- 解決方法8:PRODUCT_BUNDLE_IDENTIFIERを確認する
- 解決方法9:DebugとReleaseのBundle Identifierを比較する
- 解決方法10:.xcconfigを確認する
- 解決方法11:古いProvisioning Profileを整理する
- 解決方法12:Capabilitiesを確認する
- 「identifier is not available」も表示される場合
- GitHubからCloneしたプロジェクトの場合
- CIで発生する場合
- App Store Connect登録済みアプリの場合
- やってはいけない対処
- 最短で解決する確認順序
- まとめ
「Failed to register bundle identifier」とは
iOSアプリには、アプリを識別するためのBundle Identifierが設定されています。
例えば次のような値です。
com.example.myapp
XcodeでAutomatic Signingを使用すると、必要に応じてこのBundle Identifierに対応するApp IDをApple Developer側へ登録します。
この登録処理に失敗したときに表示されるのが「Failed to register bundle identifier」です。
Appleの現在の案内でも、Explicit App IDを登録する場合、そのBundle IDはXcodeのターゲットに設定されたBundle Identifierと一致させる必要があります。
Bundle IdentifierとApp IDの違い
混乱しやすいポイントですが、Bundle IdentifierとApp IDは完全に同じ意味ではありません。
Bundle Identifier
Xcodeプロジェクト内でアプリを識別する文字列です。
com.example.myapp
App ID
Apple Developer側で登録され、Provisioning Profileなどの署名設定でアプリを識別するIDです。
Explicit App IDの場合、そのBundle ID部分はXcode側のBundle Identifierと一致させます。
主な原因
1. Bundle Identifierがすでに使用されている
最も典型的な原因です。
例えばサンプルプロジェクトで次のBundle Identifierが設定されているとします。
com.example.app
このIdentifierがすでに他の開発者によってApple側に登録されている場合、自分のTeamでは登録できません。
GitHubから取得したサンプルプロジェクトで特に発生しやすいケースです。
2. 他のApple Developer Teamですでに登録している
自分が複数のDeveloper Teamに参加している場合、同じBundle Identifierが別Teamですでに登録されていることがあります。
Xcodeで別のTeamを選択すると、そのTeamから新規登録しようとして失敗する場合があります。
3. Bundle Identifierがサンプルのまま
教材、GitHub、テンプレートなどでは次のようなBundle Identifierが使われていることがあります。
com.example.MyApp com.company.app com.test.app
これらは一意性が低く、すでに登録済みである可能性があります。
4. 正しいDevelopment Teamを選択していない
Signing & CapabilitiesでTeamが間違っている場合、意図しないDeveloper TeamへApp IDを登録しようとして失敗することがあります。
5. App IDを登録する権限がない
会社やチームのApple Developer Programでは、DeveloperロールにApp ID作成権限が与えられていない場合があります。
さらに、Account Holder、Admin、App ManagerはAutomatic Signing Controlsを利用して、Developerロールによる新規App IDの登録を制限できます。
6. Bundle Identifierの形式に問題がある
Bundle Identifierには通常、逆ドメイン形式を使用します。
jp.example.myapp
空白や不適切な文字を含めると、登録や署名処理に問題が発生することがあります。
7. 既存App IDとXcode側のBundle Identifierが一致していない
Apple Developer側ですでにApp IDを作成している場合は、そのBundle IDとXcode側の設定を一致させる必要があります。
8. ExtensionのBundle Identifierが重複している
Widget ExtensionやNotification Service Extensionを追加した場合、Extensionにも別のBundle Identifierが必要です。
例えば本体が次の場合:
com.example.myapp
Widgetでは一般的に次のように別Identifierを使用します。
com.example.myapp.widget
Extension側に既存のIdentifierをそのまま使用すると登録に失敗することがあります。
9. Apple Developer側のCapabilities設定と競合している
Push Notifications、App Groups、Sign in with Apple、iCloudなどを使用している場合、App ID側の設定も関係します。
App IDのCapabilitiesを変更すると、そのApp IDを使用するProvisioning Profileが無効になり、再生成が必要になる場合があります。
代表的な発生状況
- 新しいXcodeプロジェクトを実機で初めて実行した
- GitHubからプロジェクトをCloneした
- 他人のサンプルコードをコピーした
- 会社のApple Developer Teamへ切り替えた
- 個人Teamと会社Teamを切り替えた
- Bundle Identifierを変更した
- WidgetやExtensionを追加した
- Apple Accountを変更した
- Automatic Signingを有効にした
- 新しいApp IDをXcodeから自動作成しようとした
最初に確認する手順
1. Bundle Identifierを確認する
Xcodeで次の順に開きます。
Project → TARGETS → 対象アプリ → Signing & Capabilities
Bundle Identifierを確認します。
com.example.myapp
GitHubなどから取得したプロジェクトの場合は、まず自分専用のIdentifierへ変更してください。
2. Teamを確認する
同じSigning & Capabilities画面でTeamを確認します。
複数のApple Developer Teamへ所属している場合は、意図したTeamが選択されているか特に注意してください。
3. Apple Accountを確認する
Xcodeで次を確認します。
Xcode → Settings → Accounts
使用するApple Accountが登録されていることを確認します。
解決方法1:Bundle Identifierを一意な値へ変更する
最も簡単で、最も多くのケースで有効な解決方法です。
例えば次のような一般的すぎるIdentifierを使用しているとします。
com.example.myapp
自分のドメインや名前を組み込んだ値へ変更します。
jp.examplecompany.myapp
または個人開発なら、十分一意になる文字列を使用します。
com.yourname.myuniquename
変更後に再度Signing & Capabilitiesを確認し、Automatic Signingを実行します。
注意:すでにApp Storeで公開しているアプリのBundle Identifierは、新規プロジェクトのように気軽に変更してはいけません。既存アプリの識別情報として扱われるためです。
解決方法2:正しいTeamを選択する
複数Teamを利用している場合は、次を確認します。
- Signing & Capabilitiesを開く
- Teamを確認する
- App IDを登録したTeamを選ぶ
- 再ビルドする
別Teamで既に使用しているBundle Identifierを、現在のTeamから新規登録しようとしていないか確認してください。
解決方法3:Automatically manage signingを有効にする
手動署名が必要でなければ、Automatic Signingを利用します。
- Targetを選択します。
- Signing & Capabilitiesを開きます。
- Automatically manage signingを有効にします。
- Teamを選択します。
- 再ビルドします。
XcodeがApp IDやProvisioning Profileなどの署名設定を管理できるようになります。
ポイント:Automatic Signingでも、利用できないBundle Identifierを強制的に登録することはできません。Identifier自体が競合している場合は変更が必要です。
解決方法4:Apple Developer側のApp IDを確認する
すでにApp IDを作成済みの場合は、Apple DeveloperのCertificates, Identifiers & ProfilesでIdentifiersを確認します。
Xcode側:
com.example.myapp
Apple Developer側:
com.example.myapp
Explicit App IDの場合は、このBundle IDが一致していることを確認します。
解決方法5:App IDを手動で登録する
Automatic Signingによる登録に失敗する場合は、必要に応じてApple Developer側からApp IDを作成します。
基本手順
- Certificates, Identifiers & Profilesを開きます。
- Identifiersを選択します。
- 追加ボタンをクリックします。
- App IDsを選択します。
- Appを選択します。
- Descriptionを入力します。
- Explicit App IDを選択します。
- Xcodeと同じBundle IDを入力します。
- 必要なCapabilitiesを設定します。
- Registerを実行します。
Appleの現在の仕様では、App IDの手動登録には通常Account HolderまたはAdmin権限が必要です。
重要:チーム内で権限が不足している場合は、Account HolderまたはAdminへApp IDの作成を依頼してください。
解決方法6:Developerロールの権限を確認する
会社のApple Developer Teamでのみ発生する場合は、Automatic Signing Controlsを確認してください。
組織では、Developerロールに対して次のような操作を制限できます。
- 新しいApp IDの登録
- 既存App IDの変更
- テストデバイスの登録
自分では変更できない場合、TeamのAccount Holder、Admin、App Managerなど管理権限を持つ担当者へ確認します。
解決方法7:ExtensionのBundle Identifierを確認する
Widget、Share Extension、Notification Service Extensionなどを追加した場合は、各Targetを確認します。
例:
アプリ本体:
com.example.myapp
Widget:
com.example.myapp.widget
Notification Service Extension:
com.example.myapp.notification
すべてのTargetに同じBundle Identifierを設定しないでください。
解決方法8:PRODUCT_BUNDLE_IDENTIFIERを確認する
Signing & Capabilitiesでは正しく見えていても、Build Settingsや.xcconfigで別のBundle Identifierが設定されていることがあります。
Terminalから現在の実効値を確認できます。
xcodebuild -showBuildSettings | grep PRODUCT_BUNDLE_IDENTIFIER
例えば次のように表示されます。
PRODUCT_BUNDLE_IDENTIFIER = com.example.myapp
想定していない値が表示された場合は、Build Settingsや.xcconfigを確認します。
解決方法9:DebugとReleaseのBundle Identifierを比較する
Build ConfigurationによってBundle Identifierを変更しているプロジェクトでは、Debugだけ正常でReleaseだけ登録エラーになることがあります。
次のように確認します。
xcodebuild -showBuildSettings -configuration Debug | grep PRODUCT_BUNDLE_IDENTIFIER
xcodebuild -showBuildSettings -configuration Release | grep PRODUCT_BUNDLE_IDENTIFIER
意図しないBundle Identifierが設定されていないか確認してください。
解決方法10:.xcconfigを確認する
プロジェクトで.xcconfigファイルを使用している場合、Bundle Identifierがそこで定義されている場合があります。
PRODUCT_BUNDLE_IDENTIFIER = com.example.myapp
Signing & Capabilitiesだけを変更しても、.xcconfig側の値で上書きされる構成があります。
解決方法11:古いProvisioning Profileを整理する
Bundle Identifierを変更した後、古いProvisioning Profileが残っていると署名関連の別エラーが続くことがあります。
保存場所は一般的に次です。
~/Library/MobileDevice/Provisioning Profiles/
一覧を確認します。
ls ~/Library/MobileDevice/Provisioning\ Profiles/
必要に応じて古いProfileをバックアップして整理し、Automatic Signingで再取得します。
解決方法12:Capabilitiesを確認する
App IDを作成できても、その後Push NotificationsやApp Groupsなどで署名エラーになる場合は、Apple Developer側のApp IDに必要なCapabilitiesが有効になっているか確認してください。
AppleではApp IDのCapabilitiesを変更すると、そのApp IDを含む既存Provisioning Profileが無効になり、再生成が必要になる場合があります。
「identifier is not available」も表示される場合
次のようなエラーが併記されることがあります。
The app identifier "com.example.myapp" cannot be registered to your development team because it is not available.
この場合、まずBundle Identifierが他で使用されている可能性を考えます。
新規開発中のアプリであれば、十分に一意なIdentifierへ変更するのが最も簡単です。
変更前:
com.example.app
変更後:
jp.yourdomain.projectname
GitHubからCloneしたプロジェクトの場合
GitHub上のサンプルプロジェクトは、作者のBundle Identifierが設定されたままになっていることがあります。
そのまま実機でビルドすると、作者が登録済みのIdentifierを自分のTeamから登録しようとして失敗します。
まず次の項目を自分用へ変更します。
- Bundle Identifier
- Development Team
- 必要に応じてApp Groups
- URL Schemes
- Associated Domains
- Push Notifications設定
CIで発生する場合
CI環境で「Failed to register bundle identifier」が発生する場合、CIでAutomatic SigningがApp ID登録を試みている可能性があります。
本番CIでは、事前に正しいApp IDやProvisioning Profileを準備し、実行時に不要な新規App ID登録が発生しない構成にすると管理しやすくなります。
実際のBundle Identifierは次のコマンドで確認できます。
xcodebuild -showBuildSettings \ -scheme MyApp \ -configuration Release \ | grep PRODUCT_BUNDLE_IDENTIFIER
ローカル環境とCIで値が異なる場合は、.xcconfigや環境変数による上書きを確認してください。
App Store Connect登録済みアプリの場合
すでにApp Store Connectでアプリを運用している場合は、新しいBundle Identifierを適当に作成するのではなく、既存アプリに対応するApp IDを使用します。
配布用Provisioning Profileを作成する際も、Appleは開発時に使用したBundle IDと一致するApp IDを選択するよう案内しています。
やってはいけない対処
既存アプリのBundle Identifierを、エラー回避だけを目的に変更しないでください。
新規サンプルアプリなら変更して問題ないことが多いですが、公開中アプリではBundle Identifierはアプリを識別する重要な情報です。
また、原因がTeamの選択ミスや権限不足の場合、Bundle Identifierを何度変更しても根本解決になりません。
最短で解決する確認順序
- Signing & CapabilitiesでBundle Identifierを確認する
- サンプル用Identifierなら自分専用の値へ変更する
- 正しいDevelopment Teamを選択する
- Automatically manage signingを有効にする
- Apple Developer側に同じApp IDが存在するか確認する
- 会社TeamならApp ID登録権限を確認する
- ExtensionごとのBundle Identifierを確認する
- PRODUCT_BUNDLE_IDENTIFIERの実効値を確認する
- DebugとReleaseの設定差を確認する
- .xcconfigによる上書きを確認する
まとめ
Xcodeの「Failed to register bundle identifier」は、Xcodeが現在のBundle IdentifierをApple Developer側のApp IDとして登録できない場合に発生します。
新規プロジェクトやGitHubから取得したサンプルでは、Bundle Identifierがすでに他の開発者に使用されているケースが多いため、まず自分専用の一意なIdentifierへ変更してください。
それでも解決しない場合は、Signing & CapabilitiesのTeam、Apple Account、App ID登録権限、Apple Developer側の既存App ID、ExtensionごとのIdentifier、PRODUCT_BUNDLE_IDENTIFIERを順番に確認します。
会社のDeveloper Teamでのみ発生する場合は、Automatic Signing ControlsによってDeveloperロールのApp ID登録が制限されていないかも確認すると、原因を特定しやすくなります。
