专项工具——zipalign

zipalign

zipalign 是一种归档对齐工具,可对 Android 应用 (APK) 文件提供重要的优化。其目的是要确保所有未压缩数据的开头均相对于文件开头部分执行特定的对齐。具体来说,它会使 APK 中的所有未压缩数据(例如图片或原始文件)在 4 字节边界上对齐。这样一来,即可使用 mmap() 直接访问所有部分,即使其中包含具有对齐限制的二进制数据也没关系。这样做的好处是可以减少运行应用时消耗的 RAM 容量。

在将 APK 文件分发给最终用户之前,必须先使用此工具对齐文件。您可以使用 Android 编译工具来完成此操作。Android Studio 会自动对齐您的 APK。

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

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

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

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

用法

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

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

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

zipalign -c -v <alignment> existing.apk

<alignment> 是一个整数,用于定义字节对齐边界。此值必须始终为 4(可提供 32 位对齐),否则实际将不会执行任何操作。

标记:

  • -f :覆盖现有的 outfile.zip
  • -v :详细输出
  • -p :outfile.zip 应对 infile.zip 中的所有共享对象文件使用相同的页面对齐方式
  • -c :确认给定文件的对齐方式

转载自:https://developer.android.com/studio/command-line/zipalign?hl=zh-cn