使用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>

相关推荐