首页 文章

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

提问于
浏览
8

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

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

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

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

1 回答

  • 3

    你会 Never 使用未对齐的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

相关问题