APK优化工具zipalign的详细介绍和使用

什么是Zipalign? 
     Zipalign是一个android平台上整理APK文件的工具,它首次被引入是在Android 1.6版本的SDK软件开发工具包中。它可以对打包的Android应用程序进行优化, 以使Android操做系统与应用程序之间的交互做用更有效率,这可以让应用程序和整个系统运行得更快。用Zipalign处理过的应用程序执行时间达到最低限度,当设备运行APK应用程序时占更少的RAM(Random Access Memory)随机访问内存,咱们强烈推荐在新的和已经发布的程序上使用zipalign工具来获得优化后的版本——即便你的程序是在老版本的Android平台下开发的。这篇文章将介绍zipalign运行原理,以及如何使用它来优化你的app。android

Zipalign如何优化?app

  Zipalign对apk文件中未压缩的数据在4个字节边界上对齐,当资源文件经过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。4字节对齐后,android系统就能够经过调用mmap函数读取文件,进程能够像读写内存同样对普通文件的操做,系统共享内存IPC,以在读取资源上得到较高的性能。 若是资源自己没有进行对齐处理,它就必须显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。  dom

  mmap系统调用使得进程之间经过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程能够像访问普通内存同样对文件进行访问,没必要再调用read(),write()等操做.编辑器

  程序中大量运用mmap,用到的正是mmap的这种“像访问普通内存同样对文件进行访问”的功能。当要对一个文件频繁的进行访问,而且指针来回移动时,调用mmap比用常规的方法快不少                                 函数

      在4个字节边界上对齐的意思就是指编译器吧4个字节做为一个单位来进行读取的结果,这样的话,CPU可以对变量进行高效、快速的访问(较以前不对齐)。     工具

      android系统中的Davlik虚拟机使用本身专有的格式DEX,DEX的结构是紧凑的,为了让运行时的性能更好,能够进一步用"对齐"进一步优化,可是大小通常会有所增长。性能

  从未对齐的apk中读取资源比较慢且花费较多内存。最好的状况是,Home程序和未对齐的程序启动得比对齐后的慢(这也是惟一可见的效果)。最坏的状况是,安装一些未对齐资源的应用程序会增长内存压力,并所以形成系统反复地启动和杀死进程。最终,用户放弃使用如此慢又耗电的设备。开发工具

Zipalign如何使用?优化

使用ADT:ui

  • 若是你使用导出向导的话,Eclipse中的ADT插件(从Ver. 0.9.3开始)就能自动对齐Release程序包。使用向导,右击工程属性,选择“Android Tools” > “Export Signed Application Package…”。固然,你还能够经过AndroidManifest.xml编辑器的第一页作到。

使用Ant:

  • Ant编译脚本(从Android 1.6开始)能够对齐程序包。老平台的版本不能经过Ant编译脚本进行对齐,必须手动对齐。
  • 从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。
  • Release模式下,若是有足够的信息签名程序包的话,Ant才会执行对齐操做,由于对齐处理发生在签名以后。为了可以签名程序包,进而执行对齐操做,Ant必须知道keystore的位置以及build.properties中key的名字。相应的属性名为key.store和key.alias。若是这些属性为空,签名工具会在编译过程当中提示输入store/key的密码,而后脚本会执行签名及apk文件的对齐。若是这些属性都没有,Release程序包不会进行签名,天然也就不会进行对齐了。 

手动:

  • 为了可以手动对齐程序包,Android 1.6及之后的SDK的tools/文件夹下都有zipalign工具。你可使用它来对齐任何版本下的程序包。你必须在签名apk文件后进行,使用如下命令:zipalign -v 4 source.apk destination.apk
  • 验证对齐:
    • 如下的命令用于检查程序包是否进行了对齐:zipalign -c -v 4 application.apk
相关文章
相关标签/搜索