XcodeからApp Store Connectへアプリをアップロードしたあと、ビルドの処理結果に「Invalid Binary」と表示され、TestFlightやApp Store審査へ進めないことがあります。この状態は、アップロード自体は完了していても、Apple側の検証でバイナリに問題が見つかったことを示します。原因は署名、Bundle ID、Info.plist、対応SDK、埋め込みFramework、プライバシー関連設定など多岐にわたるため、App Store ConnectやAppleから届く通知メールに表示された具体的なエラー内容を確認して切り分けることが重要です。
Invalid Binaryとは
「Invalid Binary」は単一の原因を示すエラーではありません。App Store Connectがアップロードされたアプリのバイナリを検証した結果、配布要件を満たさない項目が見つかった場合に付く状態です。
Invalid Binary
実際の原因は、この表示だけでは判断できません。App Store Connectのビルド詳細、Xcode Organizerのアップロード結果、Appleから届くメールに記載されたITMS-xxxxx形式のエラーや警告を確認します。
代表的な発生状況
- Bundle IdentifierがApp Store Connect上のApp IDと一致していない
- 署名証明書やProvisioning Profileの組み合わせに問題がある
- Info.plistの必須キーや値に不整合がある
- CFBundleVersionやCFBundleShortVersionStringが不正、または既存ビルドと重複している
- 非対応のSDKや古いXcodeでビルドしたバイナリを送信している
- 埋め込みFrameworkの署名やアーキテクチャに問題がある
- 不要なシミュレータ向けアーキテクチャが含まれている
- アプリやFramework内のInfo.plistに不正な設定がある
- 必要なプライバシー説明文や権限関連設定が不足している
最初に確認する手順
1. App Store Connectのビルド詳細を確認する
App Store Connectで対象アプリを開き、問題になったビルドの状態を確認します。「Invalid Binary」だけでなく、関連するメッセージや警告が表示されていないか確認してください。
2. Appleから届いたメールを確認する
バイナリの検証に失敗した場合、アップロード後にAppleから具体的な理由を記載したメールが届くことがあります。本文中のITMS-で始まるコードやエラーメッセージが、原因を特定する最も重要な情報です。
3. Xcode Organizerのログを確認する
XcodeでWindow > Organizerを開き、Archivesから対象Archiveを選択します。アップロード時のログやValidation結果に、App Store Connect側と対応するエラーがないか確認します。
解決方法1:Bundle IdentifierとSigningを確認する
TargetのSigning & Capabilitiesを開き、TeamとBundle Identifierを確認します。App Store Connectに登録されたアプリと異なるBundle Identifierを使っていると、正しいアプリとして認識されません。
Automatic Signingを使用している場合でも、TeamやBundle Identifierが意図した値になっているかを必ず確認してください。
解決方法2:VersionとBuild番号を見直す
General画面のVersionとBuildを確認します。Build番号は同じVersion内で、過去にアップロードしたものより新しい値に変更します。
Version: 1.2.0
Build: 15
Info.plistを直接管理している場合は、次のキーも確認します。
CFBundleShortVersionString
CFBundleVersion
解決方法3:Info.plistの内容を確認する
Info.plistのキー不足や不正な値が原因になることがあります。特に利用している機能に応じた権限説明文、Bundle関連キー、URL Scheme、対応端末設定などを確認します。
実際にArchiveへ組み込まれたInfo.plistを確認したい場合は、Archive内の.appを展開し、plutilで内容を確認できます。
plutil -p Payload/YourApp.app/Info.plist
解決方法4:埋め込みFrameworkを確認する
CocoaPods、Swift Package Manager、手動追加したFrameworkを使用している場合は、署名や埋め込み設定が原因になることがあります。TargetのGeneralにあるFrameworks, Libraries, and Embedded Contentを確認し、必要なFrameworkが適切にEmbedされているか確認します。
Archive内のFramework署名を確認する場合はcodesignコマンドも利用できます。
codesign -dv --verbose=4 YourApp.app/Frameworks/Example.framework
解決方法5:Archiveを作り直す
設定を修正したら、古いArchiveをそのまま再利用せず、新しくArchiveを作成します。
- Product > Clean Build Folderを実行する
- 必要に応じてDerivedDataを削除する
- 実機向けの配布設定を確認する
- Product > Archiveを実行する
- OrganizerからValidate Appを実行する
- 問題がなければDistribute Appから再アップロードする
解決方法6:Validationを先に実行する
アップロード前にXcode OrganizerのValidate Appを実行すると、署名やBundle設定などの問題を事前に検出できる場合があります。いきなりUploadするよりも、修正と確認を繰り返しやすくなります。
コマンドでArchive情報を確認する
必要に応じて、Archive内のアプリ情報や署名情報をコマンドで確認できます。
codesign -dv --verbose=4 YourApp.app
plutil -p YourApp.app/Info.plist
埋め込まれているProvisioning Profileを確認する場合は、次のように展開できます。
security cms -D -i YourApp.app/embedded.mobileprovision
注意点
「Invalid Binary」は結果を示す状態名であり、それ自体が根本原因ではありません。同じ表示でも、実際の原因はプロジェクトごとに異なります。必ずAppleから返された具体的なITMSエラーやValidationメッセージを基準に修正してください。
また、App Store Connectの要件は更新されることがあります。以前アップロードできたプロジェクトでも、XcodeやSDKの要件変更後に同じ設定では受け付けられなくなることがあります。
まとめ
App Store Connectで「Invalid Binary」と表示された場合は、まずAppleから返された具体的な検証エラーを確認します。そのうえで、Bundle Identifier、Signing、VersionとBuild番号、Info.plist、Framework、使用しているXcodeとSDKを順番に確認してください。設定を修正したあとは新しいArchiveを作成し、Validate Appで検証してから再アップロードすると切り分けやすくなります。
