1、配置ant环境
2、生成build.xml
可以使用android sdk/tools下的android.bat来自动生成build.xml文件。
进入需要打包的项目根目录,执行
android update project -p path
会生成一个build.xml和local.properties文件。
2、用ant打包
有两种形式的打包:debug和release
1)debug形式打包会生成俩个文件,一个未添加签名的apk和用debug打签名的apk文件。(在bin目录下生成)
ant debug
2)release形式的打包只生成一个未签名的apk文件,但是混淆过的。(混淆的前提是你的项目添加过proguard混淆)。之后自己打个签名就ok了。
ant release
————————————————————————
签名文件
1、使用命令创建
keytool -genkey -keystore <path>.keystore -keyalg RSA -validity <days> -alias <private key>
(该命令位于jdk安装目录的bin下,用于创建签名用的私钥)
-genkey: 表示创建私钥。
-keystore :后面跟私钥仓库的名称,如果指定的仓库不存在,则创建一个新的仓库文件。
-keyalg :表示加密方式,一般跟RSA即可。
-validity: 表示有效期限,单位为天,可以指定36500,即100年。
-alias :表示要添加的私钥名称,这个名称会被添加并存储到仓库文件中。
————————————————————————
整个android程序打包的思路:
首先通过aapt将所有的资源文件和描述文件打包成R.java文件,然后通过.aidl将所有的android接口描述语言转化成.java文件;
在对这些java文件编译何曾class文件,再通过dx工具将class文件转化成Davilk VM可以识别的.dex文件;
最后就是通过apkbuilder来生成apk,如果需要签名和字节码对齐的话,可通过jarsigner和zipalign实现。
步骤中提到的工具如下表:
名称 | 功能介绍 | 在操作系统中的路径 |
aapt | Android资源打包工具 | ${ANDROID_SDK_HOME}/platform-tools/appt |
aidl | Android接口描述语言转化为.java文件的工具 | ${ANDROID_SDK_HOME}/platform-tools/aidl |
javac | Java Compiler | ${JDK_HOME}/javac或/usr/bin/javac |
dex | 转化.class文件为Davik VM能识别的.dex文件 | ${ANDROID_SDK_HOME}/platform-tools/dx |
apkbuilder | 生成apk包 | ${ANDROID_SDK_HOME}/tools/opkbuilder |
jarsigner | .jar文件的签名工具 | ${JDK_HOME}/jarsigner或/usr/bin/jarsigner |
zipalign | 字节码对齐工具 | ${ANDROID_SDK_HOME}/tools/zipalign |
第一步:打包资源文件,生成R.java文件
【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件)
【输出】打包好的资源(一般在Android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、R.java文件(在gen目录中,大家应该很熟悉了)
【工具】aapt工具,它的路径在${ANDROID_SDK_HOME}/platform-tools/aapt(如果你使用的是Windows系统,按惯例路径应该这样写:%ANDROID_SDK_HOME%\platform-tools\aapt.exe,下同)。
第二步:处理AIDL文件,生成对应的.java文件(当然,有很多工程没有用到AIDL,那这个过程就可以省了)
【输入】源码文件、aidl文件、framework.aidl文件
【输出】对应的.java文件
【工具】aidl工具
第三步:编译Java文件,生成对应的.class文件
【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件)
【输出】.class文件
【工具】javac工具
第四步:把.class文件转化成Davik VM支持的.dex文件
【输入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),库文件(.jar文件)
【输出】.dex文件
【工具】javac工具
第五步:打包生成未签名的.apk文件
【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,当然很多工程都没有这样的文件,如果你不使用C/C++开发的话)
【输出】未签名的.apk文件
【工具】apkbuilder工具
第六步:对未签名.apk文件进行签名
【输入】未签名的.apk文件
【输出】签名的.apk文件
【工具】jarsigner
第七步:对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到Google Market的)
【输入】签名后的.apk文件
【输出】对齐后的.apk文件
【工具】zipalign工具
Dalvik VM
是用在移动设备上的虚拟机,可运行java平台应用程序,.dex更加的紧凑,适合内存和处理器受限的系统。Dalvik VM使用自己的字节码,所有需要将java的字节码转换成.dex的字节码的格式。