Ant构建工具

项目中打包安卓使用的是ant,ant主要就是需要写一个xml,相当于脚本。看了项目中的配置,也蛮好理解的,这里做下记录,方便以后修改。

目录

ant的命令行调用:

打包android 的.xml示例:


ant的命令行调用:

ant的命令行调用可以有很多参数,下面介绍这四种,由简单到复杂:

// 第1种——当前目录下查找默认配置build.xml,执行默认的target(build.xml中设置的)
ant

// 第2种——当前目录下查找特定配置build-test.xml,执行默认的target(build-debug.xml中设置的) -buildfile 或-f或-file
ant -buildfile build-test.xml

// 第3种——当前目录下查找特定配置build-test.xml,执行特定target--targetName
ant -buildfile build-test.xml targetName

// 第4种——当前目录下查找特定配置build-test.xml,执行特定target--targetName,指定某属性值
ant -buildfile build-test.xml targetName 属性=属性值 

打包android 的.xml示例:

 

ant的内置任务有如下:

echo exec zip checksum mkdir copy

等具体用法查看 http://ant.apache.org/manual/

 

下面每一句应该都能看懂,都有注释。

<?xml version="1.0" encoding="UTF-8"?>
<!--创建project。basedir-用于计算所有其他路径的基路径。default-设置默认执行的target名--> 
<project basedir="." default="main_symbols" name="mdj">
    <!--将环境变量作为property使用,加载的变量名是:env.XXX。例如环境变量中的PATH、JAVA_HOME,加载后的变量名是:env.JAVA_HOME,env.PATH-->
    <property environment="env"/>
    <!--使用<property file/>设置属性 当前目录下找到下面的文件名-->
    <property file="settings.properties"/>
    <!--通过name设置属性 BUILD_NUMBER即为当前环境变量中的某一个(jenkins)-->
    <property name="RAW_BUILD_NUMBER" value="${env.BUILD_NUMBER}"/>
    <!--通过location设置属性 build.dir为settings.properties中设置的 没有relative,即relative=false 所以返回的是绝对路径-->
    <property name="build.dir.absolute" location="${build.dir}"/>
    <!--定义了<tstamp/>对象后,它便为我们定义了三个属性变量:DSTAMP,TSTAMP,TODAY。你也可以自己定义属性变量-->
    <tstamp>
        <format pattern="yyyy-MM-dd-kk-mm-ss" property="TIME_STAMP"/>
    </tstamp>
    <!--target的depends属性 可依赖多个任务 可有条件的依赖-->
    <target name="main_symbols" depends="android"/>
    <target name="android" depends="build_hotUpate,compile-debug-app"/>
    <target name="build_app" depends="build_assetbundle" if="${CreateAPP}">
    <target name="writeconfig">
        <!-- echo是Ant内置任务 message发送消息-->
        <echo message="android app version: ${APP_VERSION}"/>
        <echo message="SVNCommitVerison: ${SVNCommitVersion}"/>
        <!-- echo是Ant内置任务 file写入消息的文件 append:是否追加到已经存在的文件,默认为false-->
        <!-- line.separator是Ant内置属性 换行符-->
        <echo message="${APP_VERSION}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="false"/>
        <echo message="${line.separator}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
        <echo message="${SVNCommitVersion}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
        <echo message="${line.separator}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
        <echo message="${HotUpdateResource}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
        <echo message="${line.separator}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
        <echo message="${CreateAPP}" file="../../Assets/StreamingAssets/VersionData/ResVersionInfo.txt" append="true"/>
    </target>
    <target name="changebuildtarget">
        <echo message="${unity.bin} -projectPath ${dev.dir.absolute} -buildTarget Android -batchmode -quit"/>
        <!--使用exec执行shell-->
        <exec failonerror="true" executable="${unity.bin}">
        <arg line="-projectPath ${dev.dir.absolute}"/>
        <arg line="-logFile /dev/stdout"/>
        <arg line="-batchmode"/>
        <arg line="-quit"/>
        <arg line="-buildTarget Android"/>
        </exec>
    </target>
    <target name="encryptDLL">
        <exec failonerror="true" executable="${basedir}/encryptDLL.sh"/>
    </target>
    <target name="build_hotUpate" depends="build_assetbundle,encryptDLL,refreshDLLMD5" if="${HotUpdateResource}">
        <!--压缩热更新资源 http://ant.apache.org/manual/Types/zipfileset.html-->
        <zip destfile="${android.build.deploy.folder}/${TIME_STAMP}/${DJ_VERSION_STRING}-Android.zip">
            <zipfileset dir="${android.update.zip.folder}/ResData"/>
        </zip>
        <!--生成热更新资源的MD5 http://ant.apache.org/manual/-->
        <checksum>
            <fileset dir="${android.build.deploy.folder}/${TIME_STAMP}">
                <include name="${DJ_VERSION_STRING}-Android.zip"/>
            </fileset>
        </checksum>
    </target>
</project>

 

都是一个一个target 

纯任务传递: main_symbols---》 android---》 build_hotUpate + compile-debug-app

build_hotUpate ---》 如果是需要热更新资源的话 就执行这个 target
    前置task:
        build_assetbundle 见下面
        encryptDLL   ---》 执行一个加密 dll 的脚本  encryptDLL.sh
        refreshDLLMD5  ---》 调用 c# 写好的函数 CommandBuild.RefreshDLLMD5 更新 dll 为加密以后的 hash 值 ( 这里把dll也当成了热更资源了 )
    +
    自己要做的事情  ---》 压缩生成的热更新资源 + 生成热更新资源的MD5 
    

    build_assetbundle
       前置task:
            writeconfig --》 自动修改记录版本信息的文件 比如svn版本号啊 应用版本号啊 
            changebuildtarget --》 切换一下平台的,相当于 buildsetting 中的 switch platform
        +
        自己要做的事情 --》CommandBuild.BuildAssetBundle 调用C#写好的 打包资源 ab 的函数

    
compile-debug-app
    前置task:
        build_app 见下面
    +
    自己要做的事情
    
    
    build_app
        前置task:
            build_assetbundle 上面已经做了如果是热更新的条件下 没有的话就再执行一次咯。
        +
        自己要做的事情  --》 调用C#写好的 CommandBuild.BuildAndroid (最终调用 BuildPipeline.BuildPlayer ) 生成apk   + 生成的 apk 的 MD5  

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ivy_0709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值