開發/逆向場景下,常需**阻止 Dalvik/ART 將 classes.dex 優化為 odex**,以便直接 dump 原始 dex 文件進行分析。本文詳述通過修改 `/system/build.prop` 實現禁用優化,並解決模擬器重啟配置失效的持久化難題。
編輯 `/system/build.prop`,添加/修改兩項鍵值:
v=n:關閉**所有代碼校驗**(verify none);o=v:僅優化**已校驗過的代碼**(optimize verified)——因校驗已關閉,實際**無代碼被優化**,達到禁用 odex 目的。adb remount # 重掛載 system 分區為可寫
adb shell # 進入模擬器 shell
echo "dalvik.vm.dexopt-flags=v=n,o=v" >> /system/build.prop
echo "dalvik.vm.checkjni=false" >> /system/build.prop
exit
驗證:重啟模擬器後 `cat /system/build.prop` 確認生效,dex 不再生成 odex。
模擬器默認 system.img 為臨時快照,關機丟失修改。參考 StackOverflow 方案,實現**永久寫入 system.img**:
emulator -avd <你的AVD名稱> -qemu -nand system,size=0x1f400000,file=/home/user/avd/MyAVD/system.img
size 為分配給 system 分區的空間(十六進制,例 0x1f400000 = 500MB),按需調整。
adb -e emu kill
此命令觸發 QEMU 安全關機,**將內存修改刷回 system.img 文件**。