修改system/framework下的odex文件常會遇到無法開機(jī)的情況,頗令各愛好動手的機(jī)油感到頭痛,下面解決這一問題的方法分享給大家:
需要工具:
adb、baksmali-1.4.2.jar、smali-1.4.2.jar、jdk、dexopt-wrapper
以修改android.policy.odex為例
分解odex文件:
java -jar baksmali-1.4.2.jar -x android.policy.odex
把修改之后的文件生成odex文件
java -jar smali-1.4.2.jar out -o classes.dex
用winrar打開android.policy.jar,把得到的classes.dex拖進(jìn)去。
接下來需要用到adb工具,手機(jī)端打開usb調(diào)試,在工作目錄打開cmd,(操作小技巧:win7下shift+右鍵,選擇在此處打開命令窗口即可。)
adb push android.policy.jar /sdcard/android.policy.jar把a(bǔ)ndroid.policy.jar復(fù)制到手機(jī)的內(nèi)置卡。
adb shell --->
su --->獲取root權(quán)限
mount -o rw,remount /system --->把/system目錄改成能讀寫
busybox cp -f /system/framework/android.policy.jar /system/framework/android.policy.jar.bak --->把a(bǔ)ndroid.policy.jar拷貝一份命名為android.policy.jar.bak
busybox cp -f /system/framework/android.policy.odex /system/framework/android.policy.odex.bak --->把a(bǔ)ndroid.policy.odex.bak拷貝一份命名為android.policy.odex.bak
busybox cp -f /sdcard/android.policy.jar /system/framework/android.policy.jar --->把sd卡上我們編譯好的android.policy.jar覆蓋到/system/framework目錄下
rm /system/framework/android.policy.odex --->刪除原始的android.policy.odex
dexopt-wrapper /system/framework/android.policy.jar /system/framework/android.policy.odex,把a(bǔ)ndroid.policy.jar分解成android.policy.odex(說明:dexopt-wrapper放到system/bin下,權(quán)限0755)
busybox dd if=/system/framework/android.policy.odex.bak of=/system/framework/android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc拷貝備份的android.policy.odex.bak里的簽名到新生成的android.policy.odex里
busybox cp -f /system/framework/android.policy.jar.bak /system/framework/android.policy.jar備份的android.policy.jar被重新命名并替換存在的android.policy.jar
rm /system/framework/android.policy.jar.bak刪除備份文件android.policy.jar.bak
rm /system/framework/android.policy.odex.bak刪除備份文件android.policy.odex.bak
復(fù)制代碼
同時把其他相關(guān)文件修改完重啟即可。
其中最重要的步驟是:
busybox dd if=/system/framework/android.policy.odex.bak of=/system/framework/android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc拷貝備份的android.policy.odex.bak里的簽名到新生成的android.policy.odex里
adb、baksmali-1.4.2.jar、smali-1.4.2.jar、jdk、dexopt-wrapper
以修改android.policy.odex為例
分解odex文件:
java -jar baksmali-1.4.2.jar -x android.policy.odex
把修改之后的文件生成odex文件
java -jar smali-1.4.2.jar out -o classes.dex
用winrar打開android.policy.jar,把得到的classes.dex拖進(jìn)去。
接下來需要用到adb工具,手機(jī)端打開usb調(diào)試,在工作目錄打開cmd,(操作小技巧:win7下shift+右鍵,選擇在此處打開命令窗口即可。)
adb push android.policy.jar /sdcard/android.policy.jar把a(bǔ)ndroid.policy.jar復(fù)制到手機(jī)的內(nèi)置卡。
adb shell --->
su --->獲取root權(quán)限
mount -o rw,remount /system --->把/system目錄改成能讀寫
busybox cp -f /system/framework/android.policy.jar /system/framework/android.policy.jar.bak --->把a(bǔ)ndroid.policy.jar拷貝一份命名為android.policy.jar.bak
busybox cp -f /system/framework/android.policy.odex /system/framework/android.policy.odex.bak --->把a(bǔ)ndroid.policy.odex.bak拷貝一份命名為android.policy.odex.bak
busybox cp -f /sdcard/android.policy.jar /system/framework/android.policy.jar --->把sd卡上我們編譯好的android.policy.jar覆蓋到/system/framework目錄下
rm /system/framework/android.policy.odex --->刪除原始的android.policy.odex
dexopt-wrapper /system/framework/android.policy.jar /system/framework/android.policy.odex,把a(bǔ)ndroid.policy.jar分解成android.policy.odex(說明:dexopt-wrapper放到system/bin下,權(quán)限0755)
busybox dd if=/system/framework/android.policy.odex.bak of=/system/framework/android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc拷貝備份的android.policy.odex.bak里的簽名到新生成的android.policy.odex里
busybox cp -f /system/framework/android.policy.jar.bak /system/framework/android.policy.jar備份的android.policy.jar被重新命名并替換存在的android.policy.jar
rm /system/framework/android.policy.jar.bak刪除備份文件android.policy.jar.bak
rm /system/framework/android.policy.odex.bak刪除備份文件android.policy.odex.bak
復(fù)制代碼
同時把其他相關(guān)文件修改完重啟即可。
其中最重要的步驟是:
busybox dd if=/system/framework/android.policy.odex.bak of=/system/framework/android.policy.odex bs=1 count=20 skip=52 seek=52 conv=notrunc拷貝備份的android.policy.odex.bak里的簽名到新生成的android.policy.odex里



