AIR 3 Native Extension 13 Try AIR for Android + ANE in Java

前回までで、WindowsとiOSのANEはできました、今回は、ANE を使ってAIR for Androidを拡張します。

1. Java Projectでjar開発準備
EclipseでJavaプロジェクトを作成します。
プロジェクト名は、HelloWorldANEです。

プロジェクトが生成されたら
AIR 3 HOME/lib/android/FlashRuntimeExtensions.jar
をビルドパスに設定します。

準備完了

2. HelloWorldANE.javaクラスを作成
Native Extensionとして登録するクラスは、com.adobe.fre.FREExtensionインターフェイスを実装します。

package net.akb7.android.ane;

import java.util.HashMap;
import java.util.Map;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import com.adobe.fre.FREWrongThreadException;

public class HelloWorldANE implements FREExtension {
    public FREContext createContext(String arg) {
        FREContext context = new FREContext() {
                ...
        };

        return context;
    }

    public void initialize() {
    }

    public void dispose() {
    }
}

コンテキストは、com.adobe.fre.FREContextを実装します。

@Override
FREContext context = new FREContext() {
    @Override
    public Map<String, FREFunction> getFunctions() {
        Log.i("HelloWorldANE$FREContext", "getFunctions");
        HashMap<String, FREFunction> result = new HashMap<String, FREFunction>();
        result.put("SayHello", new FREFunction() {
            ...
        });

        return result;
    }

    @Override
    public void dispose() {
        Log.i("HelloWorldANE$FREContext", "dispose");
    }
};

Netive Extension用の関数は、com.adobe.fre.FREFunctionを実装します。
callの中にロジックを記述します。

new FREFunction() {
    @Override
    public FREObject call(FREContext arg0, FREObject[] arg1) {
        try {
            return FREObject.newObject("Hello World");
        } catch (FREWrongThreadException e) {
            e.printStackTrace();
            return null;
        }
    }
}

3. コンパイルからのJarを作成
Java Projectをクリーンして、右クリックしてエクスポートからJarをエクスポートします。

4. ANE作成
基本的には、ここを参照してください
Windows版とことなるのは、AIR extension descriptor fileです。

initializer/finalizerには、FREExtensionを実装したクラスを指定します。

<extension xmlns="http://ns.adobe.com/air/extension/2.5">
    <id>nativeExtension</id>
    <versionNumber>1.0.0</versionNumber>
    <platforms>
        <platform name="Android-ARM">
            <applicationDeployment>
                <nativeLibrary>HelloWorldANE.jar</nativeLibrary>
                <initializer>FREExtensionを実装したクラス</initializer>
                <finalizer>FREExtensionを実装したクラス</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>

5. AIR for Androidアプリ開発
AIR for AndroidをADTでコマンドラインでコンパイルすればextdirを指定できるので
Windows版と同様にAIR for AndroidでもANEを使えることになります。

government,politics news,politics news,politics
 

タグ: , , ,

コメント / トラックバック2件

  1. [...] 13 Try AIR for Android + ANE in Java   AIR for Androidアプリに組み込むANEをJavaで作る 12 Try Develop Async Event in C   ネイティブスレッドを使った非同期処理+ステータスイベント 11 [...]

  2. [...] AIR 3 Native Extension 13 Try AIR for Android + ANE in Java ? AKABANA 前回までで、WindowsとiOSのANEはできました、今回は、ANEを使ってAIRforAndroidを拡張します。1.JavaProjectでjar開発準備.EclipseでJavaプロジェク [...]