編程學習網 > 編程語言 > Android開發 > 在線看Android系統源碼,相見恨晚的幾種方案
2016
12-06

在線看Android系統源碼,相見恨晚的幾種方案

前言:最近在研究MediaCodec,u盤壞了,之前下載的源碼也就自然沒有了,真是個難過的事情,不能因為沒有源碼了,就阻擋我的計劃了呀,于是就是今天一文,在線看 Android 源碼,加之此前很多人也有向我留言,如何看android系統的源碼,今天來敲黑板,劃重點了。

不管是做Android底層開發,還是做應用層開發,在Android這條路上走下去,必須對于Android源碼夠了解,如某一個功能,某一個機制,或者某一個API,它到底是如何實現的,需要 Read the fucking source code,才能知其然,知其所以然。下面幾種在線看源碼的方式:

1, http://androidxref.com

2, http://www.grepcode.com/

3,Android SDK Search插件

來說說這三種方式的體驗, http://androidxref.com ,這個同步官方源碼,最新的7.0,上面也已經有了,我也比較喜歡這個,該有的功能應用盡有,第2個的話,如圖,還停留在5.1階段,也找不到我想要的,于是果斷放棄了。Android SDK Search也還行。下面重點介紹Android SDK Search 插件和androidxref。

http://www.grepcode.com/

Android SDK Search

在 Android 開發或者源碼分析時,一般會去查看 Google 官方提供的 Android API,如果希望深入了解 API 實現的細節,當然最好的方法就是去看源代碼了。對于在線 API 文檔,如果在查看時,還能夠查看到源代碼那當然是最好不過的。在 Chrome 瀏覽器下,可以安裝 Android SDK Search 擴展程序來達到這個目的,該擴展程序在 Chrome網上應用店截圖如下所示。安裝完該擴展程序后,再次搜索 Android API 后,會在相應的搜索結果后增加一個 view source鏈接。例如搜索 Activity 類,結果如圖 4 所示。點擊 view source鏈接,就可以打開 Activity類的源代碼,如圖所示,從網頁中可以看出其實是鏈接到了 Google 的 Android 源碼的 Git

AndroidXRef

AndroidXRef( http://androidxref.com/ )項目提供 Android 源碼的交叉索引,可以快速的搜索符合特定條件的 Android 源代碼,后臺是基于 OpenGrok 引擎,OpenGrok是一個快速,便于使用的源碼搜索引擎與對照引擎,它能夠幫助我們快速的搜索、定位、對照代碼樹。AndroidXRef 提供了完整的 Android kernel源碼的索引。在 AndroidXRef 主頁的右側顯示了可用的源碼版本,如圖所示, 

點擊相應的源碼版本鏈接

就可以進入對應的源碼分支,如圖所示,我進入6.0的最新分支:

上圖右側提供在特定目錄下搜索,例如在分析 Framework源碼時,可以選擇 frameworks 目錄,這樣可以減少搜索范圍,縮短搜索時間,能夠更加精確地定位到需要的源代碼。左側是提供了一些搜索的條件,其意義如下(在指定的 Project(s)下):

  • Full Search: 進行全文搜索,會匹配所有的單詞、字符串、標識符以及數字等,例如在frameworks 下通過 Full Search 搜索”mediacodec“

點擊”search“,會顯示所有包含mediacodec字符(忽略大小寫)的結果,即使是注釋也會顯示出來,如下圖,點擊對應的鏈接會打開包含mediacodec所在的文件夾

點擊左側文件名如 TrackDecoder. Java 鏈接會打開包含mediacodc字符串文件;

其他依次類推,點擊右側每一行的搜索結果鏈接同樣會打開相相應的文件內容;

  • Definition:搜索符號定義相關的代碼,例如搜索 ondraw 函數的定義,顯示結果如圖

提示你是否要找onDraw,onChildDraw等方法,我們點擊onDraw,立刻跳轉到如下頁面:

從搜索結果可以看到,所有onDraw方法的類都會列出來,到第6頁,找到我們熟悉的TextureView,點擊進去

  • Symbol:搜索符號,例如可以搜索類中的成員變量等,下圖顯示了通過 Symbol 搜索FEATURE_NO_TITLE的結果

平時我們在this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄,這個FEATURE_NO_TITLE就是在Window.java中的,

  • File Path:搜索源碼文件名中包含給定字符串的文件,例如想要搜索文件名包含mediacodec的源碼文件,則可以在 File Path 中填入 mediacodec 進行搜索,結果如下所示

這剛好就是我相要的,比起在IDE中一個一個看,這里這個功能不得不說6的飛起。

  • History:這個幾乎沒有用,用處肯定也不大,我嘗試過各種搜索。

上面只是單一的搜索,如果是多個條件呢?這里依然滿足,

如搜索mediacodec.cpp中的start函數,如圖所示:

由于AndroidXRef 使用的是 OpenGrok 引擎,因此還支持一些其他的搜索方式:在【 http://androidxref.com/6.0.0_r5/help.jsp 】,寫的相當詳細,感興趣的同學可以看看。

最后還是打個小宣傳吧,最近我正在參加CSDN 2016年度博客之星評選,拉票心累,趕緊幫投票吧! 時間:11月28日到12月18日每天都可以為我投一票 投票地址: http://blog.csdn.net/vote/candidate.html?username=hejjunlin ,點擊 【閱讀原文】可直接幫投 ,微信,qq,微博都可以。麻煩了!

 

 

 

來自:http://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484275&idx=1&sn=bc4f8352b63a5b6dd84de0217946050a&chksm=eae1f621dd967f37732165c0dae157fb00799cba265fb2718d0745bcd9bc79c2cde38d36d21a#rd

 

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取