【问题标题】:Why would I ever use unaligned apks?为什么我会使用未对齐的 apk?
【发布时间】:2016-02-05 11:24:17
【问题描述】:

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

我想我明白拉链的“对齐”是什么意思。它优化了文件边界的位置以便于解压缩(如果我错了,请纠正我)。这只是一个优化,实际上与 Android 没有太大关系。

因此,由于 Android 将所有应用程序保留为 apk,并且似乎只在运行时解压缩它们,因此仅安装对齐、优化的 apk 会有所帮助。压缩对齐包也需要看似微不足道的时间,但这可能只是因为我的特定应用程序的大小。

什么时候未对齐的拉链比对齐的替代拉链更有利?还是仅仅因为您必须有一个未对齐的版本才能对齐,并且该过程在完成后没有清理未对齐的文件?

【问题讨论】:

    标签: android zipalign


    【解决方案1】:

    您将从不使用未对齐的 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

    【讨论】:

    • 不是页面对齐,而是单词对齐。如果您想要页面对齐,您可以将其配置为在 4096 字节边界上对齐,而不是在 4 字节边界上对齐。参看。 stackoverflow.com/questions/30155519
    猜你喜欢
    • 2014-03-30
    • 2014-09-05
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多