1. 程式人生 > >【筆記】odex , vdex ,art 檔案區別

【筆記】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 檔案也變化了。