【筆記】odex , vdex ,art 文件區別

1.vdex

package 直接轉化的 可執行二進制碼 文件:

1.第一次開機就會生成在/system/app/<packagename>/oat/ 下;

2.在系統運行過程中,虛擬機將其 從 “/system/app” 下  copy  到 “/data/davilk-cache/” 下

 

2.odex 

odex 是從vdex 這個文件中 提取了部分模塊生成的一個新的 可執行二進制碼 文件 , odex 從vdex 中提取後,vdex 的大小就減少了。

1.第一次開機就會生成在/system/app/<packagename>/oat/ 下

2.在系統運行過程中,虛擬機將其 從 “/system/app” 下  copy  到 “/data/davilk-cache/” 下

3.odex + vdex = apk 的全部源碼 (vdex 並不是獨立於odex 的文件 odex + vdex 才代表一個apk )

 

3.art

odex 進行優化 生成的 可執行二進制碼 文件,主要是apk 啓動的熱點函數相關地址的記錄,方便尋址相關; 

1.第一次開機會生成在/system/app/<packagename>/oat/ 下,以後也不會;

2.odex 文件在運行時,虛擬機會計算函數調用頻率,進行函數地址的修改;

3.最後在/data/davilk-cache/ 由虛擬機生成;

 

4.生成art 文件後,/system/app 下的odex 和 vdex 會無效,即使你刪除,apk也會正常運行

 

5.push 一個新的apk file 覆蓋之前/system/app 下apk file ,會觸發PKMS 掃描時下發force_dex flag ,強行生成新的vdex 文件 ,覆蓋之前的vdex 文件,由於某種機制,這個新vdex 文件會copy到/data/dalvik-cache/下,於是art 文件也變化了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章