AppStoreConnectへアップロードした後、ITMS-90035: Invalid Signatureというエラーで無効になる問題の解決方法

デプロイゲートでAdHoc配信したwatchOSアプリが何故かインストールの途中で止まってしまうので、試しにAppStoreConnectへアップロードしたところMS-90035: Invalid Signatureというエラーがでました。

ITMS-90035: Invalid Signature A sealed resource is missing or invalid. The file at path [~~~.app/~~~] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target. For more information, please consult

予約すると

封印されたリソースが見つからないか無効です。 パス[~~~.app/~~~]のファイルは適切に署名されていません。 アドホック証明書または開発証明書ではなく、配布証明書でアプリケーションに署名していることを確認してください。

ということらしいのですが、証明書やプロビジョイング、キーチェーン周りをいくら見直しても原因となるようなものが一切みあたらず途方にくれていたのですが、色々記事を読み漁っていたら解決方法を見つけることができましたので紹介しておきます。

ITMS-90035: Invalid Signatureというエラーが出た時の対処方法

私の場合はプロジェクトの一部に日本語を使ったファイルが含まれているのが原因でした。

検証用データ.csv

このような名前のファイルがあるのが原因となっていて、ファイルを削除したら無事にエラーが出ることはなくなりました。

実はこの日本語ファイル、とあるライブラリの中にあったもので、自分で作成したわけじゃないので見つけるのに苦労しました。

そこで今回は日本語ファイルがプロジェクトに含まれているかをサクッと探す方法もご紹介します。

日本語のファイルがプロジェクトに入っているか調べる

日本語のファイルがプロジェクトに入っているかを調べるのは簡単です。

TARGETS > Build Phases > CopyBundle Resources

まずはここをチェックして日本語のファイルがないか確認します。
watchOSなどiOS以外のターゲットもある場合は全てチェックしてください。

おそらくCopyBundle Resourcesに日本語のファイルがあると思いますが、念の為

TARGETS > Build Phases > Compile Sources

もチェックしておきましょう。

以上で日本語のファイルを探すことができます。

エラー文の全く違うので戸惑う

エラー文の内容と全く違うことが原因でのエラーだったので、解決するのに苦労しました。

日本語のファイルなんて自分じゃ絶対つくらないし、まさかライブラリの中にあるのが原因だなんて、、、

見落としやすいところですが、エラーの対処法をしっかり覚えておいて、次はすぐ直せるようにしよう思います。

皆さんもお気をつけください。

ハマると時間がもったいないので。