Android Studio导入并调试Android Framework

转载:Android Studio导入并调试Android Framework

1、下载并编译Andriod 源码

关于下载编译Android源码,这一块只是内容实际上还是比较麻烦的,这个内容可以参考我的另一篇博文Ubantu18.04环境下编译android源码

2、生成Android Studio工程文件

既然要使用Android Studio(之后简称AS)来调试Android Framework(之后简称AF)源码,那么首先得用AS打开AF,我们知道AF源码在Android源码目录的frameworks文件中,但是用AS直接打开这个源码是不行的,我们得首先生成一个AS能够打开的工程文件。

为了达到这个目的首先cd到Android源码目录,执行下面命令生成idegen.jar

. build/envsetup.sh 
mmm development/tools/idegen/ 
  
  
  • 1
  • 2

出现如下提示表示执行成功了
这里写图片描述
然后再执行如下命令生成AS能够打开的工程文件android.ipr以及工程配置文件android.iml

development/tools/idegen/idegen.sh
  
  
  • 1

出现如下提示表示成功
这里写图片描述
并且在Android源码根目录下生成android.ipr以及android.iml两个文件,有些文章会提到android.iws文件,但是实际上在本博文中这个文件并没有什么用
这里写图片描述
到这里AS能打开的工程文件android.ipr以及配置文件android.iml这两个文件就生成了,实际上关于这里童鞋们也可以自行参考源码路径下的development/tools/idegen/README 文件。

3、AS导入Android源码

既然已经生成了android.ipr文件,那我么直接用AS打开android.ipr文件呗。先别着急,我们只需要调试AF但是这里生成的android.ipr可是包含了基本上Android源码里的所有模块,那么如果我们就这么打开android.ipr的话,那么等待我们的将是漫长scanning index过程。

那么如何让AS只加载AF模块呢,这里就要用到android.iml这个文件来配置了,打开android.iml文件搜索excludeFolder,我们便能搜索到需要配置的地方
这里写图片描述
既然这里提供了模板,我们便只需要依葫芦画瓢便可,比如不加载development模块,并只需要添加如下配置即可

<excludeFolder url="file://$MODULE_DIR$/development"/>
  
  
  • 1

由于我们只要加载frameworks模块,所以便可以在这里把所有其它模块都给去掉,然后通过AS打开android.ipr文件发现什么鬼怎么其它模块都还在
这里写图片描述
在配置过程中,我为此纠结了很久,后面发现在上图Show Options menu的菜单中有一个Show Excluded Files菜单,去掉这个便可只显示frameworks了。
这里写图片描述
这里我们就成功的通过AS导入了AF模块。

4、调试Android Framework

在导入AF后,便需要考虑调试AF的问题了,这里事先实现了了一个com.example.test模块,其只有一个包含ListView的Activity,我们在AF的AbsListView中打好断点
这里写图片描述
然后打开模拟器,注意因为我拉取的是android 8.1源码,所以这里的模拟器也是打开的API 27的模拟器,不然可能存在断点找不到的情况,如果用真机调试的话,那更是没戏了。

AF中run -> Attach debugger to android process,选中对应的com.example.test模块,然后在模拟器中打开com.example.test模块,递减ListView便能在Android Studio中捕获到断点,这样便能愉快的进行调试了,由于电脑比较卡这里就不上图了,以后有时间补上吧。

扫描二维码关注公众号,回复: 5541733 查看本文章

到这里Android Studio中导入并调试Framework的介绍就算是告一段落了。

参考文献

1、如何调试Android Native Framework
2、使用Android Studio调试Android Framework代码
3、Android Studio导入Android源码/调试framework的教程
4、使用Android Studio导入源码
5、将Android系统源码导入Android studio的方法
6、如何调试Android Framework?
7、Android Studio系列(二)使用AS开发/调试整个android系统源代码(不定时更新

猜你喜欢

转载自blog.csdn.net/qq_25430563/article/details/88398727