Xcodeで作成したArchiveをApp Store Connectへアップロードした際、ITMS-90035: Invalid Signature が表示されることがあります。このエラーは、アプリ本体や埋め込みFrameworkなどのコード署名が無効、欠落、または署名後に内容が変更された場合に発生します。
ITMS-90035 Invalid Signatureとは
App Store Connectは、アップロードされたアプリ内の実行ファイルやFramework、Bundleなどの署名を検証します。署名対象のファイルが未署名だったり、署名後にファイル内容が変わっていたりすると、検証に失敗してITMS-90035が表示されます。
ERROR ITMS-90035: "Invalid Signature. Code object is not signed at all."
ERROR ITMS-90035: "Invalid Signature. A sealed resource is missing or invalid."
主な原因
- App Store配布用ではない証明書・Provisioning Profileで署名している
- 埋め込みFrameworkやExtensionが正しく署名されていない
- 署名後にBuild PhaseやCI処理が.app内のファイルを書き換えている
- Framework内に未署名の実行ファイルやスクリプトが含まれている
- 外部ドライブや圧縮・コピー処理により
._で始まるAppleDoubleファイルが混入している - 古い証明書、無効な署名設定、チームID不一致などで署名整合性が崩れている
代表的な発生状況
特に多いのは、CocoaPodsやSwift Package Managerで追加したFramework、独自Framework、CI/CDで加工したIPAを含むプロジェクトです。また、Archive後にInfo.plistや画像などを直接差し替えた場合も署名が無効になります。
確認手順1:Archive内の署名を検証する
Xcode Organizerから対象ArchiveをFinderで表示し、Archive内の Products/Applications にある.appを確認します。Terminalで次を実行します。
codesign --verify --deep --strict --verbose=4 /path/to/MyApp.app
正常な場合は署名が有効であることを示す結果になります。エラーが出た場合は、表示されたFrameworkやファイル名を確認してください。
確認手順2:使用している署名証明書を確認する
codesign -dvvv /path/to/MyApp.app
Authority や TeamIdentifier を確認し、App Store配布用の署名になっているかを確認します。
解決方法1:Signing & Capabilitiesを見直す
- XcodeでTargetを選択する
- Signing & Capabilitiesを開く
- 正しいTeamが選択されていることを確認する
- 可能であればAutomatically manage signingを有効にする
- Release構成で正しい配布用署名が使われていることを確認する
設定変更後は新しいArchiveを作成し直してください。
解決方法2:FrameworkをEmbed & Signにする
埋め込みFrameworkが原因の場合は、TargetのGeneralまたはFrameworks, Libraries, and Embedded Contentを確認します。アプリに同梱する動的Frameworkは通常Embed & Signに設定します。
解決方法3:署名後に.appを変更しない
コード署名はアプリ内のファイル内容を含めて検証します。署名後にInfo.plist、画像、Framework、JavaScript、設定ファイルなどを変更すると署名が無効になります。
Build PhaseやCIスクリプトでファイルをコピー・加工している場合は、その処理がコード署名より前に行われるよう見直します。
解決方法4:AppleDoubleファイルを除去する
外部ストレージや一部のコピー処理を経由すると、._で始まる不可視ファイルが生成されることがあります。AppleはこれがInvalid Signatureの原因になるケースを案内しています。
dot_clean /path/to/YourProject
実行後にDerivedDataを削除し、Archiveを作り直します。
解決方法5:DerivedDataを削除して再Archiveする
rm -rf ~/Library/Developer/Xcode/DerivedData/*
その後、XcodeのProduct > Clean Build Folderを実行し、新しいArchiveを作成します。
解決方法6:Provisioning Profileと証明書を再生成する
証明書やProvisioning Profileが古い、TeamやCapabilityと一致していない場合は、Apple Developer側で配布用証明書・App Store用Provisioning Profileを確認し、必要なら再生成します。自動署名を利用している場合は、Xcodeに再取得させる方法も有効です。
Framework単位で署名を確認する
エラーにFramework名が表示されている場合は、そのFrameworkを直接検証します。
codesign --verify --verbose=4 /path/to/MyApp.app/Frameworks/Example.framework
ここで失敗する場合は、Frameworkの組み込み方法、署名設定、配布元のバージョンを確認してください。
注意点
- Archive済みの.appやIPAを手作業で編集しないでください。
- 古いFrameworkを使用している場合は最新版への更新も検討してください。
- CI/CDでは署名後にファイルを書き換える処理がないか確認してください。
codesign --verifyで問題箇所を特定してから設定を変更すると効率的です。
まとめ
ITMS-90035 Invalid Signatureは、App Store Connectがアプリ内のコード署名を正しく検証できない場合に発生します。まず codesign --verify で問題のファイルを特定し、配布用署名、Provisioning Profile、FrameworkのEmbed & Sign、署名後のファイル変更、._ファイルの混入を順番に確認してください。修正後は必ず新しいArchiveを作成して再アップロードします。
