カテゴリー : 2012年 9月14日

iPhone 5からはarmv7sアーキテクチャ


iOS SDK 6がGMになったんで、過去のプロジェクトを再ビルドしまくっているけど、アーキテクチャにarmv7sが追加になったようだ。

ざっと説明しておくと、アーキテクチャはどのCPU命令セットに対してバイナリを作成するかを指定するもので、初代の頃のiPhoneはarmv6、その後、3GSあたりからarmv7になった。で、どうやらiPhone 5とiPod touch 5th generationからは、armv7sになるらしい。

Xcode 4.5を使うと、armv7とarmv7sのバイナリを作成できる。iPhone 5は、armv7sバイナリだと最高のパフォーマンスを発揮できる。armv7バイナリのみでも、動く。たぶん。でもarmv7sバイナリを用意するのが望ましい。

アーキテクチャの設定は、Xcodeのプロジェクトが、自前のソースコードしか使っていないのであれば、特に気にかける必要はない。でも、どっかからダウンロードしてきたり、他の会社から提供された.aファイルを使っている場合は、とても注意が必要。その.aファイルもarmv7sバイナリを含んでいないと、リンク時にエラーが出る。「file is universal but dose not contain an armv7s slice」って感じの。

そんなときは、アーキテクチャの設定からarmv7sを削除してやる。Xcodeプロジェクトの、ビルド設定で、「Valid Architectures」っていう項目があるので、そこからarmv7sを削除する。

こういうの、サイレントに追加してくるよな。CPUのコアはなんだっていいから、アーキテクチャの方を教えてくれ。