Flex

Native extensions for Adobe AIR with iOS - 2 -

Native extensions for Adobe AIR with iOS



ProcessList.jpg


iPhoneでのNative extensionも試してみました。
Adobe AIRとObjective-C/C/C++で開発が出来ます。

Windows(C#)と比べると、かなり開発はし易いですが、まぁネイティブ側を知っておかないとダメですね。

ane-lab(AIR Native Extension is Lab codes) - Google Project Hosting に作ったサンプルをコミットさせて頂きましたので、参考にして下さい。
間違ってるかもしれないので、決して鵜呑みにしないように。


開発環境
 Xcode4
 Adobe FlashBuilder4.6

サンプルは今現在起動しているアプリケーションの一覧を表示するだけのアプリです。


作るのは3つ。

Cocoa touch static library
Flexライブラリプロジェクト(SWC)
Flexモバイルプロジェクト(iOS AIRアプリ)


FlashBuilderでの作業は基本的にWindows(C#)と変わりませんので、そちらを参照して下さい。
一応コードは貼っておきます。

FlashBuilderを使用して、Flexライブラリプロジェクト(SWC)とFlexモバイルプロジェクト(iOS AIRアプリ)を作成します。

まずはSWCから。


swc.jpg


[  ProcessExtension.as ]
------------------------
package com.chocbanana.iphone{
   
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import flash.events.StatusEvent;
    import flash.external.ExtensionContext;
   
    public class ProcessExtension extends EventDispatcher{
       
        private var _ExtensionContext:ExtensionContext;
       
        public function ProcessExtension(target:IEventDispatcher=null){
            //TODO: implement function
            super(target);
            _ExtensionContext = ExtensionContext.createExtensionContext("com.chocbanana.iphone.ProcessExtension", null);
        }

        public function dispose():void{
            _ExtensionContext.dispose();
        }

        public function getProcessList():Array {
            return _ExtensionContext.call("getProcessList") as Array;
        }
    }
}
[ EOF ]
------------------------


[ descriptor.xml ]
------------------------
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
    <id>com.chocbanana.iphone.ProcessExtension</id>
    <versionNumber>1.0</versionNumber>
    <platforms>
        <platform name="iPhone-ARM">
            <applicationDeployment>
                <nativeLibrary>libProcessListExtension.a</nativeLibrary>
                <initializer>initializer</initializer>
                <finalizer>finalizer</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>
[ EOF ]
------------------------



で、ANEを作成するためのadtコマンドのオプションはこちら。

[ adt-option ]
------------------------
-package -target ane libProcessList_Extension.ane descriptor.xml -swc  libProcessList_Extension.swc -platform iPhone-ARM library.swf  libProcessListExtension.a
------------------------


では、Flexモバイルアプリです。
やり方はWindowsの方とそう大して変わりません。
生成されたaneファイルとswcファイルをプロジェクトに追加しておいて下さい。


flashbuilder.jpg


[ ProcessList.mxml ]
------------------------
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160">
   
    <fx:Script>
        <![CDATA[
            import com.chocbanana.iphone.ProcessExtension;
            import mx.collections.ArrayList;

            [Bindable]
            private var ar:ArrayList = new ArrayList();

            private var ane:ProcessExtension = new ProcessExtension();
           
            protected function btn_getProcess_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                this.ar.removeAll();
                try{
                    var _ar:Array = ane.getProcessList();
                    for(var i:int =0; i<_ar.length; i++){
                        this.ar.addItem(_ar[i]);
                    }
                }catch(e:Error){
                    trace(e.message);
                    trace(e.getStackTrace());
                }
            }
        ]]>
    </fx:Script>
   
    <fx:Declarations>
        <!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
    </fx:Declarations>
    <s:VGroup x="0" y="0" width="100%" height="100%" horizontalAlign="center" verticalAlign="bottom">
        <s:List id="lst_processList" width="100%" height="100%" dataProvider="{ar}"/>
        <s:Button id="btn_getProcess" label="ボタン" click="btn_getProcess_clickHandler(event)"/>
        <s:Spacer width="10" height="10"/>
    </s:VGroup>
</s:Application>

[ EOF ]
------------------------

リリースビルドして、実機にて動作する事を確認して下さい。

お疲れさまでした。

# 証明書やプロビジョニングファイルなどの説明は省いています。
# 各自で調べて下さい。

このページの先頭へ