Ant Android编译过程,支持库工程一起打包

<?xml version="1.0" encoding="UTF-8" ?> 
- <!-- 步骤
    1.用aapt生成R.java
    2.JAVAC编译JAVA文件
    3.批处理生成classes.dex
    4.aapt打包资源
    5.apkbuilder包资源和类文件为APK文件
    6.jarsinger 对APK进行签名

  --> 
- <project name="project_name" default="releaseAll" basedir=".">
  <property file="local.properties" /> 
  <property file="build.properties" /> 
  <property file="project.properties" /> 
- <!-- 库项目
  --> 
  <property name="library-dir" location="${android.library.reference.1}" /> 
- <!--  定义自己的输出目录 
  --> 
  <property name="release_dir" value="dist2" /> 
  <property name="outdir" value="build" /> 
  <property name="out.absolute.dir" location="${outdir}" /> 
- <!--  定义 R.java 所有目录 
  --> 
  <property name="out-dir-gen" value="gen" /> 
- <!--  读取目录 
  --> 
  <property name="resource-dir" value="res" /> 
  <property name="asset-dir" value="assets" /> 
  <property name="src-dir" value="src" /> 
  <property name="src-dir-ospath" location="${src-dir}" /> 
  <property name="lib.absolute.dir" location="${libraryjars.dir}" /> 
  <property name="native.libs.absolute.dir" location="${libraryjars.dir}" /> 
- <!--  输出目录 
  --> 
  <property name="outdir-classes" value="${outdir}/classes" /> 
  <property name="out.classes.absolute.dir" location="${outdir-classes}" /> 
- <!--  临时类资源文件 
  --> 
  <property name="dex-file" value="classes.dex" /> 
  <property name="intermediate-dex" value="${out.absolute.dir}/${dex-file}" /> 
- <!--  最终生成文件 
  --> 
  <property name="out-package" value="${outdir}/${app.name}.apk" /> 
- <!--  要使用的工具 
  --> 
  <property name="aapt" value="${sdk-platform-tools}/aapt.exe" /> 
  <property name="aidl" value="${sdk-platform-tools}/aidl.exe" /> 
  <property name="dx" value="${sdk-platform-tools}/dx.bat" /> 
  <property name="adb" value="${sdk-platform-tools}/adb" /> 
  <property name="apk-builder" value="${sdk-tools}/apkbuilder.bat" /> 
  <property name="android-jar" value="${sdk-platform}/android.jar" /> 
- <!--  最终生成各种包文件 
  --> 
  <property name="resources-package" value="${outdir}/${app.name}" /> 
  <property name="resources-package-ospath" value="${basedir}/${resources-package}" /> 
  <property name="out-unsigned-package" value="${outdir}/${app.name}-unsigned.apk" /> 
  <property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" /> 
  <property name="out-signed-package" value="${outdir}/${app.name}-signed.apk" /> 
  <property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" /> 
  <property name="zipalign-package-osname" value="${app.name}_v${app.version}.apk" /> 
  <property name="zipalign-package-ospath" value="${basedir}/${outdir}/${zipalign-package-osname}" /> 
- <!-- 签名工具
  --> 
  <property name="jarsigner" value="${jdk-home}/bin/jarsigner.exe" /> 
- <!-- 优化APK工具
  --> 
  <property name="zipalign" value="${sdk-tools}/zipalign.exe" /> 
- <!--  初始化 
  --> 
- <target name="init">
  <echo>Creating all output directories</echo> 
  <delete dir="${outdir}" /> 
  <delete dir="${outdir-classes}" /> 
  <delete dir="${out-dir-gen}" /> 
  <mkdir dir="${release_dir}" /> 
  <mkdir dir="${outdir}" /> 
  <mkdir dir="${outdir-classes}" /> 
  <mkdir dir="${out-dir-gen}" /> 
  </target>
- <!-- 步骤 1: aapt生成R.java 
  --> 
- <target name="resource-src" depends="init">
  <echo>Generating R.java...</echo> 
- <exec executable="${aapt}" failοnerrοr="true">
  <arg value="package" /> 
  <arg value="-m" /> 
  <arg value="-J" /> 
  <arg value="${out-dir-gen}" /> 
  <arg value="-M" /> 
  <arg value="AndroidManifest.xml" /> 
  <arg value="-S" /> 
  <arg value="${resource-dir}" /> 
  <arg value="-S" /> 
  <arg value="${library-dir}/res" /> 
  <arg value="--extra-packages" /> 
  <arg value="com.SqSheQu.main" /> 
- <!-- Library Project的包名 
  --> 
  <arg value="-A" /> 
  <arg value="${asset-dir}" /> 
  <arg value="-I" /> 
  <arg value="${android-jar}" /> 
  <arg value="--auto-add-overlay" /> 
  </exec>
  </target>
- <!--  Generate java classes from .aidl files. 
  --> 
- <target name="aidl" depends="init">
  <echo>Compiling aidl files into Java classes...</echo> 
- <apply executable="${aidl}" failοnerrοr="true">
  <arg value="-p${android-framework}" /> 
  <arg value="-I${src-dir}" /> 
- <fileset dir="${src-dir}">
  <include name="**/*.aidl" /> 
  </fileset>
  </apply>
  </target>
- <!--  步骤 2. 编译所有class文件. 
  --> 
- <target name="compile" depends="compile2">
- <javac encoding="UTF-8" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}">
- <classpath>
  <fileset dir="${libraryjars.dir}" includes="*.jar" /> 
  <pathelement path="${main-out-classes}" /> 
  </classpath>
  </javac>
  </target>
- <target name="compile2" depends="init, resource-src, aidl">
- <javac encoding="UTF-8" target="1.6" debug="true" extdirs="" srcdir="${library-dir}" destdir="${outdir-classes}" bootclasspath="${android-jar}">
- <classpath>
  <fileset dir="${libraryjars.dir}" includes="*.jar" /> 
  <pathelement path="${main-out-classes}" /> 
  </classpath>
  </javac>
  </target>
- <!--  混淆代码
  --> 
- <target name="proguard" depends="compile">
  <jar basedir="${outdir-classes}" destfile="temp.jar" /> 
- <java jar="${proguard-home}/proguard.jar" fork="true" failοnerrοr="true">
  <jvmarg value="-Dmaximum.inlined.code.length=32" /> 
  <arg value="-injars temp.jar" /> 
  <arg value="-outjars optimized.jar" /> 
  <arg value="-libraryjars ${android-jar}" /> 
  <arg value="-libraryjars ${libraryjars.jars}" /> 
  <arg value="-dontpreverify" /> 
  <arg value="-dontoptimize" /> 
  <arg value="-dontwarn" /> 
  <arg value="-dontusemixedcaseclassnames" /> 
  <arg value="-repackageclasses ''" /> 
  <arg value="-allowaccessmodification" /> 
  <arg value="@${proguard.config}" /> 
  <arg value="-optimizationpasses 5" /> 
  <arg value="-verbose" /> 
  <arg value="-dontskipnonpubliclibraryclasses" /> 
  <arg value="-dontskipnonpubliclibraryclassmembers" /> 
  </java>
  <delete file="temp.jar" /> 
  <delete dir="${outdir-classes}" /> 
  <mkdir dir="${outdir-classes}" /> 
  <unzip src="optimized.jar" dest="${outdir-classes}" /> 
  <delete file="optimized.jar" /> 
  </target>
- <!--  步骤 3. 转换class文件为dex文件. 
  --> 
- <target name="dex" depends="proguard">
  <echo>Converting compiled files into ${intermediate-dex}...</echo> 
- <exec executable="${dx}" failοnerrοr="true">
  <arg value="--dex" /> 
  <arg value="--output=${intermediate-dex}" /> 
  <arg value="${out.classes.absolute.dir}" /> 
  <arg value="${lib.absolute.dir}" /> 
  </exec>
  </target>
- <!--  步骤 4. 将资源和清单打包. 
  --> 
- <target name="package-res-and-assets">
  <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="-S" /> 
  <arg value="../SqSheQu/res" /> 
  <arg value="-A" /> 
  <arg value="${asset-dir}" /> 
  <arg value="-I" /> 
  <arg value="${android-jar}" /> 
  <arg value="-F" /> 
  <arg value="${resources-package}" /> 
  <arg value="--auto-add-overlay" /> 
  </exec>
  </target>
- <!--  步骤 5. 将打好的包编译为APK文件. 
  --> 
- <target name="debug" depends="dex, package-res-and-assets">
  <echo>release:Packaging ${out-debug-package-ospath}, and signing it with a debug key...</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}" /> 
  <arg value="-rf" /> 
  <arg value="${src-dir-ospath}" /> 
- <!-- 打包.so库文件
  --> 
  <arg value="-nf" /> 
  <arg value="${native.libs.absolute.dir}" /> 
  </exec>
  </target>
- <!-- 步骤 6. 签名APK文件 
  --> 
- <target name="jarsigner" depends="debug">
  <echo>jarsigner ${out-unsigned-package-ospath} to ${out-signed-package-ospath}</echo> 
- <exec executable="${jarsigner}" failοnerrοr="true">
  <arg value="-verbose" /> 
  <arg value="-storepass" /> 
  <arg value="${keystore.password}" /> 
  <arg value="-keystore" /> 
  <arg value="${keystore.file}" /> 
  <arg value="-signedjar" /> 
  <arg value="${out-signed-package-ospath}" /> 
  <arg value="${out-unsigned-package-ospath}" /> 
  <arg value="${keystore.name}" /> 
  </exec>
  </target>
- <!-- zipalign优化android程序
  --> 
- <target name="zipalign" depends="jarsigner">
  <echo>zipalign ${zipalign-package-ospath}</echo> 
- <exec executable="${zipalign}" failοnerrοr="true">
  <arg value="-v" /> 
  <arg value="-f" /> 
  <arg value="4" /> 
  <arg value="${out-signed-package-ospath}" /> 
  <arg value="${zipalign-package-ospath}" /> 
  </exec>
  </target>
- <target name="releaseAll">
  <echo>release All...</echo> 
  <script language="beanshell" src="script.bsh" /> 
  </target>
- <!--  安装到默认的手机或模拟器
  --> 
- <target name="build_and_install" depends="zipalign">
  <echo>Installing ${out-debug-package} onto default emulator...</echo> 
- <exec executable="${adb}" failοnerrοr="true">
  <arg value="install" /> 
  <arg value="${out-signed-package}" /> 
  </exec>
  </target>
- <target name="install">
  <echo>Installing ${out-debug-package} onto default emulator...</echo> 
- <exec executable="${adb}" failοnerrοr="true">
  <arg value="install" /> 
  <arg value="${out-signed-package}" /> 
  </exec>
  </target>
  </project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值