Android Studio 调试 Android Framework 层代码
- 1. 第一步,这行命令的意思是编译idegen这个项目,生成idegen.jar文件。
- 2. 第二步,这行命令的意思是生成:android.iws, android.ipr, android.iml这个三个文件。
- 3 我们发现有2000~3000行,是非常多的,但是仔细的看,发现大标签只有三种
- 4.0, 前面为了加快Android studio的显示,前面把模块都删除了,可以在project struct 中设置,把需要的模块都加载进来。
- 5.0 发现framework目录下,am 同一个包名下的类无法跳转,发现在package 里有类似的报错提示:“Package name ' does not correspond to the file path 'java.com.android.server.am'”
- 参考
1. 第一步,这行命令的意思是编译idegen这个项目,生成idegen.jar文件。
$ mmm development/tools/idegen/
如果你看到了绿色的 #### make completed successfully ####,说明这步是ok的。
2. 第二步,这行命令的意思是生成:android.iws, android.ipr, android.iml这个三个文件。
$ sh ./development/tools/idegen/idegen.sh
3 我们发现有2000~3000行,是非常多的,但是仔细的看,发现大标签只有三种
关于标签:
去除不需要debug的标签内容,通常我们只需要frameworks和packages两个目录,所以保留这两个目录有关的标签就行,其他全部删掉,这样索引的速度就会加快了。
关于标签:
exclude顾名思义就是不包含的意思。我们有很多目录直接就不想让Studio去管它,不管是索引还是什么等等,所以只需要将这些目录配置到中就好了。
** 我这里只保留了framworks和packages模块,将其他模块全部排除了,因此在android.iml中添加了以下配置: 剩下的都删了**
另外,可以删除所有module-library 的标签
<?xml version="1.0" encoding="UTF-8"?><orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="inheritedJdk" />
<orderEntryProperties />
接下来就可以看源码了,而且没有报错,但是没有关联跳转,接下来我们解决这个问题。
修改JDK + SDK
** 如图:我编译的版本是Android6.0,所以用JDK1.7编译,这里默认1.8,所以要换成1.7,删除多余的SDK **
4.0, 前面为了加快Android studio的显示,前面把模块都删除了,可以在project struct 中设置,把需要的模块都加载进来。
另外,在依赖模块中, 不需要再把对应模块的代码加载进来。
5.0 发现framework目录下,am 同一个包名下的类无法跳转,发现在package 里有类似的报错提示:“Package name ’ does not correspond to the file path ‘java.com.android.server.am’”
通过对比原生的android.iml,修改sourceFolder的uri的路径的名字,然后,重启Android studio。
参考
https://www.jianshu.com/p/abd8d7a074fd
https://zhuanlan.zhihu.com/p/295363172
http://gityuan.com/2016/08/13/android-os-env/
把Android源码导入Android Studio进行调试 : https://www.jianshu.com/p/abd8d7a074fd