Build脚本

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="zipalign" basedir=".">
<property name="password" value="123456"/>

<!-- environment of the system -->
<property environment="env"/>

<!-- current time -->
<tstamp>
<format property="today" pattern="yyMMdd_hhmmss"/>
</tstamp>

<property name="dir.android_home" value="${env.ANDROID_HOME}"/>
<property name="dir.java_home" value="${env.JAVA_HOME}"/>

<!-- relative dir of android sdk -->
<property name="dir.tools" value="${dir.android_home}/tools"/>
<property name="dir.platform" value="${dir.android_home}/platforms/android-7"/>
<property name="dir.platform_tools" value="${dir.android_home}/platform-tools"/>
<property name="lib.android" value="${dir.platform}/android.jar"/>
<property name="android.framework" value="${dir.platform}/framework.aidl"/>

<!-- command tools in android sdk -->
<property name="aapt" value="${dir.platform_tools}/aapt"/>
<property name="aidl" value="${dir.platform_tools}/aidl"/>
<property name="adb" value="${dir.platform_tools}/adb"/>
<property name="zipalign" value="${dir.tools}/zipalign"/>
<condition property="dx" value="${dir.platform_tools}/dx.bat" else="${dir.platform_tools}/dx">
<os family="windows" />
</condition>
<condition property="apk-builder" value="${dir.tools}/apkbuilder.bat" else="${dir.tools}/apkbuilder">
<os family="windows" />
</condition>
<condition property="jarsigner" value="${dir.java_home}/bin/jarsigner.exe" else="${dir.java_home}/bin/jarsigner">
<os family="windows" />
</condition>

<!-- relative dir of our project -->
<property name="dir.src" value="${basedir}/src"/>
<property name="dir.assets" value="${basedir}/assets"/>
<property name="dir.res" value="${basedir}/res"/>
<property name="dir.gen" value="$basedir}/gen"/>
<property name="file.manifest" value="${basedir}/AndroidManifest.xml"/>
<property name="external-jars" value="${basedir}/libs"/>

<!-- dex file name -->
<property name="file.dex" value="classes.dex"/>
<property name="file.resource" value="resources.ap_"/>

<!-- the output dir -->
<property name="dir.target" value="${basedir}/bin"/>
<property name="dir.target_classes" value="${dir.target}/classes"/>
<property name="dir.target_dex" value="${dir.target}/${file.dex}"/>
<property name="dir.target_resource" value="${dir.target}/${file.resource}"/>
<property name="dir.target_debug" value="${dir.target}/debug"/>
<property name="dir.target_release" value="${dir.target}/release"/>
<property name="file.apk_debug" value="${dir.target_debug}/${ant.project.name}_${today}.apk"/>
<property name="file.apk_unsign_release" value="${dir.target_release}/${ant.project.name}_unsign_${today}.apk"/>
<property name="file.apk_release" value="${dir.target_release}/${ant.project.name}_unoptimized_${today}.apk"/>
<!-- the signed release which use zipalign tool to optimized -->
<property name="file.apk_zipalign" value="${dir.target_release}/${ant.project.name}_${today}.apk"/>

<target name="clean">
<delete dir="${dir.target}"/>
<delete dir="${dir.target_classes}"/>
<delete dir="${dir.target_debug}"/>
<delete dir="${dir.target_release}"/>
</target>

<!-- init -->
<target name="init" depends="clean">
<mkdir dir="${dir.target}"/>
<mkdir dir="${dir.target_classes}"/>
<mkdir dir="${dir.target_debug}"/>
<mkdir dir="${dir.target_release}"/>
</target>

<!-- generate apk file for the project -->
<target name="compile" depends="init">
<!-- Generate the R.java file for this project's resources. -->
<exec executable="${aapt}" failοnerrοr="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg value="${dir.src}" />
<arg value="-M" />
<arg value="${file.manifest}" />
<arg value="-S" />
<arg value="${dir.res}" />
<arg value="-I" />
<arg value="${lib.android}" />
</exec>
<!-- Generate java classes from .aidl files. -->
<apply executable="${aidl}" failοnerrοr="true">
<arg value="-p${android.framework}" />
<arg value="-I${dir.src}" />
<fileset dir="${dir.src}">
<include name="**/*.aidl" />
</fileset>
</apply>
<!-- Compile this project's .java files into .class files. -->
<javac encoding="UTF-8" target="1.6" debug="true" extdirs="" srcdir="${dir.src}" destdir="${dir.target_classes}" bootclasspath="${lib.android}">
<classpath>
<fileset dir="${external-jars}" includes="*.jar" />
</classpath>
</javac>
<!-- Convert this project's .class files into .dex files. -->
<apply executable="${dx}" failοnerrοr="true" parallel="true">
<arg value="--dex" />
<arg value="--output=${dir.target_dex}" />
<arg path="${dir.target_classes}" />
<fileset dir="${external-jars}" includes="*.jar" />
</apply>
<!-- Put the project's resources into the output package file. -->
<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="${dir.res}" />
<arg value="-A" />
<arg value="${dir.assets}" />
<arg value="-I" />
<arg value="${lib.android}" />
<arg value="-F" />
<arg value="${dir.target_resource}"/>
</exec>
</target>

<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="compile">
<exec executable="${apk-builder}" failοnerrοr="true">
<arg value="${file.apk_debug}" />
<arg value="-z" />
<arg value="${dir.target_resource}" />
<arg value="-f" />
<arg value="${dir.target_dex}" />
<arg value="-rf" />
<arg value="${dir.src}" />
<arg value="-rj" />
<arg value="${external-jars}" />
</exec>
</target>

<!-- Package the application without signing it.
This allows for the application to be signed later with an official publishing key. -->
<target name="unsign-release" depends="compile">
<exec executable="${apk-builder}" failοnerrοr="true">
<arg value="${file.apk_unsign_release}" />
<arg value="-u" />
<arg value="-z" />
<arg value="${dir.target_resource}" />
<arg value="-f" />
<arg value="${dir.target_dex}" />
<arg value="-rf" />
<arg value="${dir.src}" />
<arg value="-rj"/>
<arg value="${external-jars}"/>
</exec>
</target>

<!-- sign the apk -->
<!-- use the command below to generate the android.keystore file:
"keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore" -->
<target name="jarsigner" depends="unsign-release">
<exec executable="${jarsigner}" failοnerrοr="true">
<arg value="-verbose" />
<arg value="-storepass" />
<arg value="${password}" />
<arg value="-keystore" />
<arg value="android.keystore" />
<arg value="-signedjar" />
<arg value="${file.apk_release}" />
<arg value="${file.apk_unsign_release}" />
<arg value="android.keystore" />
</exec>
</target>

<!-- optimize -->
<target name="zipalign" depends="jarsigner">
<exec executable="${zipalign}" failοnerrοr="true">
<arg value="-v" />
<arg value="-f" />
<arg value="4" />
<arg value="${file.apk_release}" />
<arg value="${file.apk_zipalign}" />
</exec>

<!-- delete unsigned apk and unoptimized apk -->
<delete file="${file.apk_unsign_release}"/>
<delete file="${file.apk_release}"/>
</target>
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值