什么是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
使用Ant:
手动: