Ant 打包配置

以下是build.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- TODO修改工程名 -->

<project

    name="ToyBattleField_91"

    basedir="../ChannelActivity"

    default="release" >


    <!-- 环境变量 -->


    <property environment="env" />


    <import file="build_cfg.xml" />

    <!-- 应用的名称 -->


    <property

        name="appName"

        value="${ant.project.name}" />


    <!-- SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值) ${sdk-folder} -->


    <echo>appName:${appName},

SDK目录 ${sdk-folder}

    </echo>


    <echo>

JDK目录 ${env.JAVA_HOME}

    </echo>


    <property

        name="assets-dir"

        value="bin_assets" />

    <property

        name="assets-dir-ospath"

        value="${basedir}/${assets-dir}" />


    <property

        name="appversion"

        value="1.0.0" />


    <!-- ***********************************渠道必须配置****************** -->

    <!-- TODO渠道名称,与libChannel,resChannel中一致 -->


    <property

        name="channelName"

        value="91" />


    <echo>

channelName: ${channelName},baseDir:${basedir}

    </echo>

    <!-- TODO包名,如果渠道名全为数字,则在前面加上字母,如c91 -->


    <property

        name="appPackage"

        value="com.ourpalm.toybattlefield.c91" />


    <property

        name="external-lib"

        value="libChannel/lib_${channelName}" />

    <!-- 编译后的文件放置目录 -->


    <property

        name="outdir-bin"

        value="bin_${channelName}" />

    <!-- 资源文件目录 -->


    <property

        name="resource-dir"

        value="resChannel/res_${channelName}" />

    <!-- 配置清单文件 -->


    <property

        name="android-manifest-xml"

        value="Manifest/Manifest_${channelName}/AndroidManifest.xml" />

    <!-- 输出文件名字 -->


    <property

        name="out-zipalign-package"

        value="${outdir-bin}/ToyBattleField_${channelName}.apk" />


    <!-- so -->


    <property

        name="external-libs-ospath"

        value="${basedir}/${external-lib}" />

    <!-- ************************************************************************ -->



    <!-- SDK中tools目录 -->


    <property

        name="sdk-tools"

        value="${sdk-folder}/tools" />

    <!-- SDK指定平台目录 -->


    <property

        name="sdk-platform-folder"

        value="${sdk-folder}/platforms/android-17" />

    <!-- SDK指定平台的tools目录 -->


    <property

        name="sdk-platform-tools"

        value="${sdk-folder}/platform-tools" />

    <!-- 使用到得命令 -->


    <property

        name="aapt"

        value="${sdk-platform-tools}/aapt" />


    <property

        name="aidl"

        value="${sdk-platform-tools}/aidl" />


    <property

        name="dx"

        value="${sdk-platform-tools}/dx" />


    <property

        name="apkbuilder"

        value="${sdk-tools}/apkbuilder" />


    <property

        name="jarsigner"

        value="${env.JAVA_HOME}/bin/jarsigner" />


    <property

        name="zipalign"

        value="${sdk-tools}/zipalign" />


    <property

        name="adb"

        value="${sdk-platform-tools}/adb" />


    <!-- 生成R文件的相对目录 -->


    <property

        name="outdir-gen"

        value="gen" />


    <!-- 生成class目录 -->


    <property

        name="outdir-classes"

        value="${outdir-bin}" />


    <property

        name="outdir-classes-ospath"

        value="${basedir}/${outdir-classes}" />



    <!-- 编译时需要的jar,如果项目需要使用到地图服务则需要maps.jar -->


    <property

        name="android-jar"

        value="${sdk-platform-folder}/android.jar" />

    <!-- <property name="android-maps-jar" value="${sdk-folder}/add-ons/addon_google_apis_google_inc_8/libs/maps.jar" /> -->



    <!-- 编译aidl文件所需的预处理框架文件framework.aidl -->


    <property

        name="framework-aidl"

        value="${sdk-platform-folder}/framework.aidl" />


    <!-- Java源文件目录 -->


    <property

        name="srcdir"

        value="src" />


    <property

        name="srcdir-ospath"

        value="${basedir}/${srcdir}" />


    <property

        name="external-lib-ospath"

        value="${basedir}/${external-lib}" />

    <!-- proguard所在目录 -->


    <property

        name="proguard-dir"

        value="${sdk-folder}/tools/proguard/lib" />


    <property

        name="proguard-lib"

        value="${proguard-dir}/proguard.jar" />


    <property

        name="unoptimized"

        value="bin/unoptimized.jar" />


    <property

        name="optimized"

        value="bin/optimized.jar" />


    <!-- classes.dex相关变量 -->


    <property

        name="dex-file"

        value="classes.dex" />


    <property

        name="dex-path"

        value="${outdir-bin}/${dex-file}" />


    <property

        name="dex-ospath"

        value="${basedir}/${dex-path}" />


    <!-- 经过aapt生成的资源包文件 -->


    <property

        name="resources-package"

        value="${outdir-bin}/resources.ap_" />


    <property

        name="resources-package-ospath"

        value="${basedir}/${resources-package}" />


    <!-- 未签名apk包 -->


    <property

        name="out-unsigned-package"

        value="${outdir-bin}/${appName}-unsigned.apk" />


    <property

        name="out-unsigned-package-ospath"

        value="${basedir}/${out-unsigned-package}" />


    <!-- 证书文件 -->


    <property

        name="keystore-file"

        value="${basedir}/keystore/game.keystore" /> <!-- Stoneage_keystore.keystore -->



    <!-- 已签名apk包 -->


    <property

        name="out-signed-package"

        value="${outdir-bin}/${appName}-signed.apk" />


    <property

        name="out-signed-package-ospath"

        value="${basedir}/${out-signed-package}" />


    <tstamp>


        <format

            locale="zh"

            pattern="yyMMd"

            property="DSTAMP" />

    </tstamp>

    <!-- 优化后apk包 -->


    <property

        name="out-zipalign-package-ospath"

        value="${basedir}/${out-zipalign-package}" />


    <target name="init" >


        <echo>

${appName}

        </echo>


        <echo>

${DSTAMP}

        </echo>

    </target>


    <target

        name="initDir"

        depends="init" >


        <echo>

初始化文件夹...

        </echo>


        <delete dir="${outdir-classes}" />


        <mkdir dir="${outdir-classes}" />


        <echo>

初始化文件夹完成...

        </echo>


    </target>


    <!-- 根据工程中的资源文件生成R.java文件 -->


    <target

        name="gen-R"

        depends="initDir" >


        <echo>

生成R.java文件...

        </echo>


        <exec

            executable="${aapt}"

            failοnerrοr="true" >


            <arg value="package" />

            <!-- 输出详细内容 -->

            <!-- <arg value="-v" /> -->

            <!-- 强制覆盖已存在的文件 -->


            <arg value="-f" />

            <!-- 在-J指定的位置下生成相应的包的目录 -->


            <arg value="-m" />

            <!-- 指定R.java文件生成的目录 -->


            <arg value="-J" />


            <arg value="${outdir-gen}" />


            <!-- 指定配置清单文件 -->


            <arg value="-M" />


            <arg value="${android-manifest-xml}" />

            <!-- 指定资源文件目录 -->


            <arg value="-S" />


            <arg value="${resource-dir}" />

            <!-- 引入类库 -->


            <arg value="-I" />


            <arg value="${android-jar}" />

        </exec>


        <echo>

R.java文件生成完成...

        </echo>

    </target>


    <!-- 编译aidl文件 -->


    <target

        name="aidl"

        depends="gen-R" >


        <echo>

开始编译.aidl文件为.java文件...

        </echo>


        <apply

            executable="${aidl}"

            failοnerrοr="true"

            verbose="true" >


            <!-- aidl声明的目录 -->


            <arg value="-I${srcdir}" />

            <!-- 指定预处理文件 -->


            <arg value="-p${framework-aidl}" />

            <!-- 目标文件目录 -->


            <arg value="-o${outdir-gen}" />

            <!-- 指定哪些文件需要编译 -->


            <fileset dir="${srcdir}" >


                <include name="**/*.aidl" />

            </fileset>

        </apply>


        <echo>

aidl文件编译完成...

        </echo>

    </target>


    <!-- 将工程中的java源文件编译成class文件 -->


    <target

        name="compile"

        depends="aidl" >


        <echo>

编译Java源文件...

        </echo>

        <!-- bootclasspath 指定引导类文件的位置 -->


        <javac

            bootclasspath="${android-jar}"

            destdir="${outdir-classes}"

            encoding="UTF-8"

            includeantruntime="on"

            srcdir="."

            target="1.6"

            verbose="false" >


            <classpath>


                <fileset

                    dir="${external-lib}"

                    includes="*.jar" />

                <!--

                 <filelist>

                    <file name="${android-maps-jar}" />

                </filelist>

                -->

            </classpath>


        </javac>


        <echo>

Java源文件编译完成...

        </echo>

    </target>


    <!-- 将class文件进行混淆 -->


<property

        name="progurad_cfg"

        value="@proguards/proguard.cfg.${channelName}" />

<target name="optimize" depends="compile" >


        <echo>

开始进行代码混淆...

        </echo>


        <jar

            basedir="${outdir-classes}"

            destfile="${unoptimized}" />


        <java

            failοnerrοr="true"

            fork="true"

            jar="${proguard-lib}" >


            <!-- Dmaximum.inlined.code.length 默认值为8 设置内联代码的长度  -->


            <jvmarg value="-Dmaximum.inlined.code.length=32" />

            <!-- 指定配置文件  -->


            <arg value="${progurad_cfg}" />


            <arg value="-injars ${unoptimized}" />


            <arg value="-outjars ${optimized}" />


            <arg value="-libraryjars ${android-jar}" />

            <!--arg value="-libraryjars ${android-maps-jar}" /--> 

        </java>


        <delete dir="${outdir-classes}" />


        <mkdir dir="${outdir-classes}" />


        <unzip

            dest="${outdir-classes}"

            src="${optimized}" />


        <delete file="${unoptimized}" />


        <delete file="${optimized}" />


        <echo>

代码混淆完成...

        </echo>

    </target>



    <!-- 将.class文件转化成.dex文件   , optimize -->


    <target

        name="dex"

         depends="optimize">


        <echo>

编译文件和引用类库转化为.dex文件...

        </echo>


        <exec

            executable="${dx}"

            failοnerrοr="true" >


            <arg value="--dex" />

            <!-- <arg value="verbose" /> -->


            <arg value="--output=${dex-ospath}" />

            <!-- 要生成.dex文件的源classes和libraries -->


            <arg value="${outdir-classes-ospath}" />


            <arg value="${external-lib-ospath}" />

        </exec>


        <echo>

.dex文件转换完成...

        </echo>

    </target>


    <!-- 将资源文件放进输出目录 -->


    <target name="package-res-and-assets" >


        <echo>

开始转化资源文件...

        </echo>


        <delete dir="${assets-dir-ospath}" />


        <mkdir dir="${assets-dir-ospath}" />


        <copy todir="${assets-dir-ospath}" >


            <!-- 游戏自己的assets -->


            <fileset dir="${basedir}/assets" >


                <exclude name="**/*.svn" />

            </fileset>

            <!-- 渠道assets -->


            <fileset dir="${basedir}/assetsChannel/assets_${channelName}" >

            </fileset>

        </copy>


        <echo>

S:${resource-dir} A:${assets-dir} M:${android-manifest-xml} R:${resources-package}

        </echo>


        <exec

            executable="${aapt}"

            failοnerrοr="true" >


            <arg value="package" />


            <arg value="-f" />


            <arg value="-S" />


            <arg value="${resource-dir}" />


            <arg value="-A" />


            <arg value="${assets-dir}" />


            <arg value="-M" />


            <arg value="${android-manifest-xml}" />


            <arg value="-I" />


            <arg value="${android-jar}" />


            <arg value="-F" />


            <arg value="${resources-package}" />

        </exec>


        <echo>

资源文件转化完成...

        </echo>

    </target>


    <!-- 打包成未签名的apk -->


    <target

        name="package"

        depends="dex, package-res-and-assets" >


        <echo>

开始打包未签名程序...

        </echo>


        <copy todir="${external-libs-ospath}/armeabi" >


            <fileset dir="libs/armeabi" >

            </fileset>

        </copy>


        <exec

            executable="${apkbuilder}"

            failοnerrοr="true" >


            <arg value="${out-unsigned-package-ospath}" />

            <!-- 输出详细内容 -->

            <!-- <arg value="-v" /> -->

            <!-- 创建未签名程序 -->


            <arg value="-u" />

            <!-- 指定dex文件添加到应用程序包中 -->


            <arg value="-f" />


            <arg value="${dex-ospath}" />

            <!-- 指定资源文件添加到应用程序包中 -->


            <arg value="-z" />


            <arg value="${resources-package-ospath}" />

            <!-- 参照源文件的目录结构 -->


            <arg value="-rf" />


            <arg value="${srcdir-ospath}" />

            <!-- 打入so文件 -->


            <arg value="-rj" />


            <arg value="${external-libs-ospath}" />


            <arg value="-nf" />


            <arg value="${external-libs-ospath}" />

        </exec>


        <echo>

未签名程序打包完成...

        </echo>

    </target>


    <!-- 对apk进行签名 -->


    <target

        name="jarsigner"

        depends="package" >


        <echo>

开始为apk文件签名...

        </echo>


        <exec

            executable="${jarsigner}"

            failοnerrοr="true" >


            <!-- TODO使用游戏签名,签名/验证时输出详细信息 -->


            <arg value="-verbose" />

            <!-- 密钥库位置 -->


            <arg value="-keystore" />


            <arg value="${keystore-file}" />

            <!-- 用于密钥库完整性的口令 -->


            <arg value="-storepass" />


            <arg value="android" />

            <!-- 专用密钥的口令(如果不同) -->


            <arg value="-keypass" />


            <arg value="android" />

            <!-- 已签名的 JAR文件的名称 -->


            <arg value="-signedjar" />


            <arg value="${out-signed-package-ospath}" />

            <!-- 要签名的JAR文件 -->


            <arg value="${out-unsigned-package-ospath}" />

            <!-- 文件别名 -->


            <arg value="androiddebugkey" />

        </exec>


        <echo>

apk文件签名完成...

        </echo>

    </target>


    <!-- 对apk进行优化 -->


    <target

        name="zipalign"

        depends="jarsigner" >


        <echo>

开始对apk文件进行优化...

        </echo>


        <exec

            executable="${zipalign}"

            failοnerrοr="true" >


            <!-- 覆盖已经存在的文件 -->


            <arg value="-f" />

            <!-- 输出详细内容 -->


            <arg value="-v" />

            <!-- 以字节为单位对齐  4 提供了32位对齐 -->


            <arg value="4" />

            <!-- 需要优化的apk文件 -->


            <arg value="${out-signed-package}" />

            <!-- 优化完成的apk文件 -->


            <arg value="${out-zipalign-package}" />

        </exec>


        <echo>

apk文件优化完成...

        </echo>

    </target>


    <!-- 发布 -->


    <target

        name="release"

        depends="zipalign" >


        <!-- 删除未签名apk -->


        <delete file="${out-unsigned-package-ospath}" />


        <delete file="${out-signed-package}" />


        <echo>

APK文件生成完成,生成目录:${out-zipalign-package-ospath}

        </echo>

    </target>


    <!-- 安装 -->


    <target name="install" >


        <echo>

开始安装apk文件...

        </echo>


        <exec

            executable="${adb}"

            failοnerrοr="true" >


            <arg value="install" />


            <arg value="${out-zipalign-package}" />

        </exec>


        <echo>

apk文件安装完成...

        </echo>

    </target>


    <!-- 重新安装 -->


    <target

        name="reinstall"

        depends="release" >


        <echo>

开始卸载apk文件...

        </echo>


        <exec

            executable="${adb}"

            failοnerrοr="true" >


            <arg value="uninstall" />


            <arg value="${appPackage}" />

        </exec>


        <echo>

apk文件卸载完成...

        </echo>


        <echo>

开始安装apk文件...

        </echo>


        <exec

            executable="${adb}"

            failοnerrοr="true" >


            <arg value="install" />


            <arg value="${out-zipalign-package}" />

        </exec>


        <echo>

apk文件安装完成...

        </echo>

    </target>


    <!-- 卸载 -->


    <target name="uninstall" >


        <echo>

开始卸载apk文件...

        </echo>


        <exec

            executable="${adb}"

            failοnerrοr="true" >


            <arg value="uninstall" />


            <arg value="${appPackage}" />

        </exec>


        <echo>

apk文件卸载完成...

        </echo>

    </target>


</project>

//以上是build.xml内容

打包步骤如下:

以XX渠道为例

1.准备好XX渠道的SDK_TO_CP工程包

2.libChannel中新增 lib_XX

    lib_XX中放sdk中的jar包,如果sdk中包含java文件,则需放到游戏工程

3.resChannel中新增 res_XX

    res_XX中放 游戏和sdk的合并之后的res

4.Manifest中新增Manifest_XX目录

    manifest_XX中放 游戏和sdk的合并之后AndroidManifest.xml,修改包名

    

5.新建build_XXX.xml,内容拷贝build_91.xml中的内容,需修改的地方均有TODO标示


6.选中build_XXX.xml,右键运行,run as->Ant Build...->run


(2014-04-04 写于百度空间)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值