ページへ戻る

− Links

 印刷 

AndroidでのANEの作成​/swcの作成 のバックアップソース(No.6) :: NJF Wiki

xpwiki:AndroidでのANEの作成/swcの作成 のバックアップソース(No.6)

« Prev[5]  Next »[6]
[[AndroidでのANEの作成]]に戻る。

このページは「[[AndroidでのANEの作成/Android側の作成]]」の続きです。

ANEファイルの作成には、ActionScriptで書かれたSWCファイル(正確にはその中の一部も)が必要です。その制作方法をこちらでご紹介します。

*呼び出すクラスの作成 [#b6dde367]

呼び出すクラスは簡単で、以下のようなものになります。

 package jp.njf
 {
 	import flash.external.ExtensionContext;

 	public class ANEAlert
 	{
 		private var context:ExtensionContext;
 		public function ANEAlert()
 		{
 			context = ExtensionContext.createExtensionContext("ANEAlert","");
 		}
 		public function showAlert(title:String,message:String):void{
 			context.call("alert",title,message)
 		}
 		public function dispose():void
 		{
 			return context.dispose();
 		}
 	}
 }

ここで「ANEAlert」という文字列はANEのIDです。ANEを作成するときに必要となります。
createExtensionContextの第二引数は初期化の時にJava側に送られる変数で、JavaのANEAlertFREExtensionクラス内のcreateContextの引数となります。
今回は使用していませんので、空文字列としています。
context.callメソッドは引数の関数IDを用いてJava側のメソッドを呼び出します。

*SWCの作成 [#ocebccfa]

SWCの作成方法ははいろいろとありますが、コマンドラインから行うのが便利です。
なぜなら他のGUIを用いた方法よりパラメーターの変更が容易で、さらに一度メモしておくと他のプロジェクトなどでも使い回ししやすいからです。

そのコマンドは以下のようになります。

 acompc +configname=airmobile -source-path anesrc -output anealert.swc -include-classes jp.njf.ANEAlert -swf-version=33

ここでacompcはAir SDKの「bin」以下にあります。パスを通していない場合はフルパスで書いてください。
次に「-source-path」はソースのあるフォルダです。ここでは「anesrc」を指定しています。
「-output」は出力されるswcの名前です。ここでは「anealert.swc」としています。
「-include-classes」は含まれるクラス名です。ここでは「jp.njf.ANEAlert」を指定しています。
最後に「-swf-version」はswfのバージョンです。
swfのバージョンはAir SDKのリリースノートに記載されています。また、air SDKフォルダ直下の「airsdk.xml」ファイルの中にも一覧があります。

この「-swf-version」はFlashのswfの出力形式で、ANEは最終的に出力されるAirアプリのファイルのswf versionと同じかそれよりも低いバージョンで出力されている必要があります。
そのため、もしリリースするAirのバージョンがswcを作成するSDKより低いときはここをあわせなければなりません。

面倒を避けるにはANEとリリースするときのAir SDKを同じにするようにすると良いでしょう。その時にはこの「-swf-version」の部分は省略してもかまいません。省略すると最新のバージョンが指定されます。

ただし、新しいAir SDKがまだ不安定で、とりあえずANEだけ変えてリリースなどという事もよくあります。そのときはバージョンを気にした方が良いので注意してください。
そのような理由で逆にややしこしくなることもあるので、私が作る時は常にswf versionを明示しています。

*library.swfの取り出し [#mf38faa4]

SWCができたら、ここから実際にANEの作成で必要となる「library.swf」を取り出します。
SWCは実はzipファイルなので、適当なツールで解凍できます。例えば

 unzip anealert.swc

とすると

 catalog.xml
 library.swf

の二つのファイルが出力されます。
必要なのはこのうち「library.swf」と元のSWCファイルだけです。

「だったらlibrary.swfを直接出力するコマンド用意しろよ」とか「SWCからlibrary.swf不要で直接ANE作れるようにしろよ、解凍だけなんだし」とか思うと思いますが、そのあたりはadobeに言ってください。

-[[AndroidでのANEの作成/ANEの作成]]へ続く。
-[[AndroidでのANEの作成]]に戻る。


« Prev[5]  Next »[6]