关于Zipalign的介绍和使用方法

Android 1.6 SDK中包含了一个用于优化APK的新工具zipalign。 它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”,Android小组重新为Applications 与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使 用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。在下面的内容中将从三个方面介绍 zipalign:

zipalign如何优化
如何使用zipalign
使用zipalign的理由
根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:

Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
Home application读取当前APK的Name和Icon等信息。
System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。
最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资源的可复用性。
zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure alignment(数 据结构对齐标准:DSA)限定为4-byte boundaries。如果第一次接触有关Data structure alignment的内容,强烈建议搜索更多与其相关的内容来充分理解这样做的最终目的,这也是理解zipalign工作原理的关键。如果不采取对齐的标 准,处理器无法准确和快速的在内存地址中定位相关资源。

目前的系统中使用fallback mechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序 将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源 (battery life)。

在Android 1.6 SDK中提供了三种应用Align操作的方法:

使用ADT:

从 ADT 0.9.3版本开始,可以通过export wizard自动对发布的application packages执行align操作。设置方法:鼠标右键点击Project,然后选择”Android Tools” > “Export Signed Application Package…”。或者可以直接在AndroidManifest.xml中设置。

使用 Ant:
对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。
默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。

针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。

手动执行Align优化:

利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。

同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk

再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。

总结一下:

 Zipalign是一个档案整理工具,它首次被介绍是在Android 1.6版本的SDK(Software Development Kit)软件开发工具包中。它优化Android应用程序包(APK)到整合包, 以使Android操作系统与应用程序之间的交互作用更有效率,然后应用程序和整体系统的运行速度更快,发挥更大的潜能。它使Zipaligned的应用程序执行时间达到最低限度,其最终结果导致当设备运行APK应用程序时占更少的RAM(Random Access Memory)随机访问内存。

      在Android的操作环境中,存储在每个应用程序包的数据文件通过多个进程访问,例如,程序安装工具将读取数据列表确定相关的权限;因为包括显示通知等在内的多种原因,系统服务器可以读取这些资源;主界面应用程序要读取资源以便获取应用程序的名称与图标等。因为Android是基于一个真正的多任务操作基础架构,这些文件是不断地读取。最后但也是最重要的,应用程序本身读取体现的数据 

     因为Android操作系统基于Linux架构,存储单元布置(Memory Mapping)在有效的处理过程中起着一个关键的作用。从本质上而讲,为Android操作系统资源的处理代码最佳的整理是4字节界层。这个意思是说,如果APK应用程序包是存储单元布置到4字节界层,依据相应的整理,操作系统将不需要通读整个应用程序包以获取所需要的数据表,而每一个系统处理都将提前知道到哪里去寻找它所需要的资源,因此执行效率更快(运行更平滑,速度更快) 

     使用方法  zipalign -v 4 原始.apk 优化.apk 其中这里-v代表详细输出, 4代表对齐为4个字节,同时-f参数如果添加则会覆盖存在的输出文件

     对于是否有效可以通过 zipalign -c -v 4 优化.apk 来查看是否成功的优化了你的apk文件,这里-c参数代表检查对齐,可以看作是只读执行,最后这步可能造成文件签名问题,注意和apk签名执行的顺序。

验证对齐:
       以下的命令用于检查程序包是否进行了对齐:zipalign -c -v 4 application.apk



  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值