ネイティブ拡張記述ファイル

拡張記述ファイルは、ネイティブ拡張パッケージのコンテンツについて記述するものです。

拡張記述ファイルの例

以下に示した拡張記述ドキュメントの例では、次のものに対応するネイティブ拡張が記述されています。

  • Android デバイス

  • その他のプラットフォーム向けの default ActionScript 実装

<extension xmlns="http://ns.adobe.com/air/extension/3.1"> 
    <id>com.example.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 name="default"> 
            <applicationDeployment/> 
        </platform> 
    </platforms> 
</extension>

拡張記述ファイルの構造

拡張記述ファイルは、次の構造を持つ XML ドキュメントです。

<extension xmlns="http://ns.adobe.com/air/extension/2.5"> 
    <id>...</id> 
    <versionNumber>...</versionNumber> 
    <name> 
        <text xml:lang="language_code">...</text> 
    </name> 
    <description> 
        <text xml:lang="language_code">...</text> 
    </description> 
    <platforms> 
        <platform name="device"> 
            <applicationDeployment> 
                <nativeLibrary>...</nativeLibrary> 
                <initializer>...</initializer> 
                <finalizer>...</finalizer> 
            </applicationDeployment> 
        </platform> 
        <platform name="device"> 
            <deviceDeployment/> 
        <platform name="default"> 
            <applicationDeployment/> 
    </platforms> 
</extension>

ネイティブ拡張記述エレメント

以下のエレメントの辞書では、AIR アプリケーション記述ファイルの有効なエレメントについて説明します。

applicationDeployment

拡張パッケージ内に含まれ、その結果アプリケーションと共にデプロイされる、ネイティブコードライブラリを宣言します。

platform エレメントごとに、applicationDeployment エレメントまたは deviceDeployment エレメントのいずれかを含める必要があります。ただし、両方は含めないでください。

親エレメント:platform

子エレメント:

コンテンツ

ネイティブコードライブラリ、初期化関数およびファイナライズ処理関数を指定します。プラットフォーム名が default の場合、applicationDeployment エレメントには子エレメントはありません。これは、default プラットフォームにネイティブコードライブラリがないからです。

<applicationDeployment> 
    <nativeLibrary>myExtension.so</nativeLibrary> 
    <initializer>com.example.extension.Initializer</initializer> 
    <finalizer>com.example.extension.Finalizer</finalizer> 
</applicationDeployment> 

copyright

拡張の著作権に関する宣言。

親エレメント:extension

子エレメント:なし

コンテンツ

著作権情報を含む文字列。

<copyright>© 2010, Examples, Inc. All rights reserved.</copyright>

description

拡張の記述。

親エレメント:extension

子エレメント:text

コンテンツ

単純なテキストノードか、複数の text エレメントを使用します。

複数の text エレメントを使用すると、description エレメントで複数の言語を指定できます。各テキストエレメントの xml:lang 属性は、RFC4646(http://www.ietf.org/rfc/rfc4646.txt)に定義された言語コードを指定します。

単純な text ノードを使用する記述:

<description>This is a sample native extension for Adobe AIR.</description> 

英語、フランス語およびスペイン語でローカライズされた text エレメントを使用する記述:

<description> 
    <text xml:lang="en">This is a example.</text> 
    <text xml:lang="fr">C'est un exemple.</text> 
    <text xml:lang="es">Esto es un ejemplo.</text> 
</description> 

deviceDeployment

コードライブラリがデバイス上に個別にデプロイされ、この拡張パッケージには含まれないネイティブ拡張を宣言します。

デバイスのデプロイは一部のプラットフォームではサポートされていません。

platform エレメントごとに、applicationDeployment エレメントまたは deviceDeployment エレメントのいずれかを含める必要があります。ただし、両方は含めないでください。

親エレメント:platform

子エレメント:なし

コンテンツ

なし。deviceDeployment エレメントは空である必要があります。

<deviceDeployment/> 

extension

拡張記述ドキュメントのルートエレメント。

親エレメント:なし

コンテンツ

サポートされるプラットフォームと、プラットフォームごとのコードライブラリを指定します。

extension エレメントには、xmlns という名前空間属性が含まれています。xmlns 値には、次の値のいずれか 1 つを指定できます。

xmlns="http://ns.adobe.com/air/extension/3.1" 
xmlns="http://ns.adobe.com/air/extension/2.5"

SWF のバージョン同様、名前空間は、AIR SDK と ANE ファイル間の互換性を決定する要素の 1 つです。AIR アプリケーションは、拡張の名前空間と同じかそれ以降のバージョンの AIR SDK でパッケージ化される必要があります。そのため、AIR 3 アプリケーションは、2.5 の名前空間の拡張を使用できますが、3.1 の名前空間の拡張を使用することはできません。

<extension xmlns="http://ns.adobe.com/air/extension/2.5"> 
    <id>com.example.MyExtension</id> 
    <versionNumber>1.0.1</versionNumber> 
    <platforms> 
        <platform name="Polyphonic-MIPS"> 
            <deviceDeployment/> 
        </platform> 
        <platform name="NeoTech-ARM"> 
            <deviceDeployment/> 
        </platform> 
        <platform name="Philsung-x86"> 
            <deviceDeployment/> 
        </platform> 
        <platform name="default"> 
            <applicationDeployment/> 
        </platform> 
    </platforms> 
</extension>

finalizer

ネイティブライブラリで定義されたファイナライズ処理関数。

親エレメント:applicationDeployment

子エレメント:なし

コンテンツ

拡張のネイティブライブラリで C API が使用されている場合のファイナライザー関数の名前。

拡張で Java API を使用している場合、このエレメントには、FREExtension インターフェイスを実装するクラスの名前が含まれます。

値に含めることができる文字は、A - Z、a - z、0 - 9、ピリオド(.)およびハイフン(-)です。

<finalizer>...</finalizer>

id

拡張の ID。

親エレメント:extension

子エレメント:なし

コンテンツ

拡張の ID を指定します。

値に含めることができる文字は、A - Z、a - z、0 - 9、ピリオド(.)およびハイフン(-)です。

<id>com.example.MyExtension</id> 

initializer

ネイティブライブラリで定義された初期化関数。nativeLibrary エレメントが使用されている場合は、initializer エレメントは必須です。

親エレメント:applicationDeployment

子エレメント:なし

コンテンツ

拡張のネイティブライブラリで C API が使用されている場合の初期化関数の名前。

拡張で Java API を使用している場合、このエレメントには、FREExtension インターフェイスを実装するクラスの名前が含まれます。

値に含めることができる文字は、A - Z、a - z、0 - 9、ピリオド(.)およびハイフン(-)です。

<initializer>...</initializer>

name

拡張の名前。

親エレメント:extension

子エレメント:text

コンテンツ

1 つのテキストノードを指定した場合(複数の <text> エレメントを指定しない場合)、システム言語に関係なく、この名前が AIR アプリケーションインストーラーで使用されます。

各テキストエレメントの xml:lang 属性は、RFC4646(http://www.ietf.org/rfc/rfc4646.txt)に定義された言語コードを指定します。

次に、簡単な text ノードを使用して名前を定義する例を示します。

<name>Test Extension</name> 

次の例では <text> エレメントノードを使用して、3 つの言語(英語、フランス語およびスペイン語)で名前を指定します。

<name> 
    <text xml:lang="en">Hello AIR</text> 
    <text xml:lang="fr">Bonjour AIR</text> 
    <text xml:lang="es">Hola AIR</text> 
</name> 

nativeLibrary

あるプラットフォーム向けの拡張パッケージに含まれるネイティブライブラリファイル。以下を考慮してください。

  • 拡張に含まれるのが ActionScript コードのみの場合は、nativeLibrary エレメントは必須ではありません。

  • nativeLibrary エレメントが使用されない場合は、initializer エレメントと finalizer エレメントも使用できません。

  • nativeLibrary エレメントが使用されている場合は、initializer エレメントも必要です。

親エレメント:applicationDeployment

子エレメント:なし

コンテンツ

拡張パッケージに含まれるネイティブライブラリのファイル名。

値に含めることができる文字は、A - Z、a - z、0 - 9、ピリオド(.)およびハイフン(-)です。

<nativeLibrary>extensioncode.so</nativeLibrary>

platform

特定のプラットフォームの拡張向けネイティブコードライブラリを指定します。

親エレメント:platforms

子エレメント:次のエレメントのいずれかのみ

コンテンツ

name 属性ではプラットフォームの名前を指定します。特別な default プラットフォーム名を使用することで、拡張の開発者は、サポート対象外のプラットフォームでのネイティブコードの動作をシミュレートする ActionScript ライブラリを含めることができます。シミュレートされた動作は、デバッグをサポートし、複数プラットフォーム対応アプリケーションのフォールバック動作を提供するために使用できます。

name 属性には次の値を使用します。

  • Android-ARM(Android デバイスの場合)

  • default

  • iPhone-ARM(iOS デバイスの場合)

  • iPhone-x86(iOS シミュレーターの場合)

  • MacOS-x86-64(Mac OS X デバイスの場合)

  • QNX-ARM(Blackberry Tablet OS デバイスの場合)

  • Windows-x86(Windows デバイスの場合)

注意: デバイスバンドル拡張では、デバイス製造元が定義している name 属性値を使用します。

子エレメントでは、ネイティブコードライブラリのデプロイ方法を指定します。アプリケーションデプロイは、コードライブラリが、それを使用する各 AIR アプリケーションと共にデプロイされることを意味します。コードライブラリは拡張パッケージに含める必要があります。デバイスデプロイは、コードライブラリがプラットフォームに個別にデプロイされ、拡張パッケージに含まれないことを意味します。この 2 つのデプロイタイプは相互に排他的です。つまり、デプロイエレメントは 1 つしか含めることができません。

<platform name="Philsung-x86"> 
    <deviceDeployment/> 
</platform> 
<platform name="default"> 
    <applicationDeployment/> 
</platform>

platforms

この拡張でサポートされるプラットフォームを指定します。

親エレメント:extension

子エレメント:platform

コンテンツ

サポートされるプラットフォームごとに platform エレメントを指定します。オプションで、特定のコードライブラリでサポートされていないプラットフォーム上で使用する ActionScript 実装を含める、特別な「default」プラットフォームを指定できます。

<platforms> 
    <platform name="Android-ARM"> 
        <applicationDeployment> 
            <nativeLibrary>MyExtension.jar</nativeLibrary> 
            <initializer>com.sample.ext.MyExtension</initializer> 
            <finalizer>com.sample.ext.MyExtension</finalizer> 
        </applicationDeployment> 
    </platform> 
    <platform name="iPhone-ARM"> 
        <applicationDeployment> 
            <nativeLibrary>MyExtension.a</nativeLibrary> 
            <initializer>InitMyExtension></initializer> 
        </applicationDeployment> 
    <platform name="Philsung-x86"> 
        <deviceDeployment/> 
    </platform> 
    <platform name="default"> 
        <applicationDeployment/> 
    </platform> 
</platforms> 

text

ローカライズされたストリングを指定します。

テキストエレメントの xml:lang 属性は、RFC4646(http://www.ietf.org/rfc/rfc4646.txt)に定義された言語コードを指定します。

AIR では、オペレーティングシステムのユーザーインターフェイス言語に最も近い xml:lang 属性値を持つ text エレ ントが使用されます。

例えば、text エレメントに en(英語)ロケール の値が含まれているインストールを行うとします。オペレーティングシステムのユーザーインターフェイス言語が en(英語)になっている場合は、AIR で名前 en が使用されます。システムのユーザーインターフェイス言語が en-US(アメリカ英語)の場合にも名前 en が使用されます。ただし、ユーザーインターフェイス言語が en-US で、アプリケーション記述ファイルに en-US と en-GB の両方が定義されている場合は、AIR アプリケーションインストーラーで en-US が使用されます。

システムのユーザーインターフェイス言語に一致する text エレメントがアプリケーションに定義されていない場合、AIR では拡張記述ファイルに定義された最初の name の値が使用されます。

親エレメント:

子エレメント:なし

コンテンツ

ロケールとローカライズされたテキストのストリングを示す xml:lang 属性。

<text xml:lang="fr">Bonjour AIR</text>

versionNumber

拡張のバージョン番号。

親エレメント:extension

子エレメント:なし

コンテンツ

バージョン番号には、3 個以下の連結した整数をピリオドで区切って含めることができます。各整数には、0 以上 999 以下の数を指定する必要があります。

<versionNumber>1.0.657</versionNumber> 
 
<versionNumber>10</versionNumber> 
 
<versionNumber>0.01</versionNumber>