前文《使用Ant打包Android应用详解》和《使用Ant打包Android应用详解——Ant使用解析》讲述了如何使用Ant及打包apk,本文总结下apk包的生成过程。
apk包就是一个zip格式文件(可通过二进制软件查看其是否压缩),利用解压缩软件可看到其结构如图所示:

总的可分为资源、代码、签名信息,具体为资源:assets、res、resources.arsc,android应用的配置清单AndroidManifest.xml文件 代码:classes.dex 和lib目录中的共享库文件 签名:META-INF
再来看这些文件具体的生成过程如同所示:

此图省略了对aidl文件,so文件等的处理
1.aapt资源处理:
aapt扫描android工程目录中的资源文件,一方面处理png图片,生成二进制的xml文件(解压apk包是无法看到xml文件内容的),另一方面索引资源,生成R.java文件,将aidl文件生成对应的Java源文件
2.编译代码
(1)src目录中的源文件,上面生成的java文件通过javac编译生成class文件,与lib库中的jar文件一起,通过dx程序转化成被dalvik虚拟机执行的dex文件
(2)jni目录中的源文件,利用ndk-build编译后生成so文件,保存在lib目录中
3.归档
apkbuilder(新版的sdk中已经见不到它的影子,其实都是在sdklib.jar中)将处理的资源文件、代码文件、lib库文件以zip格式归档在一个apk文件中
4.签名
利用jarsigner,对apk文件进行签名,相应的在META-INF目录中生成*.RSA *.SF和MANIFEST.MF,其中MANIFEST.MF文件记录了对除META-INF目录外的其它文件计算的摘要值
对应到Ant的打包步骤上,打包生成apk文件的过程如下图所示(解析SDK中build.xml的release mode):

版权声明:本文为博主原创文章,未经博主允许不得转载。