DEX和ODEX的區別 和 ODEX的製作

首先還是講下DEX和ODEX的區別:

1、簡單來講,官方的版本就是ODEX化的,現在論壇的除了我發的DEX版本其他的都是ODEX版本。這個ODEX優化是什麼意思呢?用大家容易理解的話來說你可以想像一個APK是一個程序壓縮包,裏面有個執行程序,ODEX優化就是把包裏面的執行程序提取出來,就變成ODEX文件,因爲你提取出來了,系統第一次啓動的時候就不用去解壓程序壓縮包的程序,少了一個解壓的過程。這樣的話系統啓動就加快了。爲什麼說是第一次呢?是因爲DEX版本的也只有第一次會解壓執行程序到DATA目錄,之後也是直接讀取DATA的程序,所以第二次啓動就和正常的差不多了。當然這只是簡單的理解,實際生成的ODEX還有一定的優化作用。

2、這裏注意有兩個區別,第一ODEX解壓出來的執行程序是在SYSTEM目錄的同名ODEX,DEX版的解壓是在DATA區目錄,大家對我做的兩個版本可以發現同,ODEX化的版本的SYSTEM分區只有幾M空間,而DEX版的空間還有28M,原因就在解壓出來的執行程序位置不同。第二點是做了ODEX化的程序和框架就不再是一個完整的程序了!因爲ODEX是根據當前系統生成的,只能在生成ODEX的系統中運行!這個是ODEX的第二個作用防盜鏈!這也是直接複製帶ODEX的程序到其他固件不能運行的原因。


3、S8600的固件都是完全的ODEX化,包括了框架文件也就是JAR文件,大家可以這樣理解:固件包的BOOT.img就相當於電腦的DOS,最基本的啓動引導系統。而框架就是上層的WINDOWS系統。當然這樣解釋並不科學規範,主要是方便理解。這個框架做了ODEX化後,當然就不能直接反編譯和修改。比如破G網補丁就包含一個重要的framework.jar。也就是說我做的DEX版如果你直接進行了ODEX化後的文件和打了補丁後ODEX化的框架和APK產生的ODEX不能混用!,因爲改動JAR後ODEX化的執行程序是不同的,而且不是獨立一個,是所有的APK和大部分的主要框架文件的ODEX都會不同,哪怕你只修改框架文件的一點都是一樣!這也是說明了要製作G網補丁,只能在DEX版下才能實現!

上面說明了這兩個版本的區別,現在來說具體如何實現ODEX

1、下載ODEX工具:http://dl.dbank.com/c0ybpucie8,解壓到任意目錄,有兩個目錄,分別是ADB和ODEX。要做完整的ODEX必須先做framework的ODEX,然後才能做SYSTEM的APK的ODEX。所以先進入ADB目錄,用數據線接好手機,點複製文件.bat。正常的是顯示了兩個文件複製完成。再點CMD,出現CMD窗口,依次輸入:
adb shell  (正確連接手機的話這個時候會出現一個#號提示符)
cd system/framework
dexopter fr
然後就開始生成ODEX,大概會用兩三分鐘吧,完成後有提示。這樣就完成了框架的ODEX,進入手機的framework目錄,可以看到有ODEX和JAR對應就說明成功了。但是框架的ODEX爲了安全,做了ODEX後,並不會刪除JAR裏面的DEX文件,要手動清除這些多餘的DEX。用RE全選然後複製到電腦,用WINRAR或7ZIP打開直接刪除裏面的classes.dex,不要解壓是打開纔可以。刪除完了就可以放到刷機包直接替換掉原版的JAR文件,當然必須包括生成的ODEX。方法和之前的一樣,用WINRAR或7ZIP打開刷機包直接刪除裏面的SYSTEM/framework的全部JAR,把做好的JAR和ODEX文件拖進去,還是不要解壓纔可以。

2、現在可以來生成SYSTEM的APK程序的ODEX了,這個就簡單多了,進入ODEX工具的odex\apk_odex目錄,有個一鍵odex.bat,運行後1是SYSTEM,2是DATA,選1做SYSTEM的APK,這個也是兩三分鐘吧,看提示操作,完成後有提示的。這個就不需要你手動清除DEX文件了,程序會自己清除。這裏有個重點要注意:大內存版的SYSTEM只有140M,DEX版本大概有28M的空間,你做了framework的ODEX化後大概就只有10M了,空間不足會造成不能ODEX完所有的APK文件,這裏提供兩個辦法,第一、你把所有的APK放到DATA\app下選2DATA的APK優化,效果和在SYSTEM是一樣的,完成後複製出來照之前的辦法拖入刷機包,第二個辦法是先換用普通版的內核來做ODEX,做完了再改爲大內存版的內核。還有CUST的APK也可以放到DATA/APP裏面來實現ODEX化

這樣就完成了全部的框架和APK的ODEX化,修改好後就可以再次刷入,就是和官方一樣的你自己優化的版本了!注意一點:要破G網的要先刷了補丁纔可以做ODEX化!不需要的就可以直接做。

最後再說下修改固件的簡單方法,也就是我剛纔說明的修改的方法,就是打開固件包不要解壓直接刪除或添加你的應用。電量可以直接用喜歡的包的framework-res.apk進行替換,這個程序可以在各個固件通用,因爲這個APK有點特別,不能做ODEX的,所以就通用了。但對修改別人的固件想說明一點是你自己用的話隨便怎麼改都可以,如果要發佈還請註明改自何處,不要隨意更改別人的個人信息,畢竟做個固件還是要用很多時間精力。應當尊重原作者的勞動!當然我做的都是官方的沒個人信息,本來也是發來做底包的就不存在了,你做了就是你的。



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