zipalign

zipalign 是 ZIP 封存檔對齊工具。它可以確保封存中的所有未壓縮檔案都相對於檔案的開頭對齊。這樣就能透過 mmap(2) 直接存取這些檔案,不必複製 RAM 中的資料,並降低應用程式的記憶體用量。

在向使用者發布 APK 檔案前,應使用 zipalign 最佳化您的 APK 檔案。如果您是透過 Android Studio 建構,系統會自動完成這項操作。本說明文件的適用對象為自訂建構系統的維護者。

注意:您必須在應用程式建構程序中的兩個特定點中的一個點使用zipalign (視您使用的應用程式簽署工具而定):

  • 如果您使用 apksigner,則只能在簽署 APK 檔案之前執行 zipalign 作業。如果您使用 apksigner 簽署 APK,且之後變更 APK,則其簽名就會失效。
  • 如果您使用 jarsigner,則只能在簽署 APK 檔案之後執行 zipalign 作業。

透過更改 zip 「Local File Header」部分中的「extra」欄位的大小即可實現對齊。「extra」欄位中的現有資料可能會因這項程序而變更。

如要進一步瞭解如何在建構應用程式時使用 zipalign,請參閱「簽署應用程式」

用量

如果您的 APK 含有共用資料庫 (.so 檔案),則應使用 -p 確保其與適合 mmap(2) 的 4KiB 頁面邊界對齊。至於其他檔案,可以透過 zipalign 的必要對齊引數來確定對齊,在 32 位元和 64 位元系統上 Studio 會與 4 個位元組對齊。

如要對齊 infile.apk,請將其儲存為 outfile.apk

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

如要確認 existing.apk 的對齊:

zipalign -c -v 4 existing.apk

您可以使用 zipalign -h 查看支援的完整標記組合。