先週発売が開始された新しい iPad には 1920x1500 2048x1536 の解像度を持つディスプレイが搭載されています。ピクセル数だけ見るとやや比率は異なるものの、従来の iPad の 1024×768 の画面用に作られたコンテンツはそのまま新しい iPad 上でも利用できるようです。
ところで、新しい解像度に合わせてアプリを作り直すには、iOS 5.1 SDK の利用が必須とされています。現状、AIR SDK から iOS 向けに書き出すと iOS 4.2 向けのアプリとなるため、そのままだと各ピクセルが拡大されて表示される状態になります。Retina の解像度は利用できません。
AIR 3.2 でこの辺りがどうなるかは不明ですが、OS X 限定ながら、既に AIR 3.1 でも Retina 対応できる手段が提供されています。今回は、AIR アプリから iOS 5.1 SDK を利用する方法のご紹介です。
iOS 限定:外部ライブラリの指定
AIR 3.1 から、ANE 導入の一環として、コンパイル時に外部 SDK を指定する -platformsdk オプションが追加されています。これは、AIR アプリから iOS の最新機能を利用できるようにするためのものです。他の OS ではいまのところ利用できません。
Mac 環境であれば、最新の XCode をインストールすると、iOS 5.1 の SDK が付いてきます。ファイルの場所は /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/ です。
なので、この SDK へのパスを追加して IPA をパッケージすればよいわけです。例えば下のような感じです。
adt -package -target ipa-app-store -provisioning-profile MY_PROVISIONING_PROFILE -storetype pkcs12 -keystore MY_KEYSTORE_FILE -storepass MY_STORE_PASSWORD myApp.ipa myApp-app.xml myApp.swf -platformsdk /Applications/Xcode.app/Contents/Developer/Platforms /iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/
その際、アプリケーション記述ファイルには、Retina 用のアイコン指定と、高解像度を利用するための宣言を追加します。
<icon> ... <image114x114>icons/icon_114.png</image114x114> </icon> ... <iPhone> ... <requestedDisplayResolution>high</requestedDisplayResolution> </iPhone>
以上で、iOS 5.1 SDK の新機能を使った AIR アプリケーションを開発できます。
注:この機能は、AIR 2.5 の名前空間が指定されていると使えません。
iOS 限定:ANE とリンクするライブラリの指定
Retina 以外にも iOS 5.0 以降の新機能が使いたい場合は、ANE として実装することになります。しかし、iOS 4.2 の後にに追加されたフレームワークは、パッケージの際にリンクの対象となりません。
(標準でリンクされるフレームワークの種類については iOS ネイティブライブラリ を参照)
そこで、AIR 3.1 では、ANE に必要なフレームワーク等のリンクオプションを指定できるように、-platformoptions フラグが追加されました。フラグの後には、ADT に必要な情報を記述した XML ファイルを指定します。
下は ANE をパッケージするコマンドラインの例です。
adt -package -target ane myExtension.ane extension.xml -swc mySwc.swc -platform iPhone-ARM library.swf libmylib.a -platformoptions myplatformoptions.xml
-platformoptions で指定するファイル内には、標準でリンクされるライブラリを除く、全てのリンク情報を記述します。ファイルの構造は以下のようになっています。
<platform xmlns="http://ns.adobe.com/air/extension/3.1"> <sdkVersion>5.1</sdkVersion> <linkerOptions> <!-- Twitter フレームワークを利用する --> <option>-framework Twitter</option> <!-- libiconv.dylib をリンクする --> <option>-liconv</option> </linkerOptions> </platform>
いつも情報ありがとうございます!
新しい iPad の解像度は 2,048 × 1,536 なので、従来と同じアスペクト比のようです。
http://www.apple.com/jp/ipad/specs/
匿名さん
ご指摘ありがとうございました。
早速記事を修正しておきました。