綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[其他] 有關deodex版與odex版兩者的區別

[複製連結] 查看: 15651|回覆: 6|好評: 4
跳轉到指定樓層
樓主
asd8531 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-3-18 05:57

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
有odex版ROM與無odex版ROM區別:
什麼是odex?
  odex是安卓上的應用程序apk 中提取出來的可運行文件,是通過apk 安裝包的中的dex 優化過的,再把apk 包裡的dex 文件刪除。這樣做可以加快軟件的啟動速度,預先提取,減少對RAM 的佔用,因為沒有odex 的話,系統要從apk 包中提取dex 再運行。
什麼是dalvik-cache ?
當Android 啟動時,DalvikVM 監視所有的程序(APK 文件)和框架,並且為他們創建一個依存關係樹。DalvikVM 通過這個依存關係樹來為每個程序優化代碼並存儲在Dalvik 緩存中。這樣,所有程序在運行時都會使用優化過的代碼。這就是當你刷一個新的ROM 時,有時候第一次啟動時間非常非常長的原因。當一個程序(或者框架庫)發生變更,DalvikVM 將會重新優化代碼並且再次將其存在緩存中。在cache/dalvik-cache 是存放system 上的程序生成的dex 文件,而data/dalvik-cache 則是存放data/app 生成的dex 文件。
而做Deodex的,會在cache/dalvik-cache 是產生存放system 上的程序生成的dex 文件,】
所謂Odex,是由android軟件中的classes.dex生成的,Odex化即是把那個文件預先提取出來作用是能加快軟件加載速度和開機速度。不過Odex也有缺點,那就是有時候加刷東西會出現問題。
看懂了嗎?用我的理解,簡單說,原本系統每次執行APK都需要先提取一部分出來,而Odex化就是現在你提前把它提取出來了。系統啟動或者程序運行加快的原因也就在此。而由於提取了Odex出來,會佔用一部分存儲空間,所以做Odex化的時候需要考慮空間方面的問題。 Odex的效果 Odex化後系統啟動和程序運行速度大大提高,穩定性不變。因此推薦做Odex化。 一般來說官方rom都是odex化的rom(含Odex文件),而定制rom大部分都是deodex化的(無odex文件)。兩者應該各有優點吧,貌似現在也沒有統一的說法。官方rom大部分每個apk對應一個.odex文件,而deodex化的rom裡面只有一個apk,把.odex轉換成classes.dex放到apk包裡面了。所以odex rom的.apk+.odex=deodex化rom的1個.apk (簡單地來說,其實就上一個合併的過程)

Odex的優點:
1.刷完機首次進入系統的時間會縮短一些。文件的運行速度應該也有所提升。
2.APK文件不能單獨安裝,並且如果反編譯APK文件,一般也只能得到資源文件。可以說是起到一定的保護作用,避免被肆意修改和使用。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex文件的apk是無法正常安裝的。
3.會增加一些可安裝應用的空間,雖然不是很多。(這個我沒發現)
Odex的缺點:
1.不方便修改ROM以及文件本身。
2.增加ROM包的體積,雖然不是很多。(skyter注:對於目前基本上都支持N個G ROM的手機,可以無視這些)
3.當你升級某個被Odex的應用後,這個應用將會出現故障,最常見的就是FC。(skyter注:目前還沒發現有這樣的FC出現)
4.從其它版中提取的Odex程序,不能直接進行用於當前的手機系統,也就是說,機型、手機版本要一一對應。症狀為替換後,無法顯示。

而現在的定制rom之所以基本上都是deodex化(無odex文件)的是因為:
1.可以適當減小文件的體積,起到節省rom空間的作用;
2.主要方便rom定制者對rom的個性化定制和移植;apk相對容易反編譯和修改,而odex先要解包成smali然後才能生成classes.dex,如果要再生成odex,還要用dexopt-wrapper,比較麻煩。 個人的感覺:

Odex化後系統啟動和程序運行速度的確提高了,多少不知道,但是做了Deodex(合併apk和odex)的刷機後的啟動速度確沒有Odex的來得快,也就是官方的,沒有做Deodex的。大家刷過這兩種的包就知道。所以,希望能夠少些做Deodex 的rom。多出基於官方的。
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 6碎鑽 +4 幫助 +6 收起 理由
略拉 + 1 + 1
jeffy60917 + 1 + 1 非常讚
joentyi7 + 1 偶像,看完你的內容,讓我找到了活著的意義.
sp704800 + 1 + 1 非常讚
atwin0613 + 1
h042932 + 1 + 1 非常讚

查看全部評分

收藏收藏10 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
Arachild | 收聽TA | 只看該作者
發表於 2013-3-18 20:36
聽朋友說過將APK和ODEX合併  當下有點霧煞煞

看了這篇文章終於豁然開朗   感謝大大的分享
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
lovesoftp8 | 收聽TA | 只看該作者
發表於 2013-8-17 01:15
有點霧煞煞
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
k85761683 | 收聽TA | 只看該作者
發表於 2013-8-21 16:43
好專業的解釋...好強
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
joentyi7 | 收聽TA | 只看該作者
發表於 2013-9-30 13:20
版主解釋的好詳盡,謝謝您!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
gyughyy | 收聽TA | 只看該作者
發表於 2015-10-27 13:10
看了這麼專業的解說我還是不知道怎麼分辨note4的ROM 是odex或deodex....
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
star-sky | 收聽TA | 只看該作者
發表於 2015-11-22 01:05
system 的 apk 產生的快取是放在 data\dalvik-cache 目錄裡
deodex 唯一的用處就是清掉 odex 所佔的空間。
不過大部分的原版 apk 檔案,裡面的 classes.dex 早就拿掉了。
所以做 deodex 能清出的空間非常有限。

至於有沒有做 odex 檔案,並不會影響到執行速度上的差別。

因為都是靠  data\dalvik-cache 再執行。



用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則