97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見教育科技集團 >> 新聞動態(tài) >> Android資料 >> DEX文件和APK加載優(yōu)化  
 
DEX文件和APK加載優(yōu)化
分享到:

在Android中,對編譯出來的DEX字節(jié)碼和APK文件的加載過程,也進行了盡可能的優(yōu)化。

對于預(yù)置應(yīng)用,Android會在系統(tǒng)編譯后,生成優(yōu)化文件,以O(shè)DEX后綴結(jié)尾,這樣在發(fā)布時除APK文件(不包含DEX)外,還有一個相應(yīng)的ODEX文件。

對于非預(yù)置應(yīng)用,運行前,Android會優(yōu)化DEX文件,在第一次啟動應(yīng)用時,執(zhí)行文件的DEX被優(yōu)化成DEY文件并放在/data/dalvik-cache目錄。如果應(yīng)用的APK文件不發(fā)生變化,DEX文件不會被重新生成,加快了以后的啟動速度。APK文件的加載過程如圖1-1所示。


圖1-1 APK加載

DEX文件由header、string_ids、type_ids、proto_ids、field_ids、method_ids、class_defs、data等幾部分構(gòu)成。圖1-2顯示了這幾部分內(nèi)容在DEX文件中的布局。


圖1-2 DEX格式

在Java中,每一個類會被編譯成相應(yīng)的CLASS文件,一個應(yīng)用會定義若干個類,這就導(dǎo)致同一個應(yīng)用的多個CLASS文件中會存在冗余信息,而在Android中,“dx”工具會將同一個應(yīng)用的所有CLASS文件內(nèi)容整合到一個DEX文件中,這樣就減小了整體的文件尺寸,I/O操作也提高了類的查找速度!癲x”工具整合CLASS文件的過程如圖1-3所示。


圖1-3 “dx”工具整合CLASS文件的過程

原來每個CLASS文件中的常量池,在DEX文件中由一個常量池來統(tǒng)一管理,具體如圖1-4所示。


圖1-4 DEX的常量池

具體到DEX文件,經(jīng)過“dx”工具優(yōu)化后的內(nèi)部邏輯如圖1-5所示。


圖1-5 DEX的內(nèi)部邏輯

 更多相關(guān)文章

·Android Java JNI機制詳解
·Android IBinder通信機制
·Android ONC RPC遠(yuǎn)程調(diào)用
·Dalvik虛擬機原生方法的注冊
·Android Dalvik虛擬機啟動