如果要調試一個App里面的dex代碼,必須滿足以下兩個條件中的任何一個:
- App的AndroidManifest.xm中Application標簽必選包含屬性android:debuggable="true";
- /default.prop中ro.debuggable的值為1
AndroidManifes 添加 android:debuggle=true
可以通過反編譯app,在AndroidManifest.xm中Application標簽中添加 android:debuggable="true" ,回編譯,簽名,安裝,然后就可以進行動態(tài)調試了
ro.debuggable=1(手機需要root)
ro.debuggable是在default.prop里面配置的,ro.debuggable的默認字段是0,我們需要將他設置為1。
如果用re文件管理器手動修改或者通過adb修改以后,重啟手機后,你會神奇的發(fā)現(xiàn)修改又不生效了,這是因為default.prop是系統(tǒng)通過boot.img生成的,手動修改它是沒有用的,會被系統(tǒng)覆蓋。而手動編譯修改boot.img文件復雜又容易出錯,這里可以注入init進程,修改內存中的ro.debuggable字段數據為1,可以使用 mprop 工具來實現(xiàn),如果上述工具不生效的話,可以試試這個
adb push mprop /data/local/tmp # 將下載的mprop 放入 /data/local/tmp 當中
adb shell
su
cat default.prop | grep debug # 查看default.prop里面的配置值,此處是 0
getprop ro.debuggable # 獲取ro.debuggable 此處應該是 0
cd /data/local/tmp
chmod 755 mprop # 修改權限
./mprop ro.debuggable 1 # 修改 ro.debuggable 1 的值為 1
cat default.prop | grep debug # 查看default.prop里面的配置值,此處是應該還是 0
getprop ro.debuggable # 獲取ro.debuggable 此處應該是 1
stop;start # 重啟adbd進程
上面的修改需要在root手機中進行,手機再次重啟后需要再次進行一次修改操作。
ok,修改完成后,再次看下是不是可以調試了

debug.png