在使用 Flash Builder 编写中大型的 AS 项目时,往往 Debug 和 Release 版有着不同的编译参数,每次发布版本时改参数显然是个很蛋疼的事情。有很长一段时间我是通过编写 flex_config.xml + 批处理脚本来解决这个问题,后来在群里得知可以使用 Ant 来更方便和“专业”地解决这个问题,于是研究了 Ant 的具体配置和使用。

环境

  • Windows 7 x64
  • Flash Builder 4.7 x64
  • Flex SDK 4.6.0
  • Apache Ant 1.9.2

配置

  1. Apache Ant 下载页面, 目前版本为 1.9.2,这里直接下载 apache-ant-1.9.2-bin.zip
  2. 定义系统环境变量: ANT_HOME="D:\apps\_libs\ant"
  3. 在项目根目录建立配置文件 release.xml,此配置文件执行了简单的 清理、编译、整理资源文件任务,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<project name="release" basedir="." default="build">
    <!-- 设置变量 -->
    <property name="FLEX_HOME" value="D:/Program Files/Adobe/Adobe Flash Builder 4.7 (64 Bit)/sdks/4.6.0"/>
    <property name="SOURCE_DIR" value="${basedir}/src"/>
    <property name="LIB_PATH" value="${basedir}/libs"/>
    <property name="SWC_PATH" value="${basedir}/swcs"/>
    <property name="DEPLOY_DIR" value="${basedir}/bin-release"/>
  
    <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
    
    <!-- 按顺序执行各个任务 -->  
    <target name="build">    
        <antcall target="clean"/>  
        <antcall target="compile">
            <!-- 这里的 Main 为项目主入口类名 -->
            <param name="projectName" value="Main"/>  
        </antcall>
        <antcall target="res_handle"/>
        <echo>完成</echo>
    </target>  
      
  
    <!--清理-->
    <target name="clean">
        <echo>清理</echo>
        <delete includeemptydirs="true">  
            <fileset dir="${DEPLOY_DIR}" includes="**/*"/>  
        </delete>
    </target>
    
    <!--编译SWF-->  
    <target name="compile">
        <echo>编译</echo>
        <mxmlc  
            file="${SOURCE_DIR}/${projectName}.as"  
            output="${DEPLOY_DIR}/${projectName}.swf"  
            static-rsls="true"  
            accessible="true" 
            use-network="true" 
            debug="false">
            <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                <include name="libs" />
                <include name="libs/mx" />
                <include name="locale/{locale}" />
                <include name="libs/player" />
            </compiler.library-path>
            <compiler.library-path dir="${SWC_PATH}" append="true">
                <include name="preloader.swc" />
            </compiler.library-path>
            <compiler.source-path path-element="src"/>
            <compiler.source-path path-element="libs"/>
            <!-- 设置条件编译配置 -->
            <define name="CONFIG::debug" value="false"/>
            <define name="CONFIG::release" value="true"/>
        </mxmlc>  
    </target>
    
    <!--资源文件处理-->
    <target name="res_handle">
        <echo>资源文件处理</echo>
        <copy includeEmptyDirs="true" todir="${DEPLOY_DIR}">
            <fileset dir="${basedir}/src">
                <include name="assets/**"/>
            </fileset>
        </copy>
        <delete includeemptydirs="true">  
            <fileset dir="${DEPLOY_DIR}/assets">
                <include name="*.txt"/>
                <include name="*.fla"/>
            </fileset>          
        </delete>
    </target>

</project>

使用

打开 Flash Builder,点击 窗口 -> 显示视图 -> Ant,打开 Ant 视图,右击空白处,选择 添加构建文件,选择刚建立的 release.xml,然后双击运行。

参考