ネイティブ拡張をアプリケーション開発者に提供するには、関連するすべてのファイルを 1 つの ANE ファイルにパッケージ化します。ANE ファイルは、以下を含むアーカイブファイルです。
-
拡張の ActionScript ライブラリ
-
拡張のネイティブコードライブラリ
-
拡張記述ファイル
-
拡張の証明書
-
拡張のリソース(画像など)
ANE ファイルを作成するには AIR 開発ツール(ADT)を使用します。ADT の詳細なドキュメントは、「
AIR 開発ツール
」にあります。
ADT による拡張のパッケージ化の例
以下の例では、ADT を使用して ANE ファイルをパッケージ化する方法を説明します。この例では、次のデバイス上で動作するアプリケーションで使用するための ANE ファイルをパッケージ化します。
adt -package <signing options> -target ane MyExtension.ane MyExt.xml -swc MyExtension.swc -platform Android-ARM -C platform/Android .
-platform Android-x86 -C platform/Android-x86 .
-platform iPhone-ARM -platformoptions platform.xml
abc/x.framework lib.o -C platform/ios .
-platform iPhone-x86 -C platform/iosSimulator
-platform default -C platform/default library.swf
この例では、次のコマンドラインオプションを使用して ANE パッケージを作成します。
-
<signing options>
オプションで、ANE ファイルに署名することもできます。詳しくは、
ネイティブ拡張の署名済み証明書の作成
を参照してください。
-
-target ane
-target
フラグでは、作成するパッケージのタイプを指定します。
ane
ターゲットを使用すると、ネイティブ拡張がパッケージ化されます。
-
MyExtension.ane
作成するパッケージファイルの名前を指定します。ファイル名拡張子は .ane を使用します。
-
MyExt.xml
拡張記述ファイルを指定します。このファイルでは、拡張 ID とサポートされているプラットフォームを指定します。AIR では、この情報を使用して、アプリケーションに対応する拡張を特定し、ロードします。この例では、拡張記述ファイルは次のようになります。
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
<id>com.sample.ext.MyExtension</id>
<versionNumber>0.0.1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>MyExtension.jar</nativeLibrary>
<initializer>com.sample.ext.MyExtension</initializer>
</applicationDeployment>
</platform>
<platform name="Android-x86">
<applicationDeployment>
<nativeLibrary>MyExtension.jar</nativeLibrary>
<initializer>com.sample.ext.MyExtension</initializer>
</applicationDeployment>
</platform>
<platform name="iPhone-ARM">
<applicationDeployment>
<nativeLibrary>MyExtension.a</nativeLibrary>
<initializer>InitMyExtension></initializer>
</applicationDeployment>
</platform>
<platform name="iPhone-x86">
<applicationDeployment>
<nativeLibrary>MyExtension.a</nativeLibrary>
<initializer>InitMyExtension></initializer>
</applicationDeployment>
</platform>
<platform name="default">
<applicationDeployment/>
</platform>
</platforms>
</extension>
詳しくは、
ネイティブ拡張記述ファイル
を参照してください。
-
MyExtension.swc
拡張の ActionScript 側を含む SWC ファイルを指定します。
-
-platform Android-ARM -C platform/Android . -platform Android-x86 -C platform/Android-x86 .-platform iPhone-ARM -platformoptions platform.xml-Cplatform/iOS.
-platform
フラグでは、この ANE ファイルがサポートするプラットフォームの名前を指定します。名前の後のオプションでは、プラットフォーム固有のライブラリとリソースの場所を指定します。この場合、
Android-ARM
プラットフォームの
-C
オプションは、相対ディレクトリ
platform/Android
を作業ディレクトリにすることを示します。プラットフォーム固有のディレクトリとファイルは、新しい作業ディレクトリに対して相対的な位置に存在することになります。
つまり、この例では、相対ディレクトリ
platform/Android
には、Android のネイティブコードライブラリとリソースがすべて含まれます。また、Android プラットフォーム固有の library.swf ファイルおよびその他の Android プラットフォーム固有の SWF ファイルも含まれます。
iPhone-ARM プラットフォーム用の
-platformoptions
フラグは、プラットフォーム固有のオプションを指定する場合に使用するオプションの項目です。これらのオプションは、iOS フレームワーク(デフォルトのフレームワーク以外)へのリンクや、サードパーティの静的ライブラリとネイティブ拡張のバンドルに関するオプションを含みます。
iOS ネイティブライブラリ
を参照してください。
-
-platform default -C platform/default library.swf
-platform
オプションで
default
プラットフォームを指定するときは、ネイティブコードファイルは指定しないでください。library.swf ファイルと、その他の SWF ファイル(存在する場合)のみを指定してください。
ANE パッケージ内の SWC ファイルと SWF ファイル
SWC ファイルは、ADT パッケージコマンドの
-swc
オプションで指定します。この SWC ファイルは ActionScript ライブラリです。これには library.swf というファイルが含まれています。ADT では、library.swf を SWC ファイルから ANE ファイルに配置します。ネイティブ拡張を使用している AIR アプリケーションでは、コンパイルが可能なように、拡張の ANE ファイルがライブラリパスに含まれています。実際には、アプリケーションでは、library.swf 内のパブリックインターフェイスに対するコンパイルが行われます。
ターゲットプラットフォームごとに別々の ActionScript 実装を作成する場合もあります。その場合は、各プラットフォームの SWC ファイルをコンパイルし、各 SWC ファイルに含まれる library.swf ファイルを適切なプラットフォームディレクトリに配置してから、ADT パッケージ化コマンドを使用します。library.swf は、WinZip などの解凍ツールを使用して SWC ファイルから抽出できます。
例えば、作成する拡張のパブリックインターフェイスがどのプラットフォーム用もすべて同じであるとします。その場合、ADT コマンドの
-swc
オプションで指定する、プラットフォームに特有の SWC ファイルは、どのプラットフォーム用でもかまいません。SWC ファイルに含まれている SWF ファイルはアプリケーションのコンパイルにのみ使用されるものだからです。ネイティブ拡張の実行時に使用されるのは、プラットフォームディレクトリに配置した SWF ファイルです。
library.swf ファイルの注意事項は次のとおりです。
-
ADT では、プラットフォームごとに library.swf という名前のメインの SWF ファイルを指定する必要があります。SWC ファイルを作成すると、library.swf がその SWF ファイルの名前となります。
-
library.swf ファイルは、プラットフォームごとに異なる場合があります。
-
ActionScript 側にプラットフォームの依存関係がない場合は、各プラットフォームの library.swf を同じにすることもできます。
-
各プラットフォームの library.swf では、プラットフォーム固有のディレクトリに含めた他の SWF ファイルをロードすることができます。この場合の他の SWF ファイルは、どのような名前でもかまいません。
アプリケーションのパッケージ化に関する ANE ファイルのルール
ネイティブ拡張を使用するアプリケーションをパッケージ化するには、ADT を使用します。拡張を使用するアプリケーションをパッケージ化する際に、アプリケーションのパッケージ化ターゲットと一致するプラットフォームが ANE ファイル内で指定されているかどうかが、ADT によって検証されます。例えば、プラットフォーム
Android-ARM
は、Android apk パッケージと照合されます。
また、ADT では、
default
プラットフォームが任意のターゲットパッケージと照合されます。
default
プラットフォームは、ActionScript 専用の拡張を指定します。アプリケーションバンドル拡張を使用する AIR アプリケーションについて考えてみます。AIR では、拡張で指定されているプラットフォームの中にデバイスと対応するものがない場合にのみ、
default
プラットフォーム拡張の ActionScript ライブラリをロードします。
例えば、
iPhone-ARM
、
Android-ARM
および
default
の各プラットフォームを指定しているアプリケーションバンドル拡張について考えてみます。この拡張を使用しているアプリケーションを Windows プラットフォーム上で実行した場合、拡張の
default
プラットフォームライブラリが使用されます。
したがって、アプリケーションバンドル用に ANE ファイルを作成する場合は、ANE ファイルを使用するアプリケーションをパッケージ化するときに ADT で使用される次のルールを考慮してください。
-
Android アプリケーションパッケージを作成するには、ANE ファイルに
Android-ARM
プラットフォームを含める必要があります。または、ANE ファイルに default プラットフォームとその他のプラットフォームを 1 つ以上含める必要があります。
-
iOS アプリケーションパッケージを作成するには、ANE ファイルに
iPhone-ARM
プラットフォームを含める必要があります。または、ANE ファイルに default プラットフォームとその他のプラットフォームを 1 つ以上含める必要があります。
-
iOS シミュレーターアプリケーションパッケージを作成するには、ANE ファイルに
iPhone-x86
プラットフォームを含める必要があります。または、ANE ファイルに default プラットフォームとその他のプラットフォームを 1 つ以上含める必要があります。
-
Mac OS X アプリケーションパッケージを作成するには、ANE ファイルに
MacOS-x86-64
プラットフォームを含める必要があります。または、ANE ファイルに default プラットフォームとその他のプラットフォームを 1 つ以上含める必要があります。
-
Windows アプリケーションパッケージを作成するには、ANE ファイルに
Windows-x86
プラットフォームを含める必要があります。または、ANE ファイルに default プラットフォームとその他のプラットフォームを 1 つ以上含める必要があります。
アプリケーションには 1 つのプラットフォーム実装しかバンドルされませんが、ADL ユーティリティを使用して拡張を含むアプリケーションをテストする際には、実装が実行時に選択されます。このように実行時に選択されることから、テストプラットフォームおよび ANE パッケージによって動作が異なることがあります。例えば、ANE に
Android-ARM
、
Windows-x86
および
default
のプラットフォームの実装が含まれている場合、テストコンピューターが Windows を実行しているか Mac OS X を実行しているかによってテスト時に使用される実装が異なります。Windows では、
Windows-x86
プラットフォーム実装が使用されます(これは、モバイルプロファイルでテストする場合も当てはまります)。Mac OS X では、
default
実装が使用されます。
ANE パッケージに追加の Android .so 共有ライブラリを含める
プラットフォーム
Android-ARM
をターゲットとするネイティブ拡張について考えます。拡張のネイティブ側の主要ライブラリは次のいずれかになります。
ただし、場合によっては、拡張用の主要な .so ライブラリまたは JAR ファイル以外にも、追加のネイティブライブラリ(.so ライブラリ)がネイティブ側に必要となることがあります。
次に、例を示します。
この ANE パッケージを作成するときは、次のディレクトリ構造を使用します。
<Android platform directory>/
libs/
armeabi/
<Android emulator native libraries>
armeabi-v7a/
<Android device native libraries>
ADT を使用してこの ANE パッケージを作成するときは、Android プラットフォームディレクトリのコンテンツを指定するように
-platform
オプションを設定します。
-platform Android-ARM -C <Android platform directory> .
アプリケーション開発者が ADT を使用して ANE パッケージを APK パッケージに取り込むと、APK パッケージには次のライブラリが含まれます。
注意:
iPhone-ARM プラットフォームの場合は、共有ライブラリを ANE ファイルに含めることはできません。詳しくは、
ネイティブライブラリの構築
を参照してください。
|
|
|