[Android Memory] Android Zipalign zip对齐优化app程序

转载地址:http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.html
参考文章:http://www.cnblogs.com/lee0oo0/archive/2013/06/13/3133833.html

Android SDK中包含一个“zipalign”的工具,它可以对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。所以,这种方式可以让应用程序和整个系统运行得更快。咱们强烈推荐在新的和已经发布的程序上使用zipalign工具来获得优化后的版本——即便你的程序是在老版本的Android平台下开发的。这篇文章将描述zipalign如何有助于性能改善以及如何使用它来优化你的app。html

在Android中,每一个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会由于不少种缘由读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。app

在Android中,当资源文件经过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。可是,若是资源自己没有进行对齐处理(未使用zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。编辑器

对于应用程序开发者来讲,这种显式读取方式是至关便利的。它容许使用一些不一样的开发方法,包括正常流程中不包含对齐的资源,所以,这种读取方式具备很大的便利性(本段的原始意思请参考原文)。工具

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

幸运的是,对应用程序中的资源做对齐操做很简单:性能

  • 使用ADT:
    • 若是你使用导出向导的话,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

咱们极力推荐手动zipalign你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有你的新应用程序也须要这么作!优化

 
分类:  Android Memory
相关文章
相关标签/搜索