使用Ant脚本编译打包android
<!--根据别人的ant脚本修改的-->
<?xmlversion="1.0"encoding="UTF-8"?>
<projectname="android_target"default="package">
<!--引用属性配置文件-->
<propertyfile="build.properties"></property>
<!--ANT环境变量-->
<propertyenvironment="env"/>
<!--应用名称-->
<propertyname="appName"value="${ant.project.name}"/>
<!--SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值)-->
<propertyname="sdk-folder"value="${env.ANDROID_SDK_HOME}"/>
<!--SDK指定平台目录-->
<propertyname="sdk-platform-folder"value="${sdk-folder}/platforms/android-8"/>
<!--SDK中tools目录-->
<propertyname="sdk-tools"value="${sdk-folder}/tools"/>
<!--SDK指定平台中tools目录-->
<propertyname="sdk-platform-tools"value="${sdk-platform-folder}/tools"/>
<!--
<propertyname="sdk-platform-tools"value="${sdk-folder}/platform-tools"/>
-->
<!--使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令)-->
<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"/>
<!--编译需要的jar;如果项目使用到地图服务则需要maps.jar-->
<propertyname="android-jar"value="${sdk-platform-folder}/android.jar"/>
<!--propertyname="android-maps-jar"value="${sdk-folder}/add-ons/addon_google_apis_google_inc_8/libs/maps.jar"/-->
<!--编译aidl文件所需的预处理框架文件framework.aidl-->
<propertyname="framework-aidl"value="${sdk-platform-folder}/framework.aidl"/>
<!--生成R文件的相对目录-->
<propertyname="outdir-gen"value="gen"/>
<!--编译后的文件放置目录-->
<propertyname="outdir-bin"value="bin"/>
<!--清单文件-->
<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="lib"/>
<propertyname="external-libs"value="libs"/>
<propertyname="external-lib-ospath"value="${basedir}/${external-lib}"/>
<propertyname="external-lib-ospaths"value="${basedir}/${external-libs}"/>
<!--生成class目录-->
<propertyname="outdir-classes"value="${outdir-bin}"/>
<propertyname="outdir-classes-ospath"value="${basedir}/${outdir-classes}"/>
<!--classes.dex相关变量-->
<propertyname="dex-file"value="classes.dex"/>
<propertyname="dex-path"value="${outdir-bin}/${dex-file}"/>
<propertyname="dex-ospath"value="${basedir}/${dex-path}"/>
<!--经过aapt生成的资源包文件-->
<propertyname="resources-package"value="${outdir-bin}/resources.ap_"/>
<propertyname="resources-package-ospath"value="${basedir}/${resources-package}"/>
<!--未认证apk包-->
<propertyname="out-unsigned-package"value="${outdir-bin}/${appName}-unsigned.apk"/>
<propertyname="out-unsigned-package-ospath"value="${basedir}/${out-unsigned-package}"/>
<!--证书文件-->
<propertyname="keystore-file"value="${basedir}/release.keystore"/>
<!--已认证apk包-->
<propertyname="out-signed-package"value="${outdir-bin}/${appName}.apk"/>
<propertyname="out-signed-package-ospath"value="${basedir}/${out-signed-package}"/>
<!--初始化工作-->
<targetname="init">
<echo>Initializingalloutputdirectories...</echo>
<deletedir="${outdir-bin}"/>
<deletedir="${basedir}/gen"/>
<deletedir="${basedir}/assets"/>
<deletefile="${basedir}/resources-package"/>
<touchfile="${basedir}/resources-package"/>
<mkdirdir="${outdir-bin}"/>
<mkdirdir="${outdir-classes}"/>
<mkdirdir="${basedir}/gen"/>
<mkdirdir="${basedir}/assets"/>
</target>
<!--根据工程中的资源文件生成R.java文件-->
<targetname="gen-R"depends="init">
<echo>GeneratingR.javafromtheresources...</echo>
<execexecutable="${aapt}"failonerror="true">
<argvalue="package"/>
<argvalue="-f"/>
<argvalue="-m"/>
<argvalue="-J"/>
<argvalue="${outdir-gen}"/>
<argvalue="-S"/>
<argvalue="${resource-dir}"/>
<argvalue="-M"/>
<argvalue="${manifest-xml}"/>
<argvalue="-I"/>
<argvalue="${android-jar}"/>
</exec>
</target>
<!--编译aidl文件-->
<targetname="aidl"depends="gen-R">
<echo>Compiling.aidlintojavafiles...</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>Compilingjavasourcecode...</echo>
<javacencoding="utf-8"target="1.5"srcdir="."destdir="${outdir-classes}"bootclasspath="${android-jar}"includeantruntime="on">
<classpath>
<filesetdir="${external-lib}"includes="*.jar"/>
<filesetdir="${external-libs}"includes="*.jar"/>
<!--<filelist>
<filename="${android-maps-jar}"/>
</filelist>-->
</classpath>
</javac>
</target>
<!--将.class文件转化成.dex文件-->
<targetname="dex"depends="compile">
<echo>Convertingcompiledfilesandexternallibrariesintoa.dexfile...</echo>
<execexecutable="${dx}"failonerror="true">
<argvalue="--dex"/>
<!--输出文件-->
<argvalue="--output=${dex-ospath}"/>
<!--要生成.dex文件的源classes和libraries-->
<argvalue="${outdir-classes-ospath}"/>
<argvalue="${external-lib-ospath}"/>
<argvalue="${external-lib-ospaths}"/>
</exec>
</target>
<!--将资源文件放进输出目录-->
<targetname="package-res-and-assets">
<echo>Packagingresourcesandassets...</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>Packagingunsignedapkforrelease...</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}"/>
</exec>
<echo>Itwillneedtobesignedwithjarsignerbeforebeingpublished.</echo>
</target>
<!--对apk进行签证-->
<targetname="jarsigner"depends="package">
<echo>Packagingsignedapkforrelease...</echo>
<execexecutable="${jarsigner}"failonerror="true">
<argvalue="-keystore"/>
<argvalue="${keystore-file}"/>
<argvalue="-storepass"/>
<argvalue="123456"/>
<argvalue="-keypass"/>
<argvalue="123456"/>
<argvalue="-signedjar"/>
<argvalue="${out-signed-package-ospath}"/>
<argvalue="${out-unsigned-package-ospath}"/>
<!--不要忘了证书的别名-->
<argvalue="release"/>
</exec>
</target>
<!--发布-->
<targetname="release"depends="jarsigner">
<!--删除未签证apk-->
<deletefile="${out-unsigned-package-ospath}"/>
<echo>APKisreleased.path:${out-signed-package-ospath}</echo>
</target>
<!--调试-->
<targetname="debug">
<echomessage="${out-unsigned-package-ospath}"></echo>
</target>
</project>