首先,需要了解一下构建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。


更多相关文章

  1. tcping测试服务器TCP端口
  2. Android截屏事件监听
  3. Android(安卓)studio导入library的正确方式
  4. Android(安卓)logcat保存当前应用程序的日志并上传服务器或指定
  5. [Android自定义控件] Android(安卓)Scroller工具类和GestureDete
  6. android串口的使用
  7. Android(安卓)assets 目录介绍和应用
  8. 谷歌宣布Android(安卓)Studio将取代Eclipse
  9. Android布局整合include界面控件

随机推荐

  1. Android实现透明的颜色效果(zz)
  2. 【解疑答惑】—— android:maxLines="1"
  3. Android重要控件概览(中)
  4. Android艺术开发探索学习笔记——第二章:I
  5. 三位一体!Android Ice Cream Sandwich可能
  6. Android进程间通信--消息机制及IPC机制实
  7. Android 高效的SQLite型数据库greenDAO使
  8. Android 自定义View之手势解锁控件
  9. 转:android在文本TextView中添加超链接
  10. Android改变wifi状态必须要的权限