gpt4 book ai didi

android - ZipAlign 验证

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:10 30 4
gpt4 key购买 nike

在安卓中,ZipAlign用于在 4 字节边界上对齐资源以加速资源加载:

The resource-handling code in Android can efficiently access resources when they're aligned on 4-byte boundaries by memory-mapping them. But for resources that are not aligned (i.e. when zipalign hasn't been run on an apk), it has to fall back to explicitly reading them—which is slower and consumes additional memory.

运行工具后,可以使用命令验证对齐。

zipalign -c -v 4 application.apk

这会生成一份报告并说明是否存在错误。就我而言,此报告表明没有对齐错误,但第一个数字(我假设它是资源在最终 APK 中的位置)似乎表明某些资源未在 4 字节边界上对齐。

这是这份报告的开头:

    Verifying alignment of APP-signed-aligned.apk (4)...
50 META-INF/MANIFEST.MF (OK - compressed)
24245 META-INF/KEYS.SF (OK - compressed)
49830 META-INF/KEYS.DSA (OK - compressed)
50683 AndroidManifest.xml (OK - compressed)
53096 assets/Assets/DB_Normal.db (OK)
595425 assets/Assets/Common/DM/Structures.xml (OK - compressed)

我错过了什么?第一个数字是资源的位置吗?例如 Structures.xml 似乎位于 595425,这不是 4 字节的倍数。

最佳答案

对齐对于压缩数据无关紧要。

想法是能够对未压缩的 block 进行内存映射并直接访问它们。比方说,如果您的 PNG 解码器尝试以 32 位整数的形式访问数据,并且您有一个仿真器模拟最坏情况的 ARM CPU 行为并在您进行未对齐的 32 位访问时抛出 SIGBUS,那么您不能简单地如果未对齐,则访问图像数据。

zlib inflate 代码不关心数据是否对齐,因此 zipalign 不关心对齐压缩数据。

关于android - ZipAlign 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543520/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com