现在的位置: 首页 > 综合 > 正文

Ant打包Android代码生成apk文件

2013年01月26日 ⁄ 综合 ⁄ 共 2391字 ⁄ 字号 评论关闭

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的字节码的格式。

抱歉!评论已关闭.