Xcode7でアプリを審査に提出するためSubmitした際にITMS-90535が出たときの対処法です。
ネットではいろんな解決法が混在しており、いろいろ試したが半日以上はまってしまったため、自分が解決できた方法をまとめます。
#背景
GoogleMapsSDKforiOSを利用したアプリを開発中、Xcodeを6から7に上げ、iOS9でアーカイブしたipaを「Upload to App Store」すると、以下のようなエラーが出るようになった。
ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'Payload/PgapIos.app/GoogleMaps.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."
要約すると、
想定外のCFBundleExecutableキーが含まれているため、GoogleMapsSDKforiOSのinfo.plistから「CFBundleExecutableキー」を取り除き、「CFBundlePackageType」を「BNDL」にしてや
とのことらしい。Xcode6では出なかったので、Xcode7(iOS9SDK)でアーカイブしたipaファイルでのみ発生するっぽい。
ちなみにGoogleMapsSDKforiOSのinfo.plistは、GoogleMaps.bandleの中にあります。
#試したこと
「info.plistの中から「CFBandleExcutable」という文字を消して、「CFBundlePackageType」を「BNDL」に変更したら解決した!」→ ...が、ダメ...!
いくつかのサイトで、上記のような方法で解決した、という声が上がっていたため、試してみました。Xcodeのエラー文でも同じようなことをいってますし。
ちなみにこれ、試してみると、確かに「ITMS-90535」のエラーは消えました!!...が、これをしてしまうと、なぜか私の場合、iTunesConnectのビルドが「処理中」のまま1日以上経っても終わらない、という現象が起きました。
iTunesConnectのビルドの「処理中」がなかなか終わらない、という話はちょくちょく聞きますが、Xcode6でsubmitするとすぐに反映されるため、上記の対応が影響な様子。実際にこれに関してさらに追加でネットで調べてみると、一部の記事で同じような現象になっている人もいるようでした。
「cocoaPodsで最新のGoogleMapsSDKforiOS入れたらいけたやで〜」→ ...が、ダメ...!
上記のような書き込みも見かけました。使っているGoogleMapsSDKも古くなってきてたのが原因かな?と思ったので、試してみました。が、この場合は、「ITMS-90535」が結局出てしまいました。
#解決した方法
「GoogleMapsSDKforiOSのinfo.plistをXcodeで開き、以下の変更を行う
- 「Executable file」を右クリックで「Cut」する
- 「Bundle OS Type code」の「Value」が「BNDL」になっていることを確認する
上記の変更を加えると、「ITMS-90535」も出ず、かつiTunesConnectでも「処理中」がすぐ終わり、無事審査に出せるようになりました。