程序员的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
    
   
 
版权声明:本文为ming15920原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
