XCode7.0でArchiveを作ったらERROR ITMS-90535

ゆう@あんのうんです。

iOS9対応の為、XCode7.0でArchiveを作った際に、ITMS-90535エラーとか出てきて、今まで見たことの無いエラーだったので、その時対応したメモ。

エラーの内容

エラー内容は以下の通り

ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'Payload/XXXX.app/YYYY.bundle' does not contain a bundle executable. If this bundle intentionally does not contain an executable, consider removing the CFBundleExecutable key from its Info.plist and using a CFBundlePackageType of BNDL. If this bundle is part of a third-party framework, consider contacting the developer of the framework for an update to address this issue."

XXXXにはアプリのbundle名、
YYYYにはアプリで利用しているbundleのファイル名が入ります。

アプリの構成について説明

その時手がけていたアプリは、OSSを利用しており、そのOSSが利用しているbundleでこのエラーが発生していた。

考察、推測

見た感じbundleを起動する為のKeyが無いとかかんとか言っている。。が、XCode6では問題無くArchive出来たのに、XCode7でArchiveするとエラーが起きる…。

また、似たようにbundleを利用している他のOSSでは同様の問題が発生していなかったので更に意味不明。

以下は完全に原因の推測です。調査していてこれが原因じゃないかなー?ってのを書いています。

問題が発生したOSSの場合、OSSのプロジェクト名と、bundle名が異なっており、bundleを実行する際のkeyがプロジェクト名になっていたから、差異が発生してエラーになった(かも)

対応方法1 エラー文の通りの対応を行う

エラー文に記載されている通り、info.plistを編集して対応します。
私がこの問題に出くわした際に、対応したのはこちら(OSSなので、下手にOSSを弄ることが出来なかった為。)

info.plistでCFBundlePackageTypeを探し(表示は違う名前になっているので検索で探すと確実です)、その設定自体を削除してしまう。

これで当該エラーは出なくなりました。

対応方法2 自前で作ったbundleの場合

推測に記載した通りの原因であれば、、、の解決方法で試したわけではありません

自前で作ったbundleの場合は、bundleのプロジェクト名とbundleのファイル名とを同一にしてしまえば、問題が解決しそうな気が…します。(やってないのでなんともいえませんが)