android构建过程
参考: http://blog.csdn.net/shangmingchao/article/details/47375111
首先,需要了解一下构建APK的七大工具:
①aapt
全称是Android Asset Packaging Tool,Android资源打包工具。可以将资源文件编译成二进制文件,还可以查看、创建、更新zip格式的文档附件(zip、jar、apk)。
②aidl
全称是Android Interface Definition Language,Android接口定义语言。可以将.aidl文件编译成.Java文件。
③javac
全称是Java Compiler,Java编译器。可以将Java语言编写的类和接口定义文件(.java)编译成字节码类文件(.class)。
④dx
全称是Dalvik Executable,Dalvik虚拟机可执行程序。可以将部分.class文件转换成一个.dex文件。
⑤apkbuilder
可以将.dex文件、已经打包好的资源文件、libs中的Native库等其它资源打包成未签名的.apk文件。SDK3.0之后废弃了该工具,可以直接利用sdklib.jar中的APKBuilderMain.class实现其功能。
⑥jarsigner
全称是Java Archive Signer,Jar签名工具。可以为jar文件签名,还可以校验jar文件的签名和完整性。
⑦zipalign
可以优化apk。以帮助操作系统更高效地根据请求获取资源,将Data structure alignment(DSA,数据结构对齐标准)限定为4-byte boundaries。
这七大工具就包含在 我们配置Android SDK时下载的 Android SDK Build-tools中,有了这“七个小矮人”的帮助,我们就能顺利地将IDE中的项目变成可以在设备上运行的应用程序了,下图简单描述了这个过程,是官网上的一张图^_^。
详细的构建过程如下图所示:
也是官网上的一张图,哈哈。总之就是利用各种工具以生成中间文件(intermediates)的形式最终生成apk文件。下面是关于这个过程的一些解释:
①aapt工具将程序的资源文件(如AndroidManifest.xml文件、Activity中的xml布局文件)进行编译,并生成供Java代码引用资源的R.java文件。
②aidl工具将所有.aidl接口转换成.java接口。
③所有的Java代码(包括R.java和.aidl文件)被Java编译器编译成.class文件。
④dex工具将所有的.class文件转换成Dalvik字节码,第三方库和所有在module构建中用到的.class文件也将被转换成.dex文件,以便被打包成最终的.apk文件。
⑤所有无需编译的资源(如图片)、已经编译好的资源,以及.dex文件被发往apkbuilder工具以打包成一个.apk文件。
⑥打包好了.apk文件后,一旦apk被创建,在安装到设备之前必须用debug key或release key签名。
⑦最终,若应用已经用发行模式签名了,你必须用zipalign工具对齐.apk。因为对齐最终的apk有助于该应用在设备上运行时减小内存的使用。
Android构建对应的API Level参见:API_LEVEL。