zipalign
是 ZIP 封存檔對齊工具,可協助確保封存檔中所有的未壓縮檔案都以檔案的開頭為準對齊。這樣就能直接透過 mmap(2)
存取檔案,不必複製 RAM 中的資料,並可降低應用程式的記憶體用量。
將 APK 檔案發布給使用者前,請先使用 zipalign
最佳化該檔案。如果您是透過 Android Studio 使用 Android Gradle 外掛程式 (AGP) 進行建構,系統會自動完成這項作業。在這種情況下,您仍應使用 zipalign
驗證 APK 是否對齊,但您不需要自行對齊。本說明文件的主要適用對象為自訂建構系統的維護者。
注意:您必須在建構程序的特定時間點使用 zipalign
,實際時機取決於您使用的應用程式簽署工具:
為了確實對齊,zipalign
會變更 ZIP「Local File Header」部分中的 "extra"
欄位大小。這項程序可能也會變更 "extra"
欄位中的現有資料。
使用方式
如果您的 APK 含有共用資料庫 (.so
檔案),請使用 -p
確保其與適合 mmap(2)
的 4KiB 頁面邊界對齊。至於其他由 zipalign
的必要對齊引數確定對齊的檔案,Android Studio 在 32 位元和 64 位元系統上皆會與 4 個位元組對齊。
如何對齊 infile.apk
,並將其儲存為 outfile.apk
:
zipalign -p -f -v 4 infile.apk outfile.apk
如要確認 existing.apk
是否對齊,請使用下列指令。如果您使用 Android Studio 或 AGP 進行建構,請使用這個指令驗證 APK 是否對齊。
zipalign -c -v 4 existing.apk
選項
下表列出可用的 zipalign
選項:
選項 | 說明 |
---|---|
-c | 僅檢查對齊方式 (不會修改檔案)。 |
-f | 覆寫現有的輸出檔案。 |
-h | 顯示工具說明。 |
-p | 將未壓縮的 .so 檔案進行頁面對齊。 |
-v | 詳細輸出模式。 |
-z | 使用 Zopfli 重新壓縮。 |