ant源码
<?xml version="1.0" encoding="UTF-8"?>
<project name="identity" default="package-delete" basedir=".">
<!--应用标识:格式为域名去掉点"一-->
<property name="app_id" value="" />
<!--应用名称-->
<property name="app_name" value="" />
<!--版本号-->
<property name="version" value="" />
<!-- 主机地址 -->
<property name="host_address" value="" />
<!--需要手动配置,拥有自定义视图的布局文件-->
<property name="assist-sign" value="." />
<!--jdk、sdk环境配置-->
<property name="jdk.folder" value="C:\Program Files\Java\jdk1.6.0_24" />
<property name="sdk.folder" value="D:\wwwroot\basf\jdk\android-sdk-windows" />
<property name="platform.tools" value="${sdk.folder}\platform-tools" />
<property name="platform" value="${sdk.folder}\platforms\android-17" />
<property name="build.tools" value="${sdk.folder}\build-tools\17.0.0" />
<!--下方的代码为只读,不能被修改-->
<property name="keystore" value="${basedir}\enterpriseclient.keystore" />
<property name="out-dir-package" value="bin/${ant.project.name}.apk" />
<property name="aapt" value="${build.tools}\aapt.exe" />
<property name="android-jar" value="${platform}\android.jar" />
<property name="aidl" value="${build.tools}\aidl.exe" />
<property name="dx" value="${build.tools}\dx.bat" />
<property name="apk-builder" value="${sdk.folder}\tools\apkbuilder.bat" />
<property name="jarsigner" value="${jdk.folder}\bin\jarsigner.exe" />
<property name="zipalign" value="${sdk.folder}\tools\zipalign.exe" />
<property name="android-framework" value="${platform}\framework.aidl" />
<property name="manifest" value="AndroidManifest.xml" />
<property name="strings" value="res/values/strings.xml" />
<property name="outdir-gen" value="gen" />
<property name="resource-dir" value="res" />
<property name="asset-dir" value="assets" />
<property name="password" value="enterpriseclient" />
<property name="srcdir" value="src" />
<property name="srcdir-ospath" value="${basedir}\${srcdir}" />
<property name="outdir-bin" value="bin" />
<property name="outdir-classes" value="${outdir-bin}\classes" />
<property name="outdir-obfuscate-classes-ospath" value="${basedir}\${outdir-classes}" />
<property name="dex-file" value="classes.dex" />
<property name="intermediate-dex" value="${outdir-bin}\${dex-file}" />
<property name="intermediate-dex-ospath" value="${basedir}\${intermediate-dex}" />
<property name="resources-package" value="${outdir-bin}/${ant.project.name}.ap_" />
<property name="out-unsigned-package" value="${outdir-bin}/${ant.project.name}-unsigned.apk" />
<property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" />
<property name="out-signed-package" value="${outdir-bin}/${ant.project.name}-signed.apk" />
<property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" />
<property name="resources-package" value="${outdir-bin}/${ant.project.name}.ap_" />
<property name="resources-package-ospath" value="${basedir}/${resources-package}" />
<property name="external-libs" value="libs" />
<property name="android-libs" value="${basedir}\libs" />
<property name="outdir-libs" value="${outdir-bin}\${external-libs}" />
<!-- 自定义视图 -->
<property name="banner_imageview_detail" value="res/layout/banner_imageview_detail.xml"/>
<property name="good_detail_activity" value="res/layout/good_detail_activity.xml"/>
<property name="good_detail_list" value="res/layout/good_detail_list.xml"/>
<property name="gooditemlarge" value="res/layout/gooditemlarge.xml"/>
<property name="hotselling_cell" value="res/layout/hotselling_cell.xml"/>
<property name="logistic_list" value="res/layout/logistic_list.xml"/>
<property name="pager_imageview" value="res/layout/pager_imageview.xml"/>
<property name="profile" value="res/layout/profile.xml"/>
<property name="search" value="res/layout/search.xml"/>
<property name="shop_car" value="res/layout/shop_car.xml"/>
<property name="shop_notify" value="res/layout/shop_notify.xml"/>
<property name="shophelp_cell" value="res/layout/shophelp_cell.xml"/>
<property name="specification_cell" value="res/layout/specification_cell.xml"/>
<property name="specification_value_cell" value="res/layout/specification_value_cell.xml"/>
<property name="trade_list" value="res/layout/trade_list.xml"/>
<property name="two_good_item" value="res/layout/two_good_item.xml"/>
<!--开始打包-->
<target name="init">
<echo message="5" />
<echo message="create new package..." />
<mkdir dir="src/com/kplusshop/${app_id}" />
</target>
<target name="move" depends="init">
<echo message="10" />
<echo message="move all the java files to new package" />
<move todir="src/com/kplusshop/${app_id}" failοnerrοr="true">
<fileset dir="src/com/kplusshop/identity">
<include name="**/*.java" />
</fileset>
</move>
</target>
<target name="delete" depends="move">
<echo message="15" />
<echo message="delete old package" />
<delete dir="src/com/kplusshop/identity" includeemptydirs="true" failοnerrοr="true">
</delete>
</target>
<target name="modifypackage" depends="delete">
<echo message="20" />
<echo message="modify the packagename of all the files" />
<!--修改所有.java文件的包名-->
<replace dir="src/com/kplusshop/${app_id}" token="${assist-sign}ecmobile" value="${assist-sign}${app_id}">
</replace>
<!--修改XMPPUtility.java中的域名前缀-->
<replaceregexp file="src/com/kplusshop/${app_id}/ConstantToHelper.java" match="HOST_ADDRESS = "(.*)"" replace="BASE_URL = "${host_address}"" encoding="utf-8" byline="true">
</replaceregexp>
<!--修改所有strings.xml相关数据-->
<replaceregexp file="${strings}" match="<string name="app_name">(.*)</string>" replace="<string name="app_name">${app_name}</string>" encoding="utf-8" byline="true">
</replaceregexp>
<replaceregexp file="${strings}" match="<string name="app_id">(.*)</string>" replace="<string name="app_id">${app_id}</string>" encoding="utf-8" byline="true">
</replaceregexp>
<!--修改所有AndroidManifest.xml文件的包名-->
<replaceregexp file="${manifest}" match="package="com.kplusshop.identity.(.*)"" replace="package="com.kplusshop.identity.${app_id}"" byline="true">
</replaceregexp>
<replaceregexp file="${manifest}" match="android:versionName="(.*)"" replace="android:versionName="${version}"" byline="true">
</replaceregexp>
<!-- 修改自定义视图 -->
<replace file="${banner_imageview_detail}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${good_detail_activity}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${good_detail_list}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${gooditemlarge}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${hotselling_cell}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${logistic_list}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${pager_imageview}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${profile}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${search}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${shop_car}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${shop_notify}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${shophelp_cell}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${specification_cell}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${specification_value_cell}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${trade_list}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
<replace file="${two_good_item}" token="${assist-sign}identity" value="${assist-sign}${app_id}">
</replace>
</target>
<target name="delete-r-file" depends="modifypackage">
<echo message="25" />
<echo message="Deleting the old R.java..." />
<delete dir="${outdir-gen}/mobi/toms/trade/identity" includeemptydirs="true" failοnerrοr="true">
</delete>
</target>
<target name="generate-r-file" depends="delete-r-file">
<echo message="30" />
<echo message="Generating R.java from the resources..." />
<exec executable="${aapt}" failοnerrοr="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="${outdir-gen}" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
</exec>
</target>
<!--修改包名结束-->
<!--Readonly Operate:Start Packaged-->
<target name="package-init" depends="generate-r-file">
<echo message="35" />
<echo message="Creating all output directories..." />
<delete dir="${outdir-bin}" />
<mkdir dir="${outdir-bin}" />
<mkdir dir="${outdir-classes}" />
<mkdir dir="${outdir-libs}" />
<mkdir dir="${outdir-libs}\${asset-dir}" />
</target>
<target name="package-aidl" depends="package-init">
<echo message="40" />
<echo message="Compiling aidl files into Java classes..." />
<apply executable="${aidl}" failοnerrοr="true">
<arg value="-p${android-framework}" />
<arg value="-I${srcdir}" />
<fileset dir="${srcdir}">
<include name="**/*.aidl" />
</fileset>
</apply>
</target>
<target name="package-compile" depends="package-init,package-aidl">
<echo message="45" />
<echo message="Compile the project's .java files into .class files." />
<javac encoding="UTF-8" target="1.5" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" verbose="false" classpath="${basedir}\${outdir-classes}" includeantruntime="on">
<classpath>
<fileset dir="${external-libs}" includes="*.jar" />
</classpath>
</javac>
</target>
<!---
<target name="package-unjar" depends="package-compile">
<echo message="50" />
<echo message="unjar baidumapapi_v2_0_0.jar file" />
<unjar src="${external-libs}\baidumapapi_v2_1_2.jar" dest="${outdir-libs}">
</unjar>
<copy todir="${asset-dir}" failοnerrοr="true">
<fileset dir="${outdir-libs}\${asset-dir}">
<include name="**" />
</fileset>
</copy>
<delete dir="${outdir-libs}" failοnerrοr="true">
</delete>
</target>
-->
<target name="package-dex" depends="package-compile">
<echo message="57" />
<echo>Converting compiled files and external libraries into the classes.dex file...</echo>
<apply executable="${dx}" failοnerrοr="true" parallel="true">
<arg value="--dex" />
<arg value="--output=${intermediate-dex-ospath}" />
<arg path="${outdir-obfuscate-classes-ospath}" />
<fileset dir="${external-libs}" includes="*.jar" />
</apply>
</target>
<!--package res and assets folder-->
<target name="package-res-and-assets">
<echo message="71" />
<echo>Packaging resources and assets...</echo>
<exec executable="${aapt}" failοnerrοr="true">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-A" />
<arg value="${asset-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="${resources-package}" />
</exec>
</target>
<!--package res and no assets folder-->
<target name="package-res-no-assets">
<echo message="71" />
<echo>Packaging resources...</echo>
<exec executable="${aapt}" failοnerrοr="true">
<arg value="package" />
<arg value="-f" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-S" />
<arg value="${resource-dir}" />
<arg value="-I" />
<arg value="${android-jar}" />
<arg value="-F" />
<arg value="${resources-package}" />
</exec>
</target>
<target name="package-res">
<echo message="64" />
<echo message="handle resources packaging..." />
<property name="res-target" value="no-assets" />
<available file="${asset-dir}" type="dir" property="res-target" value="and-assets" />
<antcall target="package-res-${res-target}" />
</target>
<target name="package-release" depends="package-dex, package-res">
<echo message="78" />
<echo>Packaging ${out-unsigned-package} for release...</echo>
<exec executable="${apk-builder}" failοnerrοr="true">
<arg value="${out-unsigned-package-ospath}" />
<arg value="-u" />
<arg value="-z" />
<arg value="${resources-package-ospath}" />
<arg value="-f" />
<arg value="${intermediate-dex-ospath}" />
<arg value="-rf" />
<arg value="${srcdir-ospath}" />
<arg value="-rj" />
<arg value="." />
<arg value="-nf" />
<arg value="${android-libs}" />
</exec>
</target>
<target name="jarsigner" depends="package-release">
<echo message="85" />
<echo message="Signing apk file..." />
<exec executable="${jarsigner}" failοnerrοr="true">
<arg value="-verbose" />
<arg value="-storepass" />
<arg value="${password}" />
<arg value="-keystore" />
<arg value="${keystore}" />
<arg value="-signedjar" />
<arg value="${out-signed-package-ospath}" />
<arg value="${out-unsigned-package-ospath}" />
<arg value="${password}" />
</exec>
</target>
<target name="zipalign" depends="jarsigner">
<echo message="92" />
<echo message="zipalign apk file..." />
<exec executable="${zipalign}" failοnerrοr="true">
<arg value="-v" />
<arg value="-f" />
<arg value="4" />
<arg value="${out-signed-package-ospath}" />
<arg value="${out-dir-package}" />
</exec>
</target>
<target name="package-delete" depends="zipalign">
<echo message="100" />
<echo message="Deleting garbage file..." />
<delete file="${out-signed-package-ospath}" failοnerrοr="true" />
<delete file="${out-unsigned-package-ospath}" failοnerrοr="true" />
</target>
<!--Readonly Operate:End Packaged-->
</project>