本机扩展描述符文件

扩展描述符文件描述本机扩展包的内容。

扩展描述符示例

以下扩展描述符文档描述以下各项的本机扩展:

  • Android 设备

  • 其他平台的 默认 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)。

示例

使用简单文本节点的说明:

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

对英语、法语和西班牙语使用本地化文本元素的描述:

<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 值设置为以下值之一:

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

命名空间是决定程序兼容性的一个因素,它与 SWF 版本一起决定 AIR SDK 和 ANE 文件之间的兼容性。打包 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

内容

如果指定单个文本节点(而非多个 <text> 元素),则无论系统语言为哪种语言,AIR 应用程序安装程序都将使用此名称。

每个文本元素的 xml:lang 属性用于指定语言代码,有关具体定义,请参阅 RFC4646 (http://www.ietf.org/rfc/rfc4646.txt)。

示例

以下示例使用简单文本节点定义名称。

<name>Test Extension</name> 

以下示例使用 <text> 元素节点指定三种语言(英语、法语和西班牙语)的名称:

<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 Simulator。

  • MacOS-x86-64 ,对于 Mac OS X 设备。

  • QNX-ARM ,对于 Blackberry Tablet OS 设备。

  • Windows-x86 ,对于 Windows 设备。

注: 设备绑定扩展使用设备制造商定义的 name 属性值。

子元素指定本机代码库的部署方式。应用程序部署是指代码库随使用它的每个 AIR 应用程序一起部署。代码库必须包含在扩展包中。设备部署是指将代码库单独部署到平台,而不包含在扩展包中。这两种部署类型相互排斥;只能包括一个部署元素。

示例

<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

子元素:

内容

版本号可以包含按时期分隔的三个整数组成的序列。每个整数必须是介于 0 到 999(两者都包括)之间的数字。

示例

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