昨天我才发现,原来在Android Studio中能够很轻松得调试Android源码java
在Android Studio中装一个插件: ADB Ideaandroid
这个插件的功能,其实就是利用adb实现一些经常使用的操做:ide
若是使用上面这些功能:Tools->Android->ADB Idea menu测试
在Android Studio中随便新建一个项目,名称随便取.而后targetSdkVersion选择你手机或者模拟器的安卓版本.idea
而后运行到手机或者模拟器上.spa
这里的手机最好是选取Pixel一类的测试机,毕竟是谷歌的亲儿子.或者用福官方或者Genymotion模拟器也行.国内的源码都是被厂商定制过的,好多东西都被修改过,调试的时候可能会出现Source code does not match the bytecode
.插件
我这里随便选择一个,好比View的源码.双击Shift,输入View,点进去(若是没有出现View相关的源码,记得勾选include non-project items).我这里选择随便找个方法,好比measure方法.我在measure方法的左侧打上多个断点3d
而后这样操做,选择adb idea的ADB Restart App With Debugger
菜单调试
来了,老哥,接下来AS会停在你刚刚打的断点上,而后咱们就能够像平时那样调试了code
你甚至能够选中某个变量,而后按F2键,进行修改它的值
Source code does not match the bytecode
问题有时候咱们想用华为或者小米手机,而后也想调试一下,怎么说? 那确定是会遇到Source code does not match the bytecode
问题的.咱们试着解决一下.
这个时候先把上面demo运行到这个小米手机上.而后咱们看View的源码,它的包名是
package android.view;
复制代码
咱们在demo中也建一个这样的包名,而后把View的源码所有拷贝过去.
在本身的View文件中,仍是找到measure方法,仍是在左侧打不少个断点,仍是选择adb idea的ADB Restart App With Debugger
菜单
而后咱们发现一进来就来到了第三行,说明咱们的代码和小米手机的源码相差2行(我这里只是举个例子,你的手机可能会相差4行或者1行也有可能),由于这个时候应该停留在第一行才对.
并且仔细观察,左侧的红圈,上面有一个小勾,表示这一行是能够调试的.那种灰色圆圈+中间一根灰线,那种表示这一行不能调试(可能在源码中是注释).
那么如何解决这种相差2行的问题呢? 我在measure的注释里面,加2行空行.
看到没,左边的灰色圆圈消失了,而后全是红色圆圈,表示调试的行数与源码上的行数已经一一对应. 这时候咱们按F6,继续愉快的调试着,进入下一行.