归志宁无五亩园,读书本意在元元。这篇文章主要讲述android ant build.xml实例相关的知识,希望能为你提供帮助。
利用ant编译apk。
使用的时候仅仅须要改动SKD路径javahome路径和project路径就能够了。
< ?xml version="1.0" encoding="UTF-8"?> < project name="Scolview" default="zipalign" basedir="."> < property name="exe" value="https://www.songbingjia.com/android/.exe" /> < property name="bat" value="https://www.songbingjia.com/android/.bat" /> < !--用到的各个工具的本地路径,务必改动!--> < !--android_Home 本机上androidsdk的安装文件夹--> < property name="android_home" value="F:/adt-bundle-windows-x86_64-20140624/sdk" /> < !--相应工程的根文件夹--> < property name="root" value="F:/andoridADT/workspace/Scolview" /> < !-- javahome 文件夹 --> < property name="javahome" value="C:/Program Files/Java/jdk1.6.0_45"> < /property> < !-- android sdk的版本。18表示Android 4.3--> < property name="android_api_level" value="https://www.songbingjia.com/android/18"/> < !-- android_sdk文件夹下的android.jar包的位置--> < property name="androidjar" value="https://www.songbingjia.com/android/${android_home}/platforms/android-${android_api_level}/android.jar" /> < !--本机上javac的文件夹--> < property name="javac" value="https://www.songbingjia.com/android/${javahome}/bin/javac.exe" /> < !--aapt用于生产R.java和打包resource资源--> < property name="aapt" value="https://www.songbingjia.com/android/${android_home}/build-tools/18.0.1/aapt${exe}" /> < !--dx用于将.class文件(加上第三方库和.class文件)打包成.dex文件--> < property name="dx" value="https://www.songbingjia.com/android/${android_home}/build-tools/18.1.1/dx.bat" /> < !--apkbuilder用于将.dex文件和打包过的资源文件(aapt打包后的)以及其它资源文件打包成apk文件--> < property name="apkbuilder" value="https://www.songbingjia.com/android/${android_home}/tools/apkbuilder${bat}" /> < !--zipalign用于对apk进行优化,非必须步骤--> < property name="zipalign" value="https://www.songbingjia.com/android/${android_home}/tools/zipalign${exe}" /> < !--打包过程中涉及到的各个文件夹--> < !--bin文件存放apk打包所需文件(.dex,resource.ap_,.class,AndroidManifest.xml等)和生成后的apk--> < property name="out" value="https://www.songbingjia.com/android/${root}/dest" /> < !--gen主要用于存放R.java,eclipse下为自己主动生成。ant下为aapt工具生成--> < property name="gen" value="https://www.songbingjia.com/android/gen" /> < !--存放javac生成的class文件的文件夹--> < property name="classes" value="https://www.songbingjia.com/android/${out}/classes" /> < !--存放.java源文件的文件夹--> < property name="src" value="https://www.songbingjia.com/android/src"/> < !--存放引用到的库文件夹--> < property name="lib" value="https://www.songbingjia.com/android/${out}/libs"/> < !--打包时候的编码格式--> < property name="encoding" value="https://www.songbingjia.com/android/UTF-8" /> < !--生成APK的名字--> < property name="file_name" value="https://www.songbingjia.com/android/scollview" /> < !-- 签名仓库。由keytool生成 --> < property name="keystore" value="https://www.songbingjia.com/android/${root}/edsheng.keystore" /> < !-- 须要设置签名名称--> < property name="key_name" value="https://www.songbingjia.com/android/edsheng" /> < !-- 须要设置--> < property name="key_pass" value="https://www.songbingjia.com/android/a199210311" /> < !-- 须要设置--> < property name="store_pass" value="https://www.songbingjia.com/android/a199210311" /> < !-- 签名所用jar包的位置--> < property name="jarsigner" value="https://www.songbingjia.com/android/${javahome}/bin/jarsigner.exe" /> < !-- 实际编译APK的步骤! 1.清除输出路径的文件(覆盖掉原来的打包结果) 2.创建须要输出的文件夹 3.调用aapt工具生成R.java文件 4.调用javac将java文件编译成java字节码(.class文件) 5.调用dx.bat将.class文件和其它调用到的第三方库文件编译成.dex文件 (.dex文件是能够在dalvik虚拟机上直接执行文件格式,能够理解为对java字节码做的针对嵌入式设备的优化) 6.调用apkbuilder工具将.dex文件和bin文件夹下的资源文件(aapt生成,如resource.ap_)打包成APK 7.调用jarsigner进行前面 8.调用zipalign进行性能提升--> < !--以下是实际的打包过程--> < !--1.清除输出路径的文件(覆盖掉原来的打包结果)--> < target name="mkdir"> < echo> 生成输出文件夹。。。< /echo> < mkdir dir="${out}"> < /mkdir> < echo> 生成完毕< /echo> < /target> < target name="clean" depends="mkdir"> < echo> 清理输出文件夹...< /echo> < delete dir="${out}" /> < delete dir="${gen}" /> < echo> 清理完毕< /echo> < /target> < target name="init" depends="clean"> < echo> 创建输出文件夹...< /echo> < mkdir dir="${out}" /> < mkdir dir="${gen}" /> < mkdir dir="${classes}" /> < mkdir dir="${lib}" /> < echo> 创建文件夹完毕< /echo> < /target> < !--aapt详细參数含义见:http://blog.csdn.net/liuhe688/article/details/6679879--> < !-- 为该项目资源生成R.java文件 --> < target name="gen" depends="init"> < echo> 从资源文件生成R.java ...< /echo> < exec executable="${aapt}" failonerror="true"> < arg value="https://www.songbingjia.com/android/package" /> < arg value="https://www.songbingjia.com/android/-m" /> < arg value="https://www.songbingjia.com/android/-J" /> < arg value="https://www.songbingjia.com/android/${gen}" /> < arg value="https://www.songbingjia.com/android/-M" /> < arg value="https://www.songbingjia.com/android/AndroidManifest.xml" /> < arg value="https://www.songbingjia.com/android/-S" /> < arg value="https://www.songbingjia.com/android/res" /> < arg value="https://www.songbingjia.com/android/-I" /> < arg value="https://www.songbingjia.com/android/${androidjar}" /> < /exec> < echo> R.java文件生成成功< /echo> < /target> < !--javac的详细參数含义见:http://cyf0110.iteye.com/blog/1508991--> < target name="compile" depends="gen"> < echo> 開始编译.class文件...< /echo> < javac fork="true" executable="${javac}" encoding="${encoding}" debug="true" extdirs="" source="1.5" target="1.5" destdir="${classes}"bootclasspath="${androidjar}"> < src path="${src}" /> < src path="${gen}" /> < classpath> < fileset dir="${root}/libs" includes="*.jar" /> < /classpath> < /javac> < echo> .class文件编译完毕< /echo> < /target> < !--执行android的自带工具dx.bat用于将.class文件和第三方库打包成dex文件--> < !--apply标签能够见:https://ant.apache.org/manual/Tasks/apply.html--> < target name="dex" depends="compile"> < echo> 编译.dex文件...< /echo> < apply executable="${dx}" failonerror="true" parallel="true"> < arg value="https://www.songbingjia.com/android/-JXms1024m" /> < arg value="https://www.songbingjia.com/android/-JXmx1536m" /> < arg value="https://www.songbingjia.com/android/-JXss1024k" /> < arg value="https://www.songbingjia.com/android/--dex" /> < arg value="https://www.songbingjia.com/android/--num-threads=4" /> < arg value="https://www.songbingjia.com/android/--output=${out}/classes.dex" /> < arg path="${classes}" /> < fileset dir="${root}/libs" > < include name="*.jar" /> < /fileset> < /apply> < echo> 编译.dex文件完毕< /echo> < /target> < !-- 打包项目的资源文件 --> < target name="package_res_with_assets"> < echo> 打包资源和资产文件...< /echo> < exec executable="${aapt}" failonerror="true"> < arg value="https://www.songbingjia.com/android/package" /> < arg value="https://www.songbingjia.com/android/-f" /> < arg value="https://www.songbingjia.com/android/-M" /> < arg value="https://www.songbingjia.com/android/AndroidManifest.xml" /> < arg value="https://www.songbingjia.com/android/-S" /> < arg value="https://www.songbingjia.com/android/res" /> < arg value="https://www.songbingjia.com/android/-A" /> < arg value="https://www.songbingjia.com/android/assets" /> < arg value="https://www.songbingjia.com/android/-I" /> < arg value="https://www.songbingjia.com/android/${androidjar}" /> < arg value="https://www.songbingjia.com/android/-F" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}.ap_" /> < /exec> < echo> 打包资源和资产文件完毕< /echo> < /target> < target name="apk" depends="dex, package_res_with_assets"> < echo> 開始打包apk...< /echo> < exec executable="${apkbuilder}" failonerror="true"> < arg value="https://www.songbingjia.com/android/${out}/${file_name}_unsigned.apk" /> < arg value="https://www.songbingjia.com/android/-u" /> < arg value="https://www.songbingjia.com/android/-z" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}.ap_" /> < arg value="https://www.songbingjia.com/android/-f" /> < arg value="https://www.songbingjia.com/android/${out}/classes.dex" /> < arg value="https://www.songbingjia.com/android/-rf" /> < arg value="https://www.songbingjia.com/android/${root}/src" /> < arg value="https://www.songbingjia.com/android/-rj" /> < arg value="https://www.songbingjia.com/android/${root}/libs" /> < arg value="https://www.songbingjia.com/android/-nf" /> < arg value="https://www.songbingjia.com/android/${root}/libs" /> < /exec> < echo> 成功打包apk< /echo> < /target> < !--调用jarsigner进行签名--> < target name="sign" depends="apk"> < echo> 開始签名...< /echo> < exec executable="${jarsigner}" failonerror="true"> < arg value="https://www.songbingjia.com/android/-verbose" /> < arg value="https://www.songbingjia.com/android/-sigalg" /> < arg value="https://www.songbingjia.com/android/MD5withRSA" /> < arg value="https://www.songbingjia.com/android/-digestalg" /> < arg value="https://www.songbingjia.com/android/SHA1" /> < arg value="https://www.songbingjia.com/android/-keystore" /> < arg value="https://www.songbingjia.com/android/${keystore}" /> < arg value="https://www.songbingjia.com/android/-storepass" /> < arg value="https://www.songbingjia.com/android/${store_pass}" /> < arg value="https://www.songbingjia.com/android/-keypass" /> < arg value="https://www.songbingjia.com/android/${key_pass}" /> < arg value="https://www.songbingjia.com/android/-signedjar" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}_signed_unzipalign.apk" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}_unsigned.apk" /> < arg value="https://www.songbingjia.com/android/${key_name}" /> < /exec> < echo> 签名成功< /echo> < /target> < !-- 调用zipalign工具对签名后的包做优化 --> < !-- 主要是对资源做了字节对齐的优化,降低内存执行过程中的ram--> < !-- http://developer.android.com/tools/help/zipalign.html--> < target name="zipalign" depends="sign"> < echo> 開始优化...< /echo> < exec executable="${zipalign}" failonerror="true"> < arg value="https://www.songbingjia.com/android/-v" /> < arg value="https://www.songbingjia.com/android/4" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}_signed_unzipalign.apk" /> < arg value="https://www.songbingjia.com/android/${out}/${file_name}_signed_zipaligned.apk" /> < /exec> < echo> 结束优化< /echo> < echo> 清除编译过程中产生的数据。。。< /echo> < delete dir="${out}/classes"> < /delete> < echo> 清除数据完毕。
。
【android ant build.xml实例】。
< /echo> < /target> < /project>
推荐阅读
- 用实现ApplicationListener来实现项目启动时运行某些程序的注意事项
- android相对布局中控件的常用属性
- 高效高性价比的APP开发公司是怎样的()
- Android Studio如何更新support repository
- 电子书 Android编程权威指南 第2版.pdf
- web App 跨平台开发Mac环境配置
- Android Base64 URI 编解码bad base-64异常处理
- Delphi春天将来临,Android遇到XE7我也是醉了,Hello World
- Android Studio —— java.lang.VerifyError: Verifier rejected class 问题解决