APK優化工具zipalign的詳細介紹和使用

什麼是Zipalign? 
     Zipalign是一個android平臺上整理APK文件的工具,它首次被引入是在Android 1.6版本的SDK軟件開發工具包中。它可以對打包的Android應用程序進行優化, 以使Android操做系統與應用程序之間的交互做用更有效率,這可以讓應用程序和整個系統運行得更快。用Zipalign處理過的應用程序執行時間達到最低限度,當設備運行APK應用程序時佔更少的RAM(Random Access Memory)隨機訪問內存,咱們強烈推薦在新的和已經發布的程序上使用zipalign工具來獲得優化後的版本——即便你的程序是在老版本的Android平臺下開發的。這篇文章將介紹zipalign運行原理,以及如何使用它來優化你的app。android

Zipalign如何優化?app

  Zipalign對apk文件中未壓縮的數據在4個字節邊界上對齊,當資源文件經過內存映射對齊到4字節邊界時,訪問資源文件的代碼纔是有效率的。4字節對齊後,android系統就能夠經過調用mmap函數讀取文件,進程能夠像讀寫內存同樣對普通文件的操做,系統共享內存IPC,以在讀取資源上得到較高的性能。 若是資源自己沒有進行對齊處理,它就必須顯式地讀取它們——這個過程將會比較緩慢且會花費額外的內存。  dom

  mmap系統調用使得進程之間經過映射同一個普通文件實現共享內存。普通文件被映射到進程地址空間後,進程能夠像訪問普通內存同樣對文件進行訪問,沒必要再調用read(),write()等操做.編輯器

  程序中大量運用mmap,用到的正是mmap的這種「像訪問普通內存同樣對文件進行訪問」的功能。當要對一個文件頻繁的進行訪問,而且指針來回移動時,調用mmap比用常規的方法快不少                                 函數

      在4個字節邊界上對齊的意思就是指編譯器吧4個字節做爲一個單位來進行讀取的結果,這樣的話,CPU可以對變量進行高效、快速的訪問(較以前不對齊)。     工具

      android系統中的Davlik虛擬機使用本身專有的格式DEX,DEX的結構是緊湊的,爲了讓運行時的性能更好,能夠進一步用"對齊"進一步優化,可是大小通常會有所增長。性能

  從未對齊的apk中讀取資源比較慢且花費較多內存。最好的狀況是,Home程序和未對齊的程序啓動得比對齊後的慢(這也是惟一可見的效果)。最壞的狀況是,安裝一些未對齊資源的應用程序會增長內存壓力,並所以形成系統反覆地啓動和殺死進程。最終,用戶放棄使用如此慢又耗電的設備。開發工具

Zipalign如何使用?優化

使用ADT:ui

  • 若是你使用導出嚮導的話,Eclipse中的ADT插件(從Ver. 0.9.3開始)就能自動對齊Release程序包。使用嚮導,右擊工程屬性,選擇「Android Tools」 > 「Export Signed Application Package…」。固然,你還能夠經過AndroidManifest.xml編輯器的第一頁作到。

使用Ant:

  • Ant編譯腳本(從Android 1.6開始)能夠對齊程序包。老平臺的版本不能經過Ant編譯腳本進行對齊,必須手動對齊。
  • 從Android 1.6開始,Debug模式下編譯時,Ant自動對齊和簽名程序包。
  • Release模式下,若是有足夠的信息簽名程序包的話,Ant纔會執行對齊操做,由於對齊處理髮生在簽名以後。爲了可以簽名程序包,進而執行對齊操做,Ant必須知道keystore的位置以及build.properties中key的名字。相應的屬性名爲key.store和key.alias。若是這些屬性爲空,簽名工具會在編譯過程當中提示輸入store/key的密碼,而後腳本會執行簽名及apk文件的對齊。若是這些屬性都沒有,Release程序包不會進行簽名,天然也就不會進行對齊了。 

手動:

  • 爲了可以手動對齊程序包,Android 1.6及之後的SDK的tools/文件夾下都有zipalign工具。你可使用它來對齊任何版本下的程序包。你必須在簽名apk文件後進行,使用如下命令:zipalign -v 4 source.apk destination.apk
  • 驗證對齊:
    • 如下的命令用於檢查程序包是否進行了對齊:zipalign -c -v 4 application.apk
相關文章
相關標籤/搜索