无需编译源码,在Android Studio中轻松调试Android源码

昨天我才发现,原来在Android Studio中能够很轻松得调试Android源码java

0. 准备工做

在Android Studio中装一个插件: ADB Ideaandroid

这个插件的功能,其实就是利用adb实现一些经常使用的操做:ide

  • ADB Uninstall App
  • ADB Kill App
  • ADB Start App
  • ADB Restart App
  • ADB Clear App Data
  • ADB Clear App Data and Restart
  • ADB Revoke Permissions
  • ADB Start App With Debugger
  • ADB Restart App With Debugger

若是使用上面这些功能:Tools->Android->ADB Idea menu测试

1. 新建一个Demo

在Android Studio中随便新建一个项目,名称随便取.而后targetSdkVersion选择你手机或者模拟器的安卓版本.idea

而后运行到手机或者模拟器上.spa

这里的手机最好是选取Pixel一类的测试机,毕竟是谷歌的亲儿子.或者用福官方或者Genymotion模拟器也行.国内的源码都是被厂商定制过的,好多东西都被修改过,调试的时候可能会出现Source code does not match the bytecode.插件

2. 打开想要调试的源码

我这里随便选择一个,好比View的源码.双击Shift,输入View,点进去(若是没有出现View相关的源码,记得勾选include non-project items).我这里选择随便找个方法,好比measure方法.我在measure方法的左侧打上多个断点3d

image

3. 开始调试

而后这样操做,选择adb idea的ADB Restart App With Debugger菜单调试

image

来了,老哥,接下来AS会停在你刚刚打的断点上,而后咱们就能够像平时那样调试了code

image

4. 骚操做

你甚至能够选中某个变量,而后按F2键,进行修改它的值

image

5. 解决Source code does not match the bytecode问题

有时候咱们想用华为或者小米手机,而后也想调试一下,怎么说? 那确定是会遇到Source code does not match the bytecode问题的.咱们试着解决一下.

这个时候先把上面demo运行到这个小米手机上.而后咱们看View的源码,它的包名是

package android.view;
复制代码

咱们在demo中也建一个这样的包名,而后把View的源码所有拷贝过去.

image

在本身的View文件中,仍是找到measure方法,仍是在左侧打不少个断点,仍是选择adb idea的ADB Restart App With Debugger菜单

image

而后咱们发现一进来就来到了第三行,说明咱们的代码和小米手机的源码相差2行(我这里只是举个例子,你的手机可能会相差4行或者1行也有可能),由于这个时候应该停留在第一行才对.

并且仔细观察,左侧的红圈,上面有一个小勾,表示这一行是能够调试的.那种灰色圆圈+中间一根灰线,那种表示这一行不能调试(可能在源码中是注释).

那么如何解决这种相差2行的问题呢? 我在measure的注释里面,加2行空行.

image

看到没,左边的灰色圆圈消失了,而后全是红色圆圈,表示调试的行数与源码上的行数已经一一对应. 这时候咱们按F6,继续愉快的调试着,进入下一行.

相关文章
相关标签/搜索