在阅读Android源码的过程中,有时候我们想要知道某个变量或者方法在哪些地方声明、定义抑或是使用过,甚至是某个字符串在哪里出现过,下面以status_bar_height状态栏高度的检索为例,介绍几种全局查找Android系统源码的方法:
1. 在线检索
如果你只需要查找该变量在Android原生代码中的定义,那么你可以在http://androidxref.com/网站上检索,该网站是基于OpenGrok源码搜索引擎搭建的Android系统源码浏览网站,若你的网络没有问题,在该网站上的检索极快。在该网站上检索status_bar_height的示例如下图:
image.png2. 利用命令检索
2.1 首先使用. build/envsetup.sh命令初始化编译环境
2.2 然后就可以使用cgrep、jgrep、resgrep、mangrep等命令对特定类型的文件进行全局检索。
cgrep、jgrep、resgrep、mangrep等命令的实现位于build/envsetup.sh文件中,如下图所示:
从源码可以看出,cgrep等命令的实现是通过find、xargs和grep命令进行组合实现对特定类型
文件进行全局检索的。使用命令检索status_bar_height的示例如下图:
cgrep:在所有的C/C++文件中检索
ggrep:在gradle文件中检索
jgrep:在java文件中检索
resgrep:在res/*.xml文件(资源文件)中检索
sgrep:在所有源代码中检索
find命令
-prune 忽略某个目录或者文件
-o 选项(参数)拼接
grep命令
--color 颜色高亮
-n 显示行号
3. 通过Android Studio检索
首先需要将Android系统源码导入Android Studio中,建立索引(耗时较长),然后才可以进行检索。
关于如何将Android系统源码导入到Android Studio中,可以参考这篇文章:
Android Studio导入整个Android系统源码
4. 通过SouceInsight检索
首先需要将Android系统源码导入到Source Insight中,建立索引(耗时长),然后才可以进行检索。
总结
如果你只需要查找该变量在Android原生代码的定义,推荐你在http://androidxref.com/网站上检索。除此之外,在你没有将Android系统源码导入到Android Studio中建立好索引的情况下,推荐你使用命令进行检索。
网友评论