zipalign

分類:技術 時間:2016-10-25

https://developer.android.com/studio/command-line/zipalign.html

zipalign是一個歸檔對齊工具,它為Android應用程序(APK)文件提供重要的優化。 目的是確保所有未壓縮數據以相對于文件開頭的特定對齊開始。 具體來說,它會使APK中的所有未壓縮數據(例如圖像或raw)在4字節邊界上對齊。 這允許使用mmap()直接訪問所有部分,即使它們包含具有對齊限制的二進制數據。 其優點是減少運行應用程序時消耗的RAM量。

此工具應始終用于在將APK文件分發給最終用戶之前對齊。 Android構建工具可以為您處理此問題。 Android Studio會自動對齊您的APK。

注意:您必須在應用程序構建過程中的兩個特定點之一使用zipalign,具體取決于您使用的應用程序簽名工具:

  1. 如果您使用apksigner,zipalign只能在簽署APK文件之前執行。 如果您使用apksigner簽署APK,并對APK進行進一步更改,則其簽名將失效。
  2. 如果你使用jarsigner,zipalign只能在APK文件簽名后才能執行。

通過更改zip本地文件頭部分中“額外”字段的大小進行調整。 “額外”字段中的現有數據可能會被此過程更改。

有關如何在構建應用程序時使用zipalign的更多信息,請閱讀簽名您的應用程序。

使用

對齊 infile.apk 并保存為 outfile.apk:

zipalign [-f] [-v] lt;alignmentgt; infile.apk outfile.apk

確認existing.apk的對齊方式:

zipalign -c -v lt;alignmentgt; existing.apk

alignment是一個定義字節對齊邊界的整數。 這必須總是4(提供32位對齊),否則它什么也不做。

標示:

  • -f : 覆蓋輸出的 outfile.zip
  • -v : 詳細輸出
  • -p : outfile.zip應該對infile.zip中的所有共享對象文件使用相同的頁面對齊
  • -c : 檢查給定的文件是否對齊

使用

zipalign -c -v 4 destination.apk

檢查結果:

       50 META-INF/MANIFEST.MF (OK - compressed)
467 META-INF/APP.SF (OK - compressed)
985 META-INF/APP.RSA (OK - compressed)
2142 res/drawable/ic_launcher.png (BAD - 2)
4391 res/layout/main.xml (OK - compressed)
4729 AndroidManifest.xml (OK - compressed)
5348 resources.arsc (OK)
6477 classes.dex (OK - compressed)
Verification FAILED
    49 AndroidManifest.xml (OK - compressed)
876 META-INF/CERT.RSA (OK - compressed)
1977 META-INF/CERT.SF (OK - compressed)
12956 META-INF/MANIFEST.MF (OK - compressed)
23893 classes.dex (OK - compressed)
...
1035004 res/mipmap-hdpi-v4/ic_launcher.png (OK)
1038196 res/mipmap-mdpi-v4/ic_launcher.png (OK)
1040224 res/mipmap-xhdpi-v4/ic_launcher.png (OK)
...
1201748 resources.arsc (OK)
Verification succesful

Tags: XML 加密解密 安卓開發

文章來源:http://www.qinglinyi.com/posts/zipalign/


ads
ads

相關文章
ads

相關文章

ad