您的位置:首页 > 移动开发 > Android开发

Ant打包Android代码生成apk文件

2013-11-26 18:33 375 查看
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实现。

步骤中提到的工具如下表:

名称功能介绍在操作系统中的路径
aaptAndroid资源打包工具${ANDROID_SDK_HOME}/platform-tools/appt
aidlAndroid接口描述语言转化为.java文件的工具${ANDROID_SDK_HOME}/platform-tools/aidl
javacJava 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的字节码的格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐