32bit/64bit同梱ファットバイナリだとAppStoreからのリリースバイナリのみiOS6で起動できなくなる問題について

iOS7がリリースされた頃にアップルから下記の様なアナウンスが出されていました。

Submitting 64-bit apps

内容としては「現状ファットバイナリで提出する場合はiOS7のみ対応にしてね。来月にはiOS6でもちゃんと動くようにするからね(意訳)」と言うことだったのですが、この時点でもiOS6を対応OSに含めたファットバイナリはサブミット出来ていました。
しかし、その状態のバイナリはリリースされてもiOS6では起動しないという大きな罠があったようです。

逆に言うとこの様な問題があったから上記のアナウンスをしたということなのだと思います。

結果としてファットバイナリでサブミットするにはiOS7専用にする必要があったのです。
しかもこれはアップル側の問題なので開発者側ではどうにも出来ないという…

[do_widget “スマホとPCを分けて表示”]

解決するには?

多くの開発者にとってはこの問題が解決されるまでは32bitバイナリのみでサブミットしておけば良い話です。
しかし、カメラアプリ特に「顔認識API」を使用している開発者にとっては大きな問題でした。

というのも32bitバイナリのアプリをiPhone5sやiPad Air、iPad mini retinaなど64bitアーキテクチャ端末で動かすと下記の様なエラーを吐いて顔認識が失敗してしまうのです。
SS2013 11 06 20 03 43

この問題があり私のカメラアプリやMagicReaderも64bit端末では顔認識が正しく動かない状態になっていました。
また、この問題に気がついていない開発者も多いようで、顔認識を使ったアプリでiPhone5sなどでは正常動作しなくなってしまっているものをよく見かけます。

64bitバイナリを用意すれば解決できるのですが、先の問題のせいでiOS7専用になってしまうのです。
もうしばらくすればiOS7専用でも問題無いかもしれませんが、今はまだiOS6も対応に含めたいところです…

冒頭のアナウンスが出されたのが9月のことでその中で「来月対応」と言っていたのでもう解決されているかと思い調べてみました。

しかし、特に追加のアナウンスは出ておらず、唯一見つけられたのは下記のドキュメントだけでした。

About 64-Bit Cocoa Touch Apps(※閲覧には開発者アカウントが必要になります。)

このドキュメントの日付が10月22日なのでもしかしたら解決済みなのかなと思って、iOS6以降対応ファットバイナリをサブミットしてみました。

無事リリースされ確認したところ、32bit、64bit両対応リリースバイナリーがiOS6、iOS7両方で問題無く動作いたしました。
iPhone5sなど64bit機でも問題無く顔認識動作し、また同一バイナリーでiPhone5以前の32bit機でも動作・顔認識共に問題無いことを確認しました。

広告SDKに関して

ここでもうひとつ問題があります。
無料アプリ+広告という形でアプリをリリースしている開発者にとっては無くてはならない各アドネットワークのSDKですが32bit/64bit同梱ファットバイナリで提供されている物があまりないため上記の方法で解決した場合は使用できるアドネットワークが限られてしまいます。

私の場合はバナー広告、アイコン広告はadfurikunを通して表示しています。
インタースティシャル広告はAIDさんを使用しています。
このふたつは早期に32bit/64bit同梱ファットバイナリに対応したSDKを提供して下さり大変助かりました。

あとひとつウォール広告ですが現在の所ファットバイナリのSDKを公開しているアドネットワークは見つけられませんでした。
しかし先日ウォール広告を始めたアスタさんが近々対応予定とのことですので楽しみにしています。

以上ちょっとまえにTwitter上で話題になっていたので、まとめてみました。

追記(12月12日午後9時18分)

Xcode 5.0.1のリリースノートに「iOS 6 (32-bit) and iOS 7 (32-bit and 64-bit) binaries build with a single build target.」という表記があるとの情報を頂きました。

New Features in Xcode 5

Xcode 5.0.1のリリース日が10月23日だったので、前記のドキュメントの日付(10月22日)と同期しています。
どうやらXcode 5.0.1の段階で上記の問題は解決していたものと思われます。
情報ありがとうございました。

Comments are closed.