ant编译android工程用批处理打包
1.先配置文件目录:<!--配置文件local.properies-->
sdk.dir=D:\\android-sdk\\android-sdk
project.sdkenv=D:\\android-sdk\\android-sdk
project.antenv=C:\\ant_1.9.3\\lib\\ant-contrib-1.0b3.jar
#projectnameandversion<!--工程名和版本-->
project.name=工程名
project.version=V1.00.10
#keysorefile<!--工程签名-->
keystore.file=platform.keystore
key.alias=android
key.alias.password=android
key.store.password=android
#libraryproject<!--工程引用-->
library-dir=D:\\androidPro\\..
library-dir2=D:\\androidPro\\..
2.编写build.xml
<!--build.xml-->
<?xmlversion="1.0"encoding="UTF-8"?>
<projectname="包名"default="help"basedir=".">
<propertyfile="local.properties"/>
<!--环境变量-->
<propertyenvironment="env"/>
<!--应用名称-->
<propertyname="appName"value="${project.name}"/>
<!--应用版本号-->
<propertyname="appVersions"value="${project.version}"/>
<!--SDK目录-->
<propertyname="sdk-folder"value="${project.sdkenv}"/>
<!--SDK指定平台目录-->
<propertyname="sdk-platform-folder"value="${sdk-
folder}/platforms/android-19"/>
<!--SDK中tools目录-->
<propertyname="sdk-tools"value="${sdk-folder}/tools"/>
<!--SDK指定平台中tools目录-->
<propertyname="sdk-platform-tools"value="${sdk-
folder}/build-tools/19.0.1"/>
<!--SDK命令-->
<propertyname="aapt"value="${sdk-platform-tools}/aapt"/>
<propertyname="aidl"value="${sdk-platform-tools}/aidl"/>
<propertyname="dx"value="${sdk-platform-tools}/dx.bat"/>
<propertyname="apkbuilder"value="${sdk-
tools}/apkbuilder.bat"/>
<propertyname="jarsigner"
value="${env.JAVA_HOME}/bin/jarsigner"/>
<propertyname="zipalign"value="${sdk-tools}/zipalign.exe"/>
<propertyname="proguard-home"value="${sdk-
tools}/proguard/lib/proguard.jar"/>
<!--编译需要的jar-->
<propertyname="android-jar"value="${sdk-platform-
folder}/android.jar"/>
<!--项目使用到地图服务则需要maps.jar-->
<propertyname="android-maps-jar"value="${sdk-folder}/add-
ons/addon-google_apis-google-19/libs/maps.jar"/>
<!--编译aidl文件所需的预处理框架文件framework.aidl-->
<propertyname="framework-aidl"value="${sdk-platform-
folder}/framework.aidl"/>
<!--清单文件-->
<propertyname="manifest-xml"value="AndroidManifest.xml"/>
<!--源文件目录-->
<propertyname="resource-dir"value="res"/>
<propertyname="asset-dir"value="assets"/>
<!--java源文件目录-->
<propertyname="srcdir"value="src"/>
<propertyname="srcdir-ospath"value="${basedir}/${srcdir}"/>
<!--外部类库所在目录-->
<propertyname="external-lib"value="libs"/>
<propertyname="external-lib-ospath"value="${basedir}/
${external-lib}"/>
<propertyname="external-library-dir-lib-ospath"
value="${library-dir}/${external-lib}"/>
<propertyname="external-library-dir2-lib-ospath"
value="${library-dir2}/${external-lib}"/>
<!--使用第三方的ant包,使ant支持for循环-->
<taskdefresource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelementlocation="${project.antenv}"/>
</classpath>
</taskdef>
<!--初始化工作-->
<targetname="init">
<echo>目录初始化....</echo>
<varname="out"value="out"/>
<!--生成R文件的相对目录-->
<varname="outdir-gen"value="gen"/>
<!--编译后的文件放置目录-->
<varname="outdir-bin"value="bin-new"/>
<!--生成class目录-->
<varname="outdir-classes"value="${outdir-
bin}/classes"/>
<varname="outdir-classes-ospath"value="${basedir}/
${outdir-classes}"/>
<!--classes.dex相关变量-->
<varname="dex-file"value="classes.dex"/>
<varname="dex-path"value="${outdir-bin}/${dex-file}"
/>
<varname="dex-ospath"value="${basedir}/${dex-path}"
/>
<!--经过aapt生成的资源包文件-->
<varname="resources-package"value="${outdir-
bin}/resources.ap_"/>
<varname="resources-package-ospath"
value="${basedir}/${resources-package}"/>
<!--未认证apk包-->
<varname="out-unsigned-package"value="${outdir-
bin}/${appName}_${appVersions}_unsigned.apk"/>
<varname="out-unsigned-package-ospath"
value="${basedir}/${out-unsigned-package}"/>
<!--已认证apk包-->
<varname="out-signed-package"value="${outdir-bin}/
${appName}_${appVersions}_signed.apk"/>
<varname="out-signed-package-ospath"
value="${basedir}/${out-signed-package}"/>
<!--已优化apk包-->
<varname="zipalign-signed-package"value="${outdir-bin}/
${appName}_${appVersions}_zipalign.apk"/>
<deletedir="${outdir-bin}"/>
<mkdirdir="${outdir-bin}"/>
<mkdirdir="${outdir-classes}"/>
</target>
<!--根据工程中的资源文件生成R.java文件-->
<targetname="gen-R"depends="init">
<echo>生成R.java文件....</echo>
<execexecutable="${aapt}"failonerror="true">
<argvalue="package"/>
<argvalue="-f"/>
<argvalue="-m"/>
<argvalue="-J"/>
<argvalue="${outdir-gen}"/>
<argvalue="-M"/>
<argvalue="${manifest-xml}"/>
<argvalue="-S"/>
<argvalue="${resource-dir}"/>
<argvalue="-I"/>
<argvalue="${android-jar}"/>
</exec>
</target>
<!--编译aidl文件-->
<targetname="aidl"depends="gen-R">
<echo>编译aidl文件....</echo>
<applyexecutable="${aidl}"failonerror="true">
<!--指定预处理文件-->
<argvalue="-p${framework-aidl}"/>
<!--aidl声明的目录-->
<argvalue="-I${srcdir}"/>
<!--目标文件目录-->
<argvalue="-o${outdir-gen}"/>
<!--指定哪些文件需要编译-->
<filesetdir="${srcdir}">
<includename="**/*.aidl"/>
</fileset>
</apply>
</target>
<!--将工程中的java源文件编译成class文件-->
<targetname="compile"depends="aidl">
<echo>正在编译Java源文件...</echo>
<!--mavlink编译class-->
<javacencoding="UTF-8"destdir="${outdir-classes}"
bootclasspath="${android-jar}">
<srcpath="${library-dir2}/src"/>
<classpath>
<filesetdir="${external-library-dir2-lib-ospath}"
includes="*.jar"/>
</classpath>
</javac>
<!--core编译class-->
<javacencoding="UTF-8"destdir="${outdir-classes}"
bootclasspath="${android-jar}">
<srcpath="${library-dir}/src"/>
<classpath>
<filesetdir="${external-library-dir-lib-ospath}"
includes="*.jar"/>
</classpath>
</javac>
<!--主类编译class-->
<javacencoding="UTF-8"target="1.7"
srcdir="${basedir}"includeAntRuntime="false"destdir="${outdir-
classes}"bootclasspath="${android-jar}"verbose="false"debug="on">
<classpath>
<filesetdir="${external-lib}"
includes="*.jar"/>
<filesetdir="${external-library-dir-
lib-ospath}"includes="*.jar"/>
<filesetdir="${external-library-dir2
-lib-ospath}"includes="*.jar"/>
<filelist>
<filename="${android-maps-jar}"/>
</filelist>
</classpath>
</javac>
</target>
<!--进行class混淆后期添加-->
<!--<targetname="obfuscate"depends="compile">
<echo>正在进行class混淆。。。</echo>
<jarbasedir="${outdir-classes}"destfile="${outdir-
bin}/temp.jar"/>
<javajar="${android.proguard}"fork="true"
failonerror="true">
<jvmargvalue="-Dmaximum.inlined.code.length=16"/>
<argvalue="@${basedir}/proguard.cfg"/>
<argvalue="-injars${outdir-bin}/temp.jar"/>
<argvalue="-outjars./dist/obfuscated.jar"/>
<argvalue="-libraryjars${android-jar}"/>
<argvalue="-libraryjars
${library_annotation}/annotations.jar"/>第三方jar包需要引用,用于辅助
编译
</java>
<deletedir="${outdir-classes}"/>
<mkdirdir="${outdir-classes}"/>
<unzipsrc="./dist/obfuscated.jar"dest="${outdir-
classes}"/>
<deletedir="./dist"/>
<deletefile="${outdir-bin}/temp.jar"/>
</target>-->
<!--将.class文件转化成.dex文件-->
<targetname="dex"depends="compile">
<echo>正在将.class文件转化成.dex文件...</echo>
<execexecutable="${dx}"failonerror="true">
<argvalue="--dex"/>
<!--输出文件-->
<argvalue="--output=${dex-ospath}"/>
<!--要生成.dex文件的源classes和libraries-->
<argvalue="${outdir-classes-ospath}"/>
<argvalue="${external-lib-ospath}"/>
</exec>
</target>
<!--将资源文件放进输出目录-->
<targetname="package-res-and-assets">
<echo>正在打包资源文件...</echo>
<execexecutable="${aapt}"failonerror="true">
<argvalue="package"/>
<argvalue="-f"/>
<argvalue="-M"/>
<argvalue="${manifest-xml}"/>
<argvalue="-S"/>
<argvalue="${resource-dir}"/>
<argvalue="-A"/>
<argvalue="${asset-dir}"/>
<argvalue="-I"/>
<argvalue="${android-jar}"/>
<argvalue="-F"/>
<argvalue="${resources-package}"/>
</exec>
</target>
<!--打包成未签证的apk-->
<targetname="package"depends="dex,package-res-and-assets">
<echo>正在生成未签名apk...</echo>
<execexecutable="${apkbuilder}"failonerror="true">
<argvalue="${out-unsigned-package-ospath}"/>
<argvalue="-u"/>
<argvalue="-z"/>
<argvalue="${resources-package-ospath}"/>
<argvalue="-f"/>
<argvalue="${dex-ospath}"/>
<argvalue="-rf"/>
<argvalue="${srcdir-ospath}"/>
<!--将第三方的资源文件打包进去-->
<argvalue="-rj"/>
<argvalue="${external-lib-ospath}"/>
<!--将so文件打包进去-->
<argvalue="-nf"/>
<argvalue="${external-lib-ospath}"/>
</exec>
</target>
<!--对apk进行签名-->
<targetname="jarsigner"depends="package">
<echo>正在为apk文件签名...(默认为开发模式下签名文件)
</echo>
<execexecutable="${jarsigner}"failonerror="true">
<argvalue="-keystore"/>
<argvalue="${keystore.file}"/>
<argvalue="-storepass"/>
<argvalue="${key.store.password}"/>
<argvalue="-keypass"/>
<argvalue="${key.alias.password}"/>
<argvalue="-signedjar"/>
<argvalue="${out-signed-package-ospath}"/>
<argvalue="${out-unsigned-package-ospath}"/>
<!--证书的别名-->
<argvalue="${key.alias}"/>
</exec>
<echo>签名完成</echo>
<!--删除未签证apk-->
<deletefile="${out-unsigned-package-ospath}"/>
</target>
<!--打包的应用程序进行优化-->
<targetname="zipalign"depends="jarsigner">
<echo>正在优化apk...</echo>
<execexecutable="${zipalign}"failonerror="true">
<argvalue="-v"/>
<argvalue="4"/>
<argvalue="${out-signed-package-ospath}"/>
<argvalue="${zipalign-signed-package}"/>
</exec>
<echo>优化完成</echo>
<!--删除未优化apk-->
<deletefile="${out-signed-package-ospath}"/>
</target>
<!--发布-->
<targetname="release"depends="zipalign">
<echo>APK打包完成,apk对应的路径为:${zipalign-signed-
package}</echo>
</target>
</project>
3.编写批处理文件
cmd->antrealease就可以了