什么是ODEX?
什么是ODEX?
ODEX是安卓上的應(yīng)用程序apk中提取出來的可運(yùn)行文件,是通過apk安裝包的中的dex優(yōu)化過的,再把a(bǔ)pk包里的dex文件刪除。
這樣做可以加快軟件的啟動(dòng)速度,預(yù)先提取,減少對(duì)RAM的占用,因?yàn)闆]有odex的話,系統(tǒng)要從apk包中提取dex再運(yùn)行。
什么是dalvik-cache?
當(dāng)Android啟動(dòng)時(shí),DalvikVM監(jiān)視所有的程序(APK文件)和框架,并且為他們創(chuàng)建一個(gè)依存關(guān)系樹。DalvikVM通過這個(gè)依存關(guān)系樹來為每個(gè)程序優(yōu)化代碼并存儲(chǔ)在Dalvik緩存中。這樣,所有程序在運(yùn)行時(shí)都會(huì)使用優(yōu)化過的代碼。這就是當(dāng)你刷一個(gè)新的ROM時(shí),有時(shí)候第一次啟動(dòng)時(shí)間非常非常長的原因。當(dāng)一個(gè)程序(或者框架庫)發(fā)生變更,DalvikVM將會(huì)重新優(yōu)化代碼并且再次將其存在緩存中。在cache/dalvik-cache是存放system上的程序生成的dex文件,而data/dalvik-cache則是存放data/app生成的dex文件。
ODEX作用
所謂Odex,是由android軟件中的classes.dex生成的,Odex化即是把那個(gè)文件預(yù)先提取出來作用是能加快軟件加載速度和開機(jī)速度。不過Odex也有缺點(diǎn),那就是有時(shí)候加刷東西會(huì)出現(xiàn)問題。
看懂了嗎?用我的理解,簡單說,原本系統(tǒng)每次執(zhí)行APK都需要先提取一部分出來,而Odex化就是現(xiàn)在你提前把它提取出來了。系統(tǒng)啟動(dòng)或者程序運(yùn)行加快的原因也就在此。而由于提取了Odex出來,會(huì)占用一部分存儲(chǔ)空間,所以做Odex化的時(shí)候需要考慮空間方面的問題。
Odex的效果
Odex化后系統(tǒng)啟動(dòng)和程序運(yùn)行速度大大提高,穩(wěn)定性不變。因此推薦做Odex化。
一般來說官方rom都是odex化的rom(含Odex文件),而定制rom大部分都是deodex化的(無odex文件)。兩者應(yīng)該各有優(yōu)點(diǎn)吧,貌似現(xiàn)在也沒有統(tǒng)一的說法。官方rom大部分每個(gè)apk對(duì)應(yīng)一個(gè).odex文件,而deodex化的rom里面只有一個(gè)apk,把.odex轉(zhuǎn)換成classes.dex放到apk包里面了。所以 odex rom的.apk+.odex=deodex化rom的1個(gè).apk (簡單地來說,其實(shí)就上一個(gè)合并的過程)
Odex的優(yōu)點(diǎn)
1.刷完機(jī)首次進(jìn)入系統(tǒng)的時(shí)間會(huì)縮短一些。文件的運(yùn)行速度應(yīng)該也有所提升。
2.APK文件不能單獨(dú)安裝,并且如果反編譯APK文件,一般也只能得到資源文件??梢哉f是起到一定的保護(hù)作用,避免被肆意修改和使用。這樣做可以使其廠商保證一定的反盜版,因?yàn)闆]有沒有dex文件的apk是無法正常安裝的。
3.會(huì)增加一些可安裝應(yīng)用的空間,雖然不是很多。
Odex的缺點(diǎn)
1.不方便修改ROM以及文件本身。
2.增加ROM包的體積,雖然不是很多。
3.當(dāng)你升級(jí)某個(gè)被Odex的應(yīng)用后,這個(gè)應(yīng)用將會(huì)出現(xiàn)故障,最常見的就是FC。
轉(zhuǎn)載于:https://blog.51cto.com/ycmx1208/1358516
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: Python 学习笔记 (8)—— sy
- 下一篇: Target runtime Apach