为什么我会使用未对齐的apks?

时间:2015-11-04 19:51:25

标签: android zipalign

当我运行gradle任务“assembleDebug”以获得调试版本时,我放入手机它还会生成另一个apk:MyApp-debug-unaligned.apk。

我想我理解拉链的“对齐”意味着什么。它已经优化了文件边界的放置以便于解压缩(如果我错了,请纠正我)。这只是一个优化,并且与Android没有多大关系。

因此,由于Android将所有应用程序保留为apks,并且似乎只是在运行时将其解压缩,因此仅安装对齐的优化apks将会有所帮助。拉链对齐包也需要花费相当多的时间,但这可能仅仅是因为我的特定应用程序的大小。

一个未对齐的拉链什么时候会对它的对齐替代品有益?或者只是因为你必须有一个未对齐的版本来对齐,并且该过程在完成后不会清除未对齐的文件?

1 个答案:

答案 0 :(得分:3)

从不使用未对齐的APK。

它是一种未经清理的中间产品。在我看来应该是。

工作原理:

它的对齐方式是将图像和其他大量未压缩数据放在4字节边界上。这会增加文件大小,但会导致它们属于某个页面。它避免了必须从APK中为单个图像拾取多个页面(即最小化拾取的页面数量)。由于图像以4字节边界开始,因此我们不会获取与其他进程相关的垃圾数据的可能性更高。

这最终允许我通过占用更少的页面来浪费更少的RAM并且运行得更快。一个微不足道但很好的优化

关于花费的时间,这是相对微不足道的,所以值得。显然,您拥有的未压缩数据越多,所需的时间就越多,但从未如此重要。恕我直言,编译器应该丢弃未对齐的文件,但我想有人想保留它。

资源:

ZipAlign公告

http://android-developers.blogspot.com/2009/09/zipalign-easy-optimization.html

当前的ZipAlign文档

http://developer.android.com/tools/help/zipalign.html

关于数据结构对齐(阅读有关填充的内容)

https://en.wikipedia.org/wiki/Data_structure_alignment