ActionScript 编译器

必须对 ActionScript 和 MXML 代码进行编译,才能将其包含在 AIR 应用程序中。如果使用 Adobe Flash Builder 或 Adobe Flash Professional 等集成开发环境 (IDE),IDE 会在后台处理编译。但是,在未使用 IDE 时或在使用构建脚本时,也可以从命令行调用 ActionScript 编译器来创建 SWF 文件。

关于 Flex SDK 中的 AIR 命令行工具

用来创建 Adobe AIR 应用程序的每个命令行工具都会调用用于生成应用程序的对应工具:

  • amxmlc 调用 mxmlc 来编译应用程序类

  • acompc 调用 compc 来编译库和组件类

  • aasdoc 调用 asdoc,通过源代码注释生成文档文件

实用程序的 Flex 和 AIR 版本之间的唯一区别是,AIR 版本从 air-config.xml 文件加载配置选项,而不是从 flex-config.xml 文件加载。

Flex 文档 中详细说明了 Flex SDK 工具及其命令行选项。此处仅对 Flex SDK 工具进行简要介绍,以便帮助您快速入门,并指出生成 Flex 应用程序与生成 AIR 应用程序之间的区别。

编译器安装

通常在命令行中以及使用一个或多个配置文件来指定编译选项。Flex SDK 全局配置文件包含编译器运行时所使用的默认值。可以编辑此文件以适合自己的开发环境。Flex SDK 安装的 frameworks 目录中包含两个 Flex 全局配置文件。运行 amxmlc 编译器时使用 air-config.xml 文件。此文件通过包括 AIR 库来为 AIR 配置编译器。运行 mxmlc 时使用 flex-config.xml 文件。

默认配置值适用于学习和了解 Flex 和 AIR 的工作方式,但是,如果要处理一个完整项目,则应更严格地检查可用选项。可以在本地配置文件中为编译器选项提供项目特定的值,对于给定项目来说,项目特定值优先于全局值。

注: 没有专门用于 AIR 应用程序的编译选项,但在编译 AIR 应用程序时必须参考 AIR 库。通常情况下,这些库在项目级别的配置文件以及在生成工具(例如 Ant)的对应文件中引用,或者在命令行中直接引用。

为 AIR 编译 MXML 和 ActionScript 源文件

可使用命令行 MXML 编译器 (amxmlc) 编译 AIR 应用程序的 Adobe® ActionScript® 3.0 和 MXML 资源。(您不需要编译基于 HTML 的应用程序。若要在 Flash Professional 中编译 SWF,只需将影片发布到 SWF 文件。)

使用 amxmlc 的基本命令行模式是:

amxmlc [compiler options] -- MyAIRApp.mxml

其中 [compiler options] 指定编译 AIR 应用程序所使用的命令行选项。

amxmlc 命令使用附加参数 +configname=air 调用标准 Flex mxmlc 编译器。该参数指示编译器使用 air-config.xml 文件,而不是 flex-config.xml 文件。在其他方面,使用 amxmlc 与使用 mxmlc 相同。

编译器加载的 air-config.xml 配置文件指定编译 AIR 应用程序通常所需的 AIR 和 Flex 库。您还可以使用本地项目级配置文件覆盖或添加全局配置的其他选项。通常,创建本地配置文件的最简便方式是编辑全局版本的副本。使用 -load-config 选项可以加载本地文件:

-load-config=project-config.xml 覆盖全局选项。

-load-config+=project-config.xml 向采用多个值的全局选项添加其他值,例如 -library-path 选项。仅采用一个值的全局选项将被覆盖。

如果对本地配置文件使用特定命名约定,amxmlc 编译器会自动加载本地文件。例如,如果主 MXML 文件为 RunningMan.mxml ,则将本地配置文件命名为 RunningMan-config.xml 。现在,您只需键入以下内容即可编译应用程序:

amxmlc RunningMan.mxml

由于 RunningMan-config.xml 的文件名与编译的 MXML 文件的文件名匹配,因此将自动加载该文件。

amxmlc 示例

下面的示例演示如何使用 amxmlc 编译器。(只能编译应用程序的 ActionScript 和 MXML 资源。)

编译 AIR MXML 文件:

amxmlc myApp.mxml

编译和设置输出名称:

amxmlc –output anApp.swf -- myApp.mxml

编译 AIR ActionScript 文件:

amxmlc myApp.as

指定编译器配置文件:

amxmlc –load-config config.xml -- myApp.mxml

从其他配置文件添加其他选项:

amxmlc –load-config+=moreConfig.xml -- myApp.mxml

在命令行中添加库(除了配置文件中的已有库以外):

amxmlc –library-path+=/libs/libOne.swc,/libs/libTwo.swc  -- myApp.mxml

在不使用配置文件的情况下编译 AIR MXML 文件 (Win):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
[AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
-library-path [Flex SDK]/frameworks/libs/framework.swc ^ 
-- myApp.mxml

在不使用配置文件的情况下编译 AIR MXML 文件(Mac OS X 或 Linux):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, \ 
[AIR SDK]/frameworks/libs/air/airframework.swc, \ 
-library-path [Flex 3 SDK]/frameworks/libs/framework.swc \ 
-- myApp.mxml

编译 AIR MXML 文件以便使用运行时共享库:

amxmlc -external-library-path+=../lib/myLib.swc -runtime-shared-libraries=myrsl.swf -- myApp.mxml

编译 AIR MXML 文件以使用 ANE(确保针对 ANE 使用 ‑external‑library‑path ):

amxmlc -external-library-path+=../lib/myANE.ane -output=myAneApp.swf -- myAneApp.mxml

使用 Java 编译(将类路径设置为包含 mxmlc.jar ):

java flex2.tools.Compiler +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml

flexlib 选项标识 Flex SDK 框架目录的位置,并使编译器能够查找 flex_config.xml 文件。

使用 Java 编译(未设置类路径):

java -jar [Flex SDK 2]/lib/mxmlc.jar +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml

使用 Apache Ant 调用编译器(此示例使用 Java 任务运行 mxmlc.jar):

<property name="SDK_HOME" value="C:/Flex46SDK"/> 
<property name="MAIN_SOURCE_FILE" value="src/myApp.mxml"/> 
<property name="DEBUG" value="true"/> 
<target name="compile"> 
    <java jar="${MXMLC.JAR}" fork="true" failonerror="true"> 
        <arg value="-debug=${DEBUG}"/> 
        <arg value="+flexlib=${SDK_HOME}/frameworks"/> 
        <arg value="+configname=air"/> 
        <arg value="-file-specs=${MAIN_SOURCE_FILE}"/> 
    </java> 
</target>

编译 AIR 组件或代码库 (Flex)

使用组件编译器 acompc 可以编译 AIR 库和独立的组件。除以下几点之外,acompc 组件编译器的行为与 amxmlc 编译器的行为类似:

  • 必须指定库或组件应包含代码库的哪些类。

  • acompc 不会自动查询本地配置文件。若要使用项目配置文件,必须使用 –load-config 选项。

acompc 命令调用标准 Flex compc 组件编译器,但该命令从 air-config.xml 文件而不是 flex-config.xml 文件加载其配置选项。

组件编译器配置文件

使用本地配置文件可以避免在命令行中键入(甚至可能是错误键入)源路径和类名。向 acompc 命令行添加 -load-config 选项可以加载本地配置文件。

下面的示例演示如何使用 ParticleManager 和 Particle 两个类配置并构建库,这两个类均位于 com.adobe.samples.particles 包中。类文件位于 source/com/adobe/samples/particles 文件夹中。

<flex-config> 
    <compiler> 
        <source-path> 
            <path-element>source</path-element> 
        </source-path> 
    </compiler> 
    <include-classes> 
        <class>com.adobe.samples.particles.ParticleManager</class> 
        <class>com.adobe.samples.particles.Particle</class> 
    </include-classes> 
</flex-config>

若要使用配置文件编译名为 ParticleLib-config.xml 的库,请键入:

acompc -load-config ParticleLib-config.xml -output ParticleLib.swc

若要在命令行中完全运行同一命令,请键入:

acompc -source-path source -include-classes com.adobe.samples.particles.Particle  
com.adobe.samples.particles.ParticleManager -output ParticleLib.swc

(在一行中键入整个命令,或者对命令解释程序使用续行符。)

acompc 示例

这些示例假定您使用的是名为 myLib-config.xml 的配置文件。

编译 AIR 组件或库:

acompc -load-config myLib-config.xml -output lib/myLib.swc

编译运行时共享库:

acompc -load-config myLib-config.xml -directory -output lib

(请注意,在运行该命令之前,文件夹 lib 必须存在且必须为空。)