当我运行gradle任务“assembleDebug”以获得调试版本时,我放在手机上它还会生成另一个apk:MyApp-debug-unaligned.apk.
我想我理解拉链的“对齐”意味着什么.它已经优化了文件边界的放置以便于解压缩(如果我错了,请纠正我).这只是一个优化,并且与Android没有多大关系.
因此,由于Android将所有应用程序保留为apks,并且似乎只是在运行时将其解压缩,因此仅安装对齐的优化apks将会有所帮助.拉链对齐包也需要花费相当多的时间,但这可能仅仅是因为我的特定应用程序的大小.
一个未对齐的拉链什么时候会对它的对齐替代品有益?或者只是因为你必须有一个未对齐的版本来对齐,并且该过程在完成后不会清除未对齐的文件?
解决方法
你永远不会使用未对齐的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
关于数据结构对齐(阅读填充)