为啥我会使用未对齐的 apk?

Posted

技术标签:

【中文标题】为啥我会使用未对齐的 apk?【英文标题】: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 会有所帮助。压缩对齐包也需要看似微不足道的时间,但这可能只是因为我的特定应用程序的大小。

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

【问题讨论】:

【参考方案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 字节边界上对齐。参看。 ***.com/questions/30155519

以上是关于为啥我会使用未对齐的 apk?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 2.2 更新:未使用新的 Gradle 插件 2.2.0 生成对齐的 APK (zipAlign)

Android Studio 2.3 正在生成未对齐的签名 APK 而不是 zipaligned?

为啥堆栈必须是页面对齐的?

为啥我会收到“未使用的参数(na.action = NULL)”错误?

为啥我会收到此错误 - “您正在使用未定义的组件调用 withTheme(Component)。” -反应JS

为啥我会收到 CORS 错误原因:CORS 请求未成功