关于Zipalign的介绍和使用方法
zipalign如何優化
如何使用zipalign
使用zipalign的理由
根據官方文檔的描述,Android系統中Application的數據都保存在它的APK文件中,同時可以被多個進程訪問,安裝的過程包括如下幾個步驟:
Installer通過每個apk的manifest文件獲取與當前應用程序相關聯的permissions信息
Home application讀取當前APK的Name和Icon等信息。
System server將讀取一些與Application運行相關信息,例如:獲取和處理Application的notifications請求等。
最后,APK所包含的內容不僅限于當前Application所使用,而且可以被其它的Application調用,提高系統資源的可復用性。
zipalign優化的最根本目的是幫助操作系統更高效率的根據請求索引資源,將resource-handling code統一將Data structure alignment(數 據結構對齊標準:DSA)限定為4-byte boundaries。如果第一次接觸有關Data structure alignment的內容,強烈建議搜索更多與其相關的內容來充分理解這樣做的最終目的,這也是理解zipalign工作原理的關鍵。如果不采取對齊的標 準,處理器無法準確和快速的在內存地址中定位相關資源。
目前的系統中使用fallback mechanism機制處理那些沒有應用DSA標準的應用程序,這的確大大的方便了普通開發者無需關注繁瑣的內存操作問題。但是相反,對于這樣的應用程序 將給普通用戶帶來一定的麻煩,不但影響程序的運行的效率,而且使系統的整體執行效率下降和占用大量不必要的內存資源,甚至消耗一定的電池資源 (battery life)。
在Android 1.6 SDK中提供了三種應用Align操作的方法:
使用ADT:
從 ADT 0.9.3版本開始,可以通過export wizard自動對發布的application packages執行align操作。設置方法:鼠標右鍵點擊Project,然后選擇”Android Tools” > “Export Signed Application Package…”?;蛘呖梢灾苯釉贏ndroidManifest.xml中設置。
使用 Ant:對于API Level 大于等于4的Application Packages可以直接通過Ant build script來Align優化。但對于API Level小于4的情況,只能采取手動Align優化。
默認下應用Ant build script運行Debug packages(API Level >= 4)時,將自動執行Align優化。
針對Release packages。當使用Ant build script執行Align優化時,首先需要擁有足夠的信息來Sign packages。當完成Signing之后, 才能執行Align優化。通過官方文檔了解如何Sign Packages。
手動執行Align優化:利用tools文件夾下的zipalign工具。首先調出cmd命令行,然后執行:zipalign -v 4 source.apk androidres.apk。這個方法不受API Level的限制,可以對任何版本的APK執行Align優化。
同時可以利用zipalign工具檢查當前APK是否已經執行過Align優化。命令:zipalign -c -v 4 androidres.apk
再一次提醒開發者,立刻應用zipalign工具強制優化已經發布的application packages,并讓你的用戶使用最新的版本。
總結一下:
?Zipalign是一個檔案整理工具,它首次被介紹是在Android 1.6版本的SDK(Software Development Kit)軟件開發工具包中。它優化Android應用程序包(APK)到整合包, 以使Android操作系統與應用程序之間的交互作用更有效率,然后應用程序和整體系統的運行速度更快,發揮更大的潛能。它使Zipaligned的應用程序執行時間達到最低限度,其最終結果導致當設備運行APK應用程序時占更少的RAM(Random Access Memory)隨機訪問內存。
? ? ? 在Android的操作環境中,存儲在每個應用程序包的數據文件通過多個進程訪問,例如,程序安裝工具將讀取數據列表確定相關的權限;因為包括顯示通知等在內的多種原因,系統服務器可以讀取這些資源;主界面應用程序要讀取資源以便獲取應用程序的名稱與圖標等。因為Android是基于一個真正的多任務操作基礎架構,這些文件是不斷地讀取。最后但也是最重要的,應用程序本身讀取體現的數據?
? ? ?因為Android操作系統基于Linux架構,存儲單元布置(Memory Mapping)在有效的處理過程中起著一個關鍵的作用。從本質上而講,為Android操作系統資源的處理代碼最佳的整理是4字節界層。這個意思是說,如果APK應用程序包是存儲單元布置到4字節界層,依據相應的整理,操作系統將不需要通讀整個應用程序包以獲取所需要的數據表,而每一個系統處理都將提前知道到哪里去尋找它所需要的資源,因此執行效率更快(運行更平滑,速度更快)?
? ? ?使用方法 ?zipalign -v 4 原始.apk 優化.apk 其中這里-v代表詳細輸出, 4代表對齊為4個字節,同時-f參數如果添加則會覆蓋存在的輸出文件
? ? ?對于是否有效可以通過 zipalign -c -v 4 優化.apk 來查看是否成功的優化了你的apk文件,這里-c參數代表檢查對齊,可以看作是只讀執行,最后這步可能造成文件簽名問題,注意和apk簽名執行的順序。
驗證對齊:
? ? ? ?以下的命令用于檢查程序包是否進行了對齊:zipalign -c -v 4 application.apk
總結
以上是生活随笔為你收集整理的关于Zipalign的介绍和使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 六款值得推荐的 android 开源框架
- 下一篇: OkHttp使用介绍 和 使用进阶