最近在学习Android Framework的调试方法
看了一篇大神写如何调试Android Framework?,写的很好,步骤很详细。
如他所说
“一个进程是否可以调试是由进程启动时候的参数决定的;普通的App进程如果是debug keystore默认是可以调试的,有或者你在AndroidManifest里面指定debuggable为true也是可以调试的。对系统进程,我们只有采取系统级别的手段:让整个系统可以调试——debug版或者编译参数debuggable为1的系统。解决这个办法很简单:使用模拟器(真机也行,限Nexus系列刷原生Android系统,把系统启动的debuggable参数修改为1)”
上面一段文字看起来好长的样子,其实意思很简单,就是说需要一台手机的debuggable参数为1 就可以了,可是我没有啊!!怎么办,学不下去了;
怎奈,我的求(zhuang)知(bi)欲实在是太强了 就点开了google 查了一下发现debuggable 参数是在default.prop这个文件里,看起来so easy =, =
随后,我在手机里安装了RE文件管理器,打开,在根目录下找到default.prop 找到 ro.debuggable 并将其值设置为 1,重启
一切看起来都是那么的和谐和顺利,本以为会完事。可当手机重启之后,我发现ro.debuggable的值又变回了原来的0。其实这个文件是系统通过boot.img生成的,修改它没用,会被系统覆盖。
既然是boot.img 生成的 所以就需要改boot.img,查了资料说是需要mkbootimg拆包,修改完之后在打包(这里其实是个大坑)。 由于mkbootimg和unpackbootimg是基于源码编译的,网上下载下来的不靠谱,所以需要自己去下载源码编译。我尝试了没成功,想尝试的话可以参考
最后,找到一个非常nice的方法,并成功解决了我的问题,在这里分享出来,以免有人需要。
其实很简单,只需
一、下载 Image Kitchen for Android 并安装到手机里(网盘下载地址在底部)
二、将手机系统对应的 boot.img 复制到手机sdcard里
三、打开Image Kitchen for Android 点击右下角+选择 Unpack/Mount -> boot.img ,解压完会是下面这样
四、打开ramdisk目录下的 default.prop文件并修改相关参数,我这里把ro.debuggable 设为1; 保存退出
五、现在开始打包,点击右下角+选择 repack,会打包生成一个名为image-new.img的文件。长按将文件导入到sdcard,并将此文件pull到电脑,修改名字为boot.img。
到这为止就制作完事了,很简洁。
开始刷入boot
手机关机之后按住电源加音量减(我这里是这样,不同手机可能不同) 进入刷机模式。手机连上电脑
打开命令行
输入 ./fastboot devices 查看是否连接上手机
接着输入 ./fastboot flash boot boot.img
提示这样表示成功。
输入 ./fastboot reboot 重启手机
开机之后,连上手机打开ADM 看到下面这样说明就修改成功了。
好了,可以继续学习了。
Image Kitchen for Android 百度网盘 密码: mepk