Android ROM中Odex文件的作用及介紹

細心的網友可能發現Android的ROM中有很多odex文件,相對於 APK中的dex文件而言這個odex有什麼作用呢? Android123提示大家,如果你仔細觀察會發現文件名時一一對應的,同時那些對應的apk文件中沒有dex文件。這樣做可以使其廠商保證一定的反盜 版,因爲沒有沒有dex文件的apk是無法正常安裝的,而廠商直接將odex和不完整的apk文件放到手機rom固化到/system/bin中可以讓一 般用戶無法正常導出使用。

很多網友可能想到的是合併odex和apk變成apk中包含dex文件的,這樣合併後最終apk文件安裝在/data/中,而rom存放時在 /system/bin中,所以最終導致了用戶可裝在Android手機中的軟件會變少,佔用系統空間。

一、APK生成 odex文件方法:

編譯開源GIT上的build/tools /dexpreopt/dexopt-wrapper這個,使用dexopt-wrapper即可,操作步驟

將dexopt-wrapper放到/data/local目錄中,使用adb shell執行linux命令行,使用cd命令進入/data/local目錄,

cd /data/local

./dexopt-wrapper android123.apk android123.odex

二、合併odex和 少dex的apk 爲完整的apk文件

需要用到的工具是smali,一個開源的java處理軟件:

http://code.google.com/p/smali/downloads/list

一.下載的baksmali和 smali的jar文件到工作目錄

二.把ROM裏面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex這5個文件也放在同一目錄(也可以放在別的目錄,通過設置BOOTCLASSPATH指定,默認就是當前目錄)。

例:
以teeter爲例子 (HTC一些Android常常會內置),ROM裏面拿出來的可能是2個文件,teeter.apk + teeter.odex。
1、分解odex文件:
java -jar baksmali-1.2.1.jar -x teeter.odex
如果沒其他問題,會在工作目錄生成一個out的目錄,裏面是分解出來的一些文件,我們在此不深究這些文件的作用。

2、把分解得到的文件變成classes.dex:java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex,這樣得到了一個有用的classes.dex文件

3、用WinZip或者WinRAR打開teeter.apk文件,把這個classes.dex 放進去

4、最後再用signapk把最新得到的這個包含classes.dex的apk重新簽署一下 (Auto Sign簽名工具往期的文章裏有下載),就生成一個可以安裝的單獨APK程序了。

5、簽名完成後即可安裝使用了

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