当我运行gradle任务"assembleDebug“来获取我放在手机上的调试版本时,它还会生成另一个apk: MyApp- debug -unaligned.apk。
我想我明白拉链的“对齐”是什么意思了。它优化了文件边界的位置,便于解压(如果我错了,请纠正我)。这只是一个优化,实际上与Android没有太多关系。
因此,由于Android将所有应用程序都保留为apks,并且似乎只在运行时解压它们,因此只安装对齐的、优化的apks将是有益的。压缩包似乎也需要很少的时间,但这可能只是因为我的特定应用程序的大小。
在什么情况下,未对齐的压缩比对齐的替代方案更有好处?或者仅仅是因为您必须有一个未对齐的版本来对齐,并且该过程在完成后不会清理未对齐的文件?
发布于 2015-11-05 05:11:37
您将永远不会使用未对齐的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://stackoverflow.com/questions/33530794
复制相似问题