AIR移动应用自动化编译的问题

  AIR移动应用自动化编译的问题

大家都知道Flex SDK针对 Ant编译提供了扩展包flexTasks.jar。我参与的项目也都是用Ant进行编译打包的,本次我们依然选择用Ant进行编译打包。不过不同的是之前都是web应用,而这次是移动应用。所以在编译打包的过程中会存在一些差异。

1、 主模块编译得到swf文件
<!-- 编译成swf文件 -->
<target name="compile" description="Create the mian.swf" depends="init">
           <echo>编译mian.swf文件</echo>
           <mxmlc  file="${MAIN_DIR}/src/Main.as" 
                        output="${MAIN_DIR}/bin/Main.swf"
                        debug="${DEBUG}"
                             configname="airmobile"
                             swf-version="${SWF_VERSION}">
                    <source-path path-element="${MAIN_DIR}/src"/>
                    <library-path dir="${LIBS_DIR}/module" includes="*.swc" append="true"/>        
                    <library-path dir="${LIBS_DIR}/frame" includes="*.swc" append="true"/>          
           </mxmlc>
</target>


这里主要注意两个地方;
1)  configname参数,一定要设为“airmobile”,以便mxmlc在编译时调用的配置文件为airmobile-config.xml。不然编译出的swf将不能打包为移动安装包。
2)  swf-version参数,一定要从新设置,因为我们用的AIR SDK是手动升级的。所以如果不重新规定播放器版本的话,编译器会默认设置为手动升级前的版本,可能会导致编译错误。

2、 打包ipa安装包
之前我分享过用命令行的方式编译打包,这一次我们用ant编译。其实参数是一致的。
<target name="packageIpa" description="Create the ipa package" depends="compile">
                    <exec executable="${FLEX_HOME}/bin/adt.bat" failonerror="true">
                    <arg line="-package"/>                                                                         <!--打安装包指令-->
                    <arg line="-target ${IPA_TARGET}"/>                                               <!--安装包类型debug或release -->
                    <arg line="-storetype ${STORETYPE}"/>                                           <!—证书类型-->
                    <arg line="-keystore ${KEYSTORE}"/>                                               <!—证书文件-->
                    <arg line="-storepass ${STOREPASS}"/>                                           <!—证书密码-->
                    <arg line="-provisioning-profile ${PROVISIONING_PROFILE}"/><!—证书配置文件--> 
                    <arg line="${IPA_NAME}"/>                                                                <!—ipa包的名字--> 
                    <arg line="${CONFIG_XML}"/>                                                           <!—移动应用的配置文件main-app.xml-->
                    [color=red]<arg line="-C ${MAIN_DIR}/bin"/>   [/color]                                                 <!—设置adt的工作路径-->
                    <arg line="Main.swf"/>                                                                        <!—swf文件-->
                    <arg line="assets/"/>                                                                            <!—资源文件夹-->
                    <arg line="app.xml"/>                                                                           <!—其他项目配置资源-->
                    <arg line="appResourceConfig.xml"/>                                             <!—其他项目配置资源-->                                           
             </exec>
</target>


我这里是用exec标签调用adt.bat来编译的。除了这种方式你直接用adt.jar这个任务包完成编译。
标红的那行参数是要着重说明的;这里有一个“-C”参数,它的作用是设置adt的工作路径。默认情况下adt的工作路径为当前脚本所在路径。如果此路径与swf 、assets等资源的路径不一致。则需要将adt的工作路径设为资源所在路径。不然在编译main-app.xml的时候会出现找不到资源的情况, 因为当此配置文件被加载到内存中时如果配置文件中指定了资源(如swf或icon)则会从当前adt的工作路径中查找资源,如果adt工作路径与资源路径不一致便会导致错误。

模块编译为swc文件的方式和web应用一致,在此就不阐述了。

猜你喜欢

转载自wangchuang1113.iteye.com/blog/1890919