Google 致力于为黑人社区推动种族平等。查看具体举措

zipalign

zipalign 是一种 zip 归档文件对齐工具。它可确保归档中的所有未压缩文件相对于文件开头都是对齐的。这样一来,您便可直接通过 mmap(2) 访问这些文件,而无需在 RAM 中复制相关数据并减少了应用的内存用量。

在将 APK 文件分发给最终用户之前,应该先使用 zipalign 进行优化。如果您使用 Android Studio 进行构建,则此步骤会自动完成。本文档适用于自定义构建系统的维护者。

注意:您必须在应用构建过程中的两个特定时间点之一使用 zipalign,具体在哪个时间点使用,取决于您所使用的应用签名工具:

  • 如果您使用的是 apksigner,只能在为 APK 文件签名之前执行 zipalign。如果您在使用 apksigner 为 APK 签名之后对 APK 做出了进一步更改,签名便会失效。
  • 如果您使用的是 jarsigner,只能在为 APK 文件签名之后执行 zipalign。

您可以通过更改 zip 本地文件标头部分中的“extra”字段的大小来实现对齐。此过程可能会更改“extra”字段中的现有数据。

如需详细了解在构建应用时如何使用 zipalign,请参阅为应用签名

用法

如果您的 APK 包含共享库(.so 文件),则应使用 -p 来确保它们与适合 mmap(2) 的 4KiB 页面边界对齐。对于其他文件(其对齐方式由 zipalign 的必选对齐参数确定),Studio 将在 32 位和 64 位系统中对齐到 4 个字节。

如需对齐 infile.apk 并将其保存为 outfile.apk,请运行以下命令:

zipalign -p -f -v 4 infile.apk outfile.apk

如需确认 existing.apk 的对齐方式,请运行以下命令:

zipalign -c -v 4 existing.apk

您可以使用 zipalign -h 来查看支持的完整标志集。