Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、2

By | 2011年12月1日

Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。
前回は準備と流れの紹介でした。今回はaneファイルのパッケージ化部分の紹介です。

●jar作成

EclipseでJavaプロジェクトを作成します。
もうこちらの記事の内容がそのままズバリです。
AIR 3 Native Extension 13 Try AIR for Android + ANE in Java -AKABANA
こちらの記事の、「3. コンパイルからのJarを作成」までがjar作成の流れになります。
コード中の”SayHello”がFlashからswcを通して呼ぶ関数名として機能します。

●extension.xml作成

この拡張の説明になるファイルで、下の様な形です。

<extension xmlns="http://ns.adobe.com/air/extension/2.5">
    <id>拡張名。一意に決まるもの</id>
    <versionNumber>1.0.0</versionNumber>
    <platforms>
        <platform name="Android-ARM">
        	<applicationDeployment>
                <nativeLibrary>jarファイルのパス</nativeLibrary>
                <initializer>jar内のメインとなるクラス</initializer>
                <finalizer>jar内のメインとなるクラス</finalizer>
            </applicationDeployment>
        </platform>
    </platforms>
</extension>

私が作ったサンプルで言うと、
idタグは「com.cda244.helloworldane.HelloWorldANE」
nativeLibraryタグは「helloane.jar」 (全て同階層に作ったので)
initializer、finalizerタグはどちらも「com.cda244.helloworldane.HelloWorldANE」
です。

●swc作成(ドキュメントクラス作成)

ネイティブとやり取りする時の窓口になります。ここでやっとFlashをさわります。
library.flaを作成し、プレイヤーバージョンはAIR2.6(前回の事前準備で3または3.1になっている)を指定します。

次に、ドキュメントクラスを以下の様に作成します。

package com.cda244.helloworldane
{
	
	import flash.display.*;
	import flash.external.ExtensionContext;
	
	public class HelloWorldANE extends MovieClip
	{
		
		private var context:ExtensionContext;
		
		public function HelloWorldANE()
		{
			//extension.xmlのidタグに指定したクラス名でNative Extensionのコンテキストを取得
			context = ExtensionContext.createExtensionContext("com.cda244.helloworldane.HelloWorldANE", null);
		}
		
		public function callSayHello():String
		{
			//コンテキスト内にSayHelloという名前で登録されている関数を呼ぶ。
			var res:String = context.call( "SayHello" ) as String;
			return res;
		}
		
	}
}

パッケージはextension.xmlのidタグと合わてあります。
Flashからは、callSayHello() を通してネイティブ拡張内の SayHello 関数を呼ぶ事になります。

●swc作成(swc書き出し)

パブリッシュ設定を開いて、SWCの書き出しにチェックを入れます。
aneをパッケージする際、swfも必要になるので、swfもチェック状態のままにして書き出します。
library.swfとlibrary.swcが書き出されます。

●aneファイルのパッケージ化

コマンドライン上で以下のコマンドを入力します。
長いので改行してますが1行です。「」内は適宜書き換えてください。
adt -package -storetype pkcs12
-keystore 「証明書(.p12ファイル)」
-target ane 「aneファイル名」 extension.xml
-swc library.swc
-platform Android-ARM library.swf 「jarファイル」

あとは証明書に設定したパスワードを入力すると指定したファイル名でaneファイルが書き出されます。
フォルダ構造は以下の様な状態です。
classesフォルダにはlibrary.swfのドキュメントクラス(HelloWorldANE.as)が入っています。

aneファイル作成時のフォルダ

aneファイル作成時のフォルダ


次回でラスト、本体になるswf(というかAIR)を作成後、apkにパッケージして端末にインストールします。

2 thoughts on “Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、2

  1. Pingback: Android環境のANEにゼロから取り組んでみる、1 | cda244 blog

  2. Pingback: Android環境のANEにゼロから取り組んでみる、3 | cda244 blog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です