程序员的AI工具,解答专业问题
1、作用
使用AndroidStudio能够调试Android Framework,断点调试能够更理解Framework逻辑。
2、环境搭建
-
下载Android源码
-
编译源码
-
配置Android Studio
-
配置vm options
-
- 配置最大打开文件数
-
创建Android Framework工程
-
源码根目录运行.build/envsetup.sh
- 单独编译idegen模块,在源码根目录运行mmm development/tools/idegen/ 运行成功后会生成idegen.jar
-
- 运行idegen脚本,在源码根目录运行./development/tools/idegen/idegen.sh
- idegen脚本运行成功后会在源码根目录生成android.iml、android.ipr等文件,其中android.ipr就是AndroidStudio使用的文件
- 提升导入代码速度,使用excludeFolder去掉不关注的代码目录,修改android.iml
-
导入Framework工程到Android Studio
打开Android Studio,然后找到根目录下生成的android.ipr文件并打开(耐心等待index建立)
-
配置项目工程
- 导入完成后会出现Frameworks detected
- 然后点击Configure,点OK
- 配置工程
- 然后把Android SDK的classpath和sourcepath也删除,同时将Java SDK选为刚刚配置JDK1.8
- 按照如下设置把JDK的classpath和sourcepath下的内容都删掉,使其能在debug时定位到项目中的源码
- 设置Modules的依赖,将依赖中除了下图所示的之外全部删除
- 然后点击左下角的+选择Jars or directories添加framework相关的源码文件夹
- 点击OK,等待其建立index完成后工具栏的Attach debugger to Android process就会变成可点击状态
4、在线调试Android Framework
-
attach到system_process进程
-
设置断点
成功attach后就可以打开想要设置断点的源码文件,然后在行号右边的空白处左键点击设置断点
-
查看运行时状态
设置完成后就可以操作手机,当代码运行到断点处就可以停下来,这时就可以查看运行时的状态,包括变量的值,backtrace等
还可以在watches窗口添加想要查看的表达式的值
-
获取backtrace快照
另外attach后,在不设置断点的情况下也可以实时的获取所有线程的backtrace的快照,作用类似于kill -3,但是只有Java层的trace