.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.14 2010

iPhoneSDKとアーキテクチャ

Tasakiです。

今回はアーキテクチャの話をしようと思います。というのも、そろそろこの辺に意味が出てきそうだから、なのですが…

Xcode上でターゲットを切り替える際のドロップダウンリストにアクティブアーキテクチャなるものが見受けられます。
通常ここを触ることはほとんど無い訳ですが、iPhoneOS向けのバイナリは、ネイティブコードですので、当然プロセッサ(CPU)に大きく依存することになります。

アクティブアーキテクチャとは、ターゲットと同様に、このビルドによって生成するバイナリは何に対してのものなのかを決定する要素ということになります。

iPhoneやiPod touchには、ARM社のプロセッサが使われているわけですが、ここには、世代間の違いがありまして、
iPhone 3G や iPod touch (第2世代)には、バージョン6
iPhone 3GS や iPod touch (第3世代)には、バージョン7(Cortex)
に相当するアーキテクチャを採用したプロセッサが搭載されています。(参考リンク)
また、iPadには、Apple A4というカスタムチップが搭載されています。Xcodeでは、こうしたアーキテクチャの違いをどのように吸収しているのでしょうか。

iPhoneSDK3.2では、プロジェクト作成時にiPhone向け、iPad向け、両方に対応したユニバーサルアプリの3種類の
アプリケーションを作成できます。
このとき、それぞれのプロジェクト内で、アーキテクチャがどのように扱われているかを確認してみました。

まず、メニューバーから、プロジェクト>アクティブターゲット"xxx"を編集を選択し、ビルドタブを選択します。
ここで、アーキテクチャのセクションを見てみると、定義されたアーキテクチャが確認できます。

iPhone向けの場合は、
3.2foriPhone
3G向けアーキテクチャですが、基本的にはコードに互換性があるので全てのiPhoneに対応するということでしょう。(ビルド設定を変更してしまった場合はこの限りではありません)

iPad向けの場合は、
3.2foriPad
デバイスに依存するコードが含まれるのでしょう。シミュレータと実機で明確に区別がされています。ここから見ても、Apple A4はARMv7アーキテクチャ互換のプロセッサであることが分かります。

ユニバーサルの場合は、
3.2forUniversal
この設定では、armv6とarmv7の双方に向けたビルドが行われます。当然全てのコードを2度コンパイルするので、エラーや警告も原則的に2倍になります。(ついでにコンパイル時間も増えます......)

もし、SDK3.1.3以前で作成した既存のプロジェクトをユニバーサルプロジェクトに変更する必要がある場合には、この点に注意が必要になります。

既存のプロジェクトの場合は、こうなっています。
3.1.3
Standard(armv6)と書かれた部分をクリックすると、
3.1.3b
このようにリストが表示されますので、Optimized(armv6 armv7)を選択します。
これで、実機ビルドに時間がかかるようになったら、成功です。

最初にも言いましたが、iPadも発売され、OS4では端末によってサポートされる機能が異なってきますので、この辺りの設定も今後、必要になってきそうな気がします。


関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/109-9e49e8d0

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。