在閱讀Android源碼的過程中装蓬,有時(shí)候我們想要知道某個(gè)變量或者方法在哪些地方聲明灿渴、定義抑或是使用過下梢,甚至是某個(gè)字符串在哪里出現(xiàn)過全肮,下面以status_bar_height狀態(tài)欄高度的檢索為例悬钳,介紹幾種全局查找Android系統(tǒng)源碼的方法:
1. 在線檢索
如果你只需要查找該變量在Android原生代碼中的定義盐捷,那么你可以在http://androidxref.com/網(wǎng)站上檢索,該網(wǎng)站是基于OpenGrok源碼搜索引擎搭建的Android系統(tǒng)源碼瀏覽網(wǎng)站他去,若你的網(wǎng)絡(luò)沒有問題毙驯,在該網(wǎng)站上的檢索極快。在該網(wǎng)站上檢索status_bar_height的示例如下圖:
2. 利用命令檢索
2.1 首先使用. build/envsetup.sh命令初始化編譯環(huán)境
2.2 然后就可以使用cgrep灾测、jgrep爆价、resgrep、mangrep等命令對特定類型的文件進(jìn)行全局檢索媳搪。
cgrep铭段、jgrep、resgrep秦爆、mangrep等命令的實(shí)現(xiàn)位于build/envsetup.sh文件中序愚,如下圖所示:
從源碼可以看出,cgrep等命令的實(shí)現(xiàn)是通過find等限、xargs和grep命令進(jìn)行組合實(shí)現(xiàn)對特定類型
文件進(jìn)行全局檢索的爸吮。使用命令檢索status_bar_height的示例如下圖:
cgrep:在所有的C/C++文件中檢索
ggrep:在gradle文件中檢索
jgrep:在java文件中檢索
resgrep:在res/*.xml文件(資源文件)中檢索
sgrep:在所有源代碼中檢索
find命令
-prune 忽略某個(gè)目錄或者文件
-o 選項(xiàng)(參數(shù))拼接
grep命令
--color 顏色高亮
-n 顯示行號
3. 通過Android Studio檢索
首先需要將Android系統(tǒng)源碼導(dǎo)入Android Studio中,建立索引(耗時(shí)較長)望门,然后才可以進(jìn)行檢索形娇。
關(guān)于如何將Android系統(tǒng)源碼導(dǎo)入到Android Studio中,可以參考這篇文章:
Android Studio導(dǎo)入整個(gè)Android系統(tǒng)源碼
4. 通過SouceInsight檢索
首先需要將Android系統(tǒng)源碼導(dǎo)入到Source Insight中筹误,建立索引(耗時(shí)長)桐早,然后才可以進(jìn)行檢索。
總結(jié)
如果你只需要查找該變量在Android原生代碼的定義,推薦你在http://androidxref.com/網(wǎng)站上檢索哄酝。除此之外友存,在你沒有將Android系統(tǒng)源碼導(dǎo)入到Android Studio中建立好索引的情況下,推薦你使用命令進(jìn)行檢索陶衅。