使用amxmlc编译器编译程序代码

使用命令行MXML编译器(amxmlc)编译ActionScript和MXML 资源:

amxmlc [compiler options] -- MyAIRApp.mxml


这里的[compiler options] 指定编译器选项。

Amxmlc命令调用mxmlc,再加上额外的参数,+configname=air,它指示编译器使用air-config.xml代替flex_config.xml文件。

编译器根据air-config.xml配置文件编译AIR程序,你也可以使用本地的,工程级别的配置文件来代替全局配置文件,比如你可以先复制全局文件进行修改,然后通过-load-config选项载入:

-load-config=project-config.xml 替换全局文件

-load-config+=project-config.xml 增加额外的参数值到全局变量中,比如-library-path 选项

你也可以使用指定的命名约定,让编译器自动载入配置文件,例如如果你的程序主MXML文件名为RunningMan.mxml,那么配置文件名为RunningMan-config.xml。编译程序只需要输入:

amxmlc RunningMan.mxml

示例

下面的例子演示了如何使用amxmlc编译器

编译一个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文件:

  1. mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, ^  
  2.   
  3. [AIR SDK]/frameworks/libs/air/airframework.swc, ^  
  4.   
  5. -library-path [Flex 2 SDK]/frameworks/libs/framework.swc ^  
  6.   
  7. -- myApp.mxml  

使用runtime-shared library(RSL)编译AIR MXML文件:

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


使用Java版本的编译器:

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


Flexlib选项指定Flex SDK frameworks目录,使编译器找到flex_config.xml文件。


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

使用acompc编译器编译AIR组件或库

使用组件编译器acompc编译AIR库或独立组件。组件编译器很类似amxmlc编译器,只是需要注意以下事项:

1. 你必须指定哪些类将被编译进库或组件。

2. Acompc不会自己去寻找本地配置文件,你必须手动使用-load-config选项加载。

Acompc和compc一样,除了载入配置文件air-config.xml文件代替flex_config.xml文件。


组件编译器配置文件

下面的例子演示建立用两个类所建立的库:ParticleManager和Particle,都在com.adobe.samples.particles包中,存放在source/com/adobe/samples/particles目录下:

 

 

  1. <flex-config>  
  2.   
  3.     <compiler>  
  4.   
  5.         <source-path>  
  6.   
  7.             <path-element>source</path-element>  
  8.   
  9.         </source-path>  
  10.   
  11.     </compiler>  
  12.   
  13.     <include-classes>  
  14.   
  15.         <class >com.adobe.samples.particles.ParticleManager</ class >  
  16.   
  17.         <class >com.adobe.samples.particles.Particle</ class >  
  18.   
  19.     </include-classes>  
  20.   
  21. </flex-config>  

然后输入下面的命令:


代码


compc -source-path source -include-classes com.adobe.samples.particles.Particle 

com.adobe.samples.particles.ParticleManager

示例 编译AIR组件或库:

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


编译runtime-shared library:

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


注意,在运行此命令之前lib目录必须存在且空的

使用AIR Debug Launcher进行调试

在开发过程中可使用AIR Debug Launcher (ADL)来调试基于flex或HTML的AIR程序。使用ADL,你可不必先对程序打包和安装,使用ADL也不需要安装运行时。

ADL所支持的调试只限于trace语句的输出,如果你开发基于Flex的程序,可使用Flash Debugger (或Flex Builder) 调试复杂问题。

用ADL运行程序

使用下面的语法:

adl [-runtime <runtime-directory>] <application.xml> [<root-directory>] [-- arguments]


-runtime <runtime-directory> 指定要使用的运行时,如果没指定,则默认为ADL所在的SDK目录(如果ADL被移动到SDK目录外,则需要手动指定)

<application.xml> 应用程序描述文件

<root-directory> 应用程序运行所在的根目录,如果没有指定,则该目录就是程序描述文件所在目录。

-- arguments 任意字符串参数


注意:当你想运行的AIR程序已经在运行的话,新的实例将不能运行。

打印trace语句

要在ADL下输出trace 语句到控制台,可使用trace() 函数:

trace("debug message");

ADL示例


在当前目录下运行程序:

adl myApp-app.xml


在当前目录的子目录下运行程序:

adl source/myApp-app.xml release


运行程序并传递两个命令行参数,"foo"和"bar":

adl myApp-app.xml -- foo bar


用指定的运行时运行程序:

adl -runtime /AIR/XYZ/AIRSDK/bin myApp-app.xml


在Flash Debugger中设置断点

要在Flash Debugger中调试基于SWF的AIR程序,需要启动一个FDB会话,且运行debug版本的应用程序。Debug版本的SWF文件会自动连接到FDB会话。

1. 启动FDB,FDB命令在Flex 2 SDK的bin目录中。

在控制台中会显示FDB提示:<fdb>

2. 执行Run命令:<fdb>run 【回车】

3. 运行debug版本的程序:

adl myApp-debug.xml

4. 使用FDB命令设置断点。

输入:continue 【回车】

设置断点

输入:continue 【回车】

使用AIR开发工具打包程序

用AIR Developer Tool(ADT)打包程序为AIR文件。ADT创建基于SWF或HTML的安装文件(如果你使用Flex Builder,可用导出功能)

ADT是java程序,类似与Ant需要在命令行下运行。SDK中包含了命令行脚本用于执行该命令。

最简单的AIR程序至少需要一个程序描述文件和主SWF或HTML文件。任何其他用到的资源都会被打包进AIR文件。


ADT用法

使用下面的语法:

adt -package air_file app_xml [ file_or_dir | -C dir file_or_dir ... ] ...


air_file :即将创建的AIR文件名。

app_xml :程序描述文件路径,不管该文件名是什么,最后打包后都改为"application.xml",该路径可以是相对也可以是绝对路径。

file_or_dir :将被打包的文件和目录,可以指定任意数量的文件和目录,用空格符分隔开。如果是目录,则该目录下的所有文件和子目录,除了隐藏文件都被添加到安装包中。指定的文件和目录必须在当前目录下或是当前目录的子目录,可使用-C选项改变当前目录。

ADT 示例

在当前目录中打包指定的程序文件:

adt -package myApp.air myApp.xml myApp.swf components.swc


打包当前目录中的所有文件和子目录:

adt -package myApp.air myApp.xml .


只打包主文件和images 子目录:

adt -package myApp.air myApp.xml myApp.swf images


打包和(release/bin)目录下的程序描述文件和SWF文件:

adt -package myApp.air release/bin/myApp.xml -C release/bin myApp.swf


下面的例子演示如何打包多个目录下的文件:

  1. /devRoot  
  2.   
  3.     /myApp  
  4.   
  5.         /release  
  6.   
  7.             /bin  
  8.   
  9.                 myApp.xml  
  10.   
  11.                 myApp.swf  
  12.   
  13.     /artwork  
  14.   
  15.         /myApp  
  16.   
  17.             /images  
  18.   
  19.                 image-1.png  
  20.   
  21.                 image-n.png  
  22.   
  23.     /libraries  
  24.   
  25.         /release  
  26.   
  27.             /libs  
  28.   
  29.                 lib-1.swf  
  30.   
  31.                 lib-n.swf  

下面的ADT命令在/devRoot/myApp目录下运行:

  1. adt -package myApp.air release/bin/myApp.xml -C release/bin myApp.swf   
  2.   
  3.     -C ../artwork/myApp images -C ../audio  

该命令执行结果:

  1. /myAppRoot  
  2.   
  3.     /META-INF  
  4.   
  5.         /AIR  
  6.   
  7.             application.xml  
  8.   
  9.             hash  
  10.   
  11.     myApp.swf  
  12.   
  13.     mimetype  
  14.   
  15.     /images  
  16.   
  17.         image-1.png  
  18.   
  19.         image-n.png  
  20.   
  21.     /libs  
  22.   
  23.         lib-1.swf  
  24.   
  25.         lib-n.swf        AIRAlias.js  

运行ADT命令(没有设置classpath) :

java -jar {AIRSDK}/lib/ADT.jar -package myApp.air myApp.xml myApp.swf


运行ADT命令(把ADT.jar包加入到classpath变量中) :

java com.adobe.air.ADT -package -package myApp.air myApp.xml myApp.swf 

在简单的工程项目中使用Ant

这个例子展示如何用Ant构建AIR程序,一个非常简单的工程,所有文件都放在一个目录里。


注意:这个例子使用的是AIR SDK而不是Flex Builder,Flex Builder中的工具和配置文件的目录结构有所不同。

为了使用更简单些,例子中定义了一些变量属性,这一组属性定义了命令行工具的所在路径:

  1. <property name= "SDK_HOME"  value= "C:/FlexSDK" />  
  2.   
  3. <property name="MXMLC.JAR"  value= "${SDK_HOME}/lib/mxmlc.jar" />  
  4.   
  5. <property name="ADL"  value= "${SDK_HOME}/bin/adl.exe" />  
  6.   
  7. <property name="ADT.JAR"  value= "${SDK_HOME}/lib/adt.jar" />  

这一组定义了工程的一些属性,这些变量将被转换为应用程序描述文件。这里还定义了程序根目录,还有MXMLC debug参数为true :

 

  1. <property name= "APP_NAME"  value= "ExampleApplication" />  
  2.   
  3.  <property name="APP_ROOT"  value= "." />  
  4.   
  5.  <property name="MAIN_SOURCE_FILE"  value= "${APP_ROOT}/${APP_NAME}.mxml" />  
  6.   
  7.  <property name="APP_DESCRIPTOR"  value= "${APP_ROOT}/${APP_NAME}-app.xml" />  
  8.   
  9.  <property name="AIR_NAME"  value= "${APP_NAME}.air" />  
  10.   
  11.  <property name="DEBUG"  value= "true" />  

调用编译器


要调用编译,这个例子使用一个java任务来运行mxmlc.jar :

  1. <target name= "compile" >  
  2.   
  3.     <java jar="${MXMLC.JAR}"  fork= "true"  failοnerrοr= "true" >  
  4.   
  5.         <arg value="-debug=${DEBUG}" />  
  6.   
  7.         <arg value="+flexlib=${SDK_HOME}/frameworks" />  
  8.   
  9.         <arg value="+configname=air" />  
  10.   
  11.         <arg value="-file-specs=${MAIN_SOURCE_FILE}" />  
  12.   
  13.     </java>  
  14.   
  15. </target>  

当使用Java调用mxmlc时,必须指定+flexlib参数。+configname=air参数告诉mxmlc载入AIR配置文件来代替原来的Flex配置文件。


调用ADL来测试程序

要想用ADL运行程序,使用下面的任务:

  1. <target name= "test"  depends= "compile" >  
  2.   
  3.     <exec executable="${ADL}" >  
  4.   
  5.         <arg value="${APP_DESCRIPTOR}" />  
  6.   
  7.     </exec>   
  8.   
  9. </target>  

调用ADT打包程序

用下面的Java任务运行adt.jar工具:

  1. <target name= "package"  depends= "compile" >  
  2.   
  3.     <java jar="${ADT.JAR}"  fork= "true"  failοnerrοr= "true" >  
  4.   
  5.         <arg value="-package" />  
  6.   
  7.         <arg value="${AIR_NAME}" />  
  8.   
  9.         <arg value="${APP_DESCRIPTOR}" />  
  10.   
  11.         <arg value="${APP_NAME}.swf" />  
  12.   
  13.         <arg value="*.png" />  
  14.   
  15.     </java>  
  16.   
  17. </target>  

如果你还想打包进更多的文件,可继续添加<arg> 元素。

在复杂的工程项目中使用Ant

因为有些程序会把所有的文件都放在一个目录中,下面的例子演示一个构建文件被用来编译,测试,打包AIR程序。

这个例子项目把源代码和图标都存在src目录,构建脚本创建了下面的工作目录

build

存储正式版的SWF文件

debug

存储调试版的SWF文件和资源文件

release

存储最终的AIR包

Compiling

Mxmlc编译器允许指定编译后的文件存放路径,通过-output 选项指定。

Testing

ADL的第二个参数指定AIR程序的根目录

Packaging

  1. <?xml version= "1.0"  ?>  
  2. <project>  
  3.     <!-- SDK properties -->  
  4.     <property name="SDK_HOME"  value= "C:/FlexSDK" />  
  5.     <property name="MXMLC.JAR"  value= "${SDK_HOME}/lib/mxmlc.jar" />  
  6.     <property name="ADL"  value= "${SDK_HOME}/bin/adl.exe" />  
  7.     <property name="ADT.JAR"  value= "${SDK_HOME}/lib/adt.jar" />  
  8.   
  9.     <!-- Project properties -->  
  10.     <property name="APP_NAME"  value= "ExampleApplication" />  
  11.     <property name="APP_ROOT_DIR"  value= "." />  
  12.     <property name="MAIN_SOURCE_FILE"  value= "${APP_ROOT_DIR}/src/${APP_NAME}.mxml" />  
  13.     <property name="APP_ROOT_FILE"  value= "${APP_NAME}.swf" />  
  14.     <property name="APP_DESCRIPTOR"  value= "${APP_ROOT_DIR}/${APP_NAME}-app.xml" />  
  15.     <property name="AIR_NAME"  value= "${APP_NAME}.air" />  
  16.     <property name="build"  location= "${APP_ROOT}/build" />  
  17.     <property name="debug"   location= "${APP_ROOT_DIR}/debug" />  
  18.     <property name="release"   location= "${APP_ROOT_DIR}/release" />  
  19.     <property name="assets"   location= "${APP_ROOT_DIR}/src/assets" />  
  20.       
  21.     <target name="init"  depends= "clean" >  
  22.             <tstamp/>  
  23.             <mkdir dir="${build}" />  
  24.         <mkdir dir="${debug}" />  
  25.         <mkdir dir="${release}" />  
  26.     </target>  
  27.   
  28.     <target name="debugcompile"  depends= "init" >  
  29.         <java jar="${MXMLC.JAR}"  fork= "true"  failοnerrοr= "true" >  
  30.             <arg value="-debug=true" />  
  31.             <arg value="+flexlib=${SDK_HOME}/frameworks" />  
  32.             <arg value="+configname=air" />  
  33.             <arg value="-file-specs=${MAIN_SOURCE}" />  
  34.             <arg value="-output=${debug}/${APP_ROOT_FILE}" />  
  35.         </java>  
  36.         <copy todir="${debug}" >  
  37.                 <fileset dir="${assets}" />  
  38.           </copy>  
  39.     </target>  
  40.   
  41.     <target name="releasecompile"  depends= "init" >  
  42.         <java jar="${MXMLC.JAR}"  fork= "true"  failοnerrοr= "true" >  
  43.             <arg value="-debug=false" />  
  44.             <arg value="+flexlib=${SDK_HOME}/frameworks" />  
  45.             <arg value="+configname=air" />  
  46.             <arg value="-file-specs=${MAIN_SOURCE_FILE}" />  
  47.             <arg value="-output=${build}/${APP_ROOT_FILE}" />  
  48.         </java>  
  49.     </target>  
  50.   
  51.     <target name="test"  depends= "debugcompile" >  
  52.         <exec executable="${ADL}" >  
  53.                 <arg value="${APP_DESCRIPTOR}" />  
  54.             <arg value="${debug}" />  
  55.           </exec>   
  56.     </target>  
  57.   
  58.     <target name="package"  depends= "releasecompile" >  
  59.         <java jar="${ADT.JAR}"  fork= "true"  failοnerrοr= "true" >  
  60.             <arg value="-package" />  
  61.             <arg value="${release}/${AIR_NAME}" />  
  62.             <arg value="${APP_DESCRIPTOR}" />  
  63.             <arg value="-C" />  
  64.             <arg value="${build}" />  
  65.             <arg value="${APP_ROOT_FILE}" />  
  66.             <arg value="-C" />  
  67.             <arg value="${assets}" />  
  68.             <arg value="icons" />  
  69.         </java>  
  70.     </target>  
  71.   
  72.     <target name="clean"  description= "clean up" >  
  73.         <delete dir="${build}" />  
  74.         <delete dir="${debug}" />  
  75.         <delete dir="${release}" />  
  76.     </target>  
  77. </project> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值