为啥我会使用未对齐的 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)”错误?