c#

C# で作る AIR Native Extension - 3 -

C# で作る AIR Native Extension


Adobe AIR3 から ANE という ネイティブ拡張機能が実装されたのでWindowsで試してみました。

全部で4ページにまとめます。

今回はその3ページ目、あと一息です。


開発環境
 Windows XP SP3
 Visual Studio 2010 Express Edition( C# / VC++ )
 FlashBuilder4.6( FlexSDK4.6 )


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



3.FlashBuilder でSWCとAIRアプリを作るよ!


FlashBuilder4.6使用して、Flexライブラリ(SWC)とFlexデスクトップアプリケーション(AIR)を作成していきます。
2つ同時に作業した方が分かりやすいかもしれません。

これで、SWCからadtコマンドでANEファイルを生成し、ネイティブな処理を呼び出せるようになります。


ではまずAIRアプリのレイアウト及び、証明書の作成から。
先に証明書を作成しておかないと、SWCを作るときにメンドイのです。

画面レイアウトと、証明書が出来たらSWC(Flexライブラリ)を作ります。


air-app-layout.png




air-app-syomeisyo.png




Flexライブラリプロジェクトを作りましょう。

プロジェクトのプロパティ設定で、[ Flexライブラリコンパイラー ] -> [ Aodbe AIRライブラリを含める ] のチェックがONになっていることを確認して下さい。

binディレクトリに VC++で作成したDLLと、先程作ったFlexアプリの証明書を入れておきます。

次に、srcディレクトリに ASのパッケージと、assetsディレクトリ。assetsディレクトリ内にdescriptor.xmlを作成します。

内容は以下の通りで。

[ assets/descriptor.xml ]
------------------------
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
    <id>com.chocbanana.win.ApplicationListExtension</id>
    <versionNumber>1.0</versionNumber>
    <platforms>
        <platform name="Windows-x86">
            <applicationDeployment>
                <nativeLibrary>libApplicationList.dll</nativeLibrary>
                <initializer>initializer</initializer>
                <finalizer>finalizer</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>
[ EOF ]
------------------------

このXMLファイルが書けたら、binディレクトリにコピーしておいて下さい。



[ com.chocbanana.win.ApplicationListExtension.as ]
------------------------
package com.chocbanana.win{
   
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;
    import flash.events.StatusEvent;
    import flash.external.ExtensionContext;
   
    public class ApplicationListExtension extends EventDispatcher {

        private var _ExtensionContext:ExtensionContext;
       
        public function ApplicationListExtension(target:IEventDispatcher=null) {
            //TODO: implement function
            super(target);
            _ExtensionContext = ExtensionContext.createExtensionContext("com.chocbanana.win.ApplicationListExtension", null);
        }

        public function dispose():void{
            _ExtensionContext.dispose();
        }
        public function getApplicationList():Array {
            return _ExtensionContext.call("GetApplicationList") as Array;
        }
    }
}
[ EOF ]
------------------------

ASファイル内で、FREのContextを作成し、callメソッドで、DLLの関数を呼びます。
戻り値はFREObectで指定した戻り値の型ですね。

で、これのビルドを行うとSWCファイルが出来ると思います。

SWCファイルが出来たら、それをそのまま選択して、右クリック、コピーして貼り付けして下さい。
名前の拡張子をzipにします。

そのzipファイルをダブルクリックして、解凍すると、中にlibrary.swfファイルがあるので、それもbinディレクトリに含めます。
解凍したzipファイルと、フォルダは要らないので、削除しておいて下さい。



air-swc-package.png




ここから、ADTコマンドを使って、ANEファイルを作ります。
FlashBuilderの [ 実行 ] -> [ 外部ツール ] -> [ 外部ツールの構成 ] を選択して、以下の様に。


air-adt-command.png





[ ADTコマンドの引数(改行は挟まず、スペースで) ]
------------------------
-package -storetype pkcs12 -keystore test.p12 -target ane libApplicationList_Extension.ane descriptor.xml -swc  libApplicationList_Extension.swc -platform Windows-x86 library.swf  libApplicationList.dll
------------------------

実行すると証明書のパスワードを聞いてくるので、入力してEnter。
libApplicationList_Extension.aneファイルがbinディレクトリに生成されます。

生成されたANEファイルをコピーして、AIRアプリのlibsディレクトリにコピーして下さい。

ひとまずはココまで。
次回はAIRアプリの仕上げです。

このページの先頭へ