什麼是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
使用Ant:
手動: