編譯生成odex
❶ 怎麼讓dex文件變成odex文件dexopt
簡單來說odex的作用是優化後的dex 文件,可以提高載入速度。現在一般第三方ROM都把APK和odex合並起來了,可以加快軟體的啟動速度,預先提取,減少對RAM的佔用,因為沒有odex的話,系統要從apk包中提取dex再運行。如果你的odex導出可能有問題,沒有跟原本配在一起的APK合並在一起,導致導入的時候安裝不了。
ODEX優點
1.刷完機首次進入系統的時間會縮短一些。文件的運行速度應該也有所提升。
2.APK文件不能單獨安裝,並且如果反編譯APK文件,一般也只能得到資源文件。可以說是起到一定的保護作用,避免被肆意修改和使用。這樣做可以使其廠商保證一定的反盜版,因為沒有dex文件的apk是無法正常安裝的。
3.會增加一些可安裝應用的空間,雖然不是很多。
4.某些機身內存太小的手機優化的時候可以刪除dex文件來達到製作大內存包的目的,但是這種大內存包會使手機軟體啟動速度變慢。適合不追求速度,需要更多內存裝軟體的用戶。
效果
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、首先配置java環境,相信大家都會
2、下載工具
adb工具包
dexopt-wrapper工具
3、用數據線將手機與電腦連接,手機中的設置----應用程序設置---開發下的USB調試、允許模擬地點要選上;將需要生成ODEX文件的***.apk文件放到 手機的data/local目錄下(與dexopt-wrapper同一個目錄)。
4:在電腦上(XP系統):
「運行」——cmd(回車)
輸入 adb shell(回車)
Su(回車)
cd data/local(回車)
dexopt-wrapper ***.apk ***.odex (回車)(***.apk與***.odex中的***同名)
就這樣ODEX就生成了(看不到的話退出local再進入local)
5、剪貼出來用winrar刪除****.apk 里的classes.dex。
這樣apk+odex就生成了。將這同名不同後綴的兩文件拷到system\app 或data\app中修改許可權重啟手機就可用了。
Android的ROM中有很多odex文件,相對於APK中的dex文件而言這個odex有什麼作用呢? 如果你仔細觀察會發現文件名時一一對應的,同時那些對應的apk文件中沒有dex文件。這樣做可以使其廠商保證一定的反**,因為沒有沒有dex文件的apk是無**常安裝的,而廠商直接將odex和不完整的apk文件放到手機rom固化到/system/bin中可以讓一般用戶無**常導出使用
❷ 安卓手機system/app裡面,每個apk文件下面都有一個odex文件,那個文件是什麼東西
odex是安卓上的應用程序apk中提取出來的可運行文件,即將APK中的classes.dex文件通過dex優化過程將其優化生成一個·dex文件單獨存放,原APK中的classes.dex文件會保留。
所謂Odex,是由android軟體中的classes.dex生成的,Odex化即是把那個文件預先提取出來作用是能加快軟體載入速度和開機速度。不過Odex也有缺點,那就是有時候加刷東西會出現問題。
原本系統恢復出廠設置後第一次開機需要先提取classes.dex出來,而Odex化就是現在你提前把它提取出來了。系統啟動或者程序運行加快的原因也就在此。並且將dex變為odex還可以節省空間,因為提取後可以把apk內的dex刪除。如果不odex,那麼系統還是會自動提取dex,這時不僅apk內有dex,/data/dalvik-cache目錄下也有dex,雖然apk內的dex經過壓縮了,但是兩份dex的總體積已經大於一份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 (簡單地來說,其實就上一個合並的過程)。
❸ 編譯android源碼apk是不是生成odex方法
反編譯普通的APK文件: 對於普通的APK/DEX文件的反編譯,其實工具有很多, 包括: ByteCode Viewer: 一個可視化的集成工具,說實話,不太好用,不夠穩定,生成代碼質量中等。 dex2jar + jd_gui: 這兩個工具組合還可以, 用起來比ByteCode Viewer麻煩一些,但比較穩定,生成代碼質量中等。 反編譯ODEX文件: Android 5.0 Lollipop以後,Google用ART代替了以前的Dalvik,對於普通的app來說我們仍然可以用上面的方法來把dex文件反編譯成Java源代碼。但對於系統預裝的App,特別是類似應用商店,播放器等, 你會發現這些應用的apk文件中找不到對應的classes.dex文件,而是會發現在其子目錄下有個.odex文件。 那如何反編譯這個odex文件呢?我通過google查了查,知道應該用baksmali,但從github上下載了幾個版本都不行,報各種不同錯誤。 具體方法如下: 1. 從 這里 下載工具包, 解壓縮到本地。 這里的baksmali的版本是2.0.3. 不同版本的baksmali針對的Android內核不同。有時候高版本反倒不好用。 2. 打開工具所在目錄, 按住shift鍵, 點擊滑鼠右鍵,打開Windows命令窗口 3. 把 odex文件拷貝到該目錄 4. 在命令窗口運行: oat2dex.bat *.odex . 正常情況下,應該顯示OK等信息。如果報錯的話,說明這個文件無法轉換,後面的也不用試了。 5. 運行 oat2dex.bat *.odex temp.dex . 運行後會創建一個temp.dex文件。 6. 運行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 運行後會創建一個source的文件夾,並將temp.dex反編譯到該文件夾。-a 21 表明的是Android內核的版本21 7. 運行 java -jar small-2.0.3.jar -a 21 source -o classes.dex , 反編譯為classes.dex文件。 需要注意的是:由這種方式反編譯成的classes.dex 文件相比原生的classes.dex 還是缺少了些信息,因此反編譯這種classes.dex 文件後生成的java代碼可讀性會更差些。 8. 用在線工具JADX 來把 classes.dex 最終反編譯為java代碼。
❹ 如何將App的classes.dex轉化為odex文件
ODEX是安卓上的應用程序apk中提取出來的可運行文件,即將APK中的classes.dex文件通過dex優化過程將其優化生成一個.dex文件單獨存放,原APK中的classes.dex文件會保留。
這樣做可以加快軟體的啟動速度,預先提取,減少對RAM的佔用,因為沒有odex的話,系統要從apk包中提取dex再運行
class.dex是你編譯成apk之後的所有的類文件,包括所有的資源文件。就是android能認識的編碼,有他android才能知道你要干什麼
你想提出odex肯定要解包了。。。 有解包工具,教程資源網路 dex解包