AdobeAir3.9を使用することで、iOS7向けのアプリを開発することができます。 Flexのコードをそのまま使用できるので、Flashの資産を活用することができます。 Adobeの公式ドキュメントとしては、初めての AIR for iOS アプリケーションの作成がオススメです。

SDKのインストール

AdobeAir3.9でiOS7のアプリを開発するには、Flex4.6とAir3.9をインストールする必要があります。

Flex4.6は http://www.adobe.com/devnet/flex/flex-sdk-download.html からダウンロードします。ダウンロードが終わったら、/Library/flex_4.6など、適当なフォルダに展開します。

Air4.6は http://www.adobe.com/devnet/air/air-sdk-download.html からダウンロードします。目立つリンクではなく、下のリンク(Note: Flex users will need to download the original AIR SDK without the new compiler.)からダウンロードします。ダウンロードが終わったら、展開し、/Library/flex_4.6に上書きします。

MacはWindowsとは異なり、”常に上書きする”を選択すると、フォルダの上書き時に存在しないファイルを消してしまうので、上書きする時のダイアログで、”新しい方を使う”を選択して下さい。

最後に、~/.bash_profileにパスを追加します。

PATH=$PATH:/Library/flex_sdk_4.6_air39/bin
export PATH


これでインストールは完了です。

Air定義ファイルの作成

次のように、Air用の定義ファイルを作成します。[アプリ名]-app.xmlとして保存します。

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/3.9">
    <id>biz.abars.IllustBook</id>
    <versionNumber>1</versionNumber>
    <filename>イラブペイント</filename>
    <description>イラストブック 投稿用画像作成ツール</description>
    <copyright>(C) ABARS 2013</copyright>

    <initialWindow>
        <title>イラブペイント (C)2013 ABARS</title>
        <content>IllustBook.swf</content>
        <systemChrome>standard</systemChrome>
        <transparent>false</transparent>
        <visible>true</visible>
        <aspectRatio>landscape</aspectRatio>
        <autoOrients>false</autoOrients>
    </initialWindow>
    
    [次項を必要に応じて追加]
</application>


iOS用のアイコンを変更するには、iconsフォルダに画像を入れて、以下のように記述を追加します。iOS7から要求されるアイコンサイズが増えているので注意です。

    <icon> 
        <image72x72>icons/icon72.png</image72x72> 
        <image76x76>icons/icon76.png</image76x76> 
        <image144x144>icons/icon144.png</image144x144> 
        <image152x152>icons/icon152.png</image152x152> 
        <image512x512>icons/icon512.png</image512x512> 
    </icon> 


iPadだけで実行できるようにしたり、iOS7だけをターゲットにするような場合は、以下のようにCDATAセクションの記述を追加することで、iOS向けのplistを変更できます。

   <iPhone> 
        <InfoAdditions> 
            <![CDATA[ 
                <key>UIDeviceFamily</key> 
                <array>
                    <string>2</string>
                </array>
                <key>MinimumOSVersion</key>
                <string>7.0</string>
            ]]>
        </InfoAdditions> 
    </iPhone> 


Airアプリのビルドとデバッグ

amxmlcでswfを作成します。Flexのmxmlcの代わりにamxmlcを使うイメージです。

amxmlc -default-size 1024 768 IllustBook.as
作成した定義ファイルでadlコマンドを呼ぶと、PCで実行することができます。

adl IllustBook-app.xml


iOS向けの書き出し

iOS向けの書き出しには、iOS_Team_Provisioning_Profile_.mobileprovisionと、iphone_developer.p12が必要です。これらは、Appleの有料のiOS Developer Programに加入して取得する必要があります。既にiOSアプリの開発者の場合は、キーチェーンアクセスから”自分の証明書”を選択し、書き出しで取得できます。mobileprovisionはiOS Developer CenterのProvision Portalから取得します。

これらを取得できれば、次のコマンドでiOS向けの書き出しが行えます。

adt -package -target ipa-debug -keystore provision/iphone_developer.p12 
-storetype pkcs12 -storepass パスワード
-provisioning-profile provision/iOS_Team_Provisioning_Profile_.mobileprovision 
IllustBook.ipa IllustBook-app.xml IllustBook.swf icons Default-Landscape.png


アイコンを設定する場合、adtコマンドにフォルダを指定しないと、Icon is missing from package エラーが出ます。また、Default-Landscape.pngで、起動画像を設定することもできます。

生成されたipaは、iTunesのライブラリに追加した後、同期することで、実機に転送することができます。

iOS7でステータスバーにコンテンツが重なる

iOS7でAir3.9を使うと、ステータスバーにコンテンツが重なってしまいます。これは、iOS7の仕様で、自分で20px、コンテンツをずらしてやる必要があります。

Air3.2でiOS版が中華フォントになる

Air3.2ではiOS版が中華フォントになってしまいますが、Air3.9では治っています。

マルチタッチに対応する

MultitouchInputMode.GESTUREを使うと簡単です。

動作速度

昔、auのXoomのFlashPlayerでテストした時は、とてもとても遅くて使い物にならなかったのですが、AdobeAir3.9は普通にさくさく動いてびっくりしました。開発効率を考えると、FlexとAirで書いて、PC、iOS、Androidでマルチプラットフォーム展開するのは、結構、ありな気がします。

BZzWu8mCAAEKbbt