如何用Android Studio查看build.gradle源碼

本篇文章已受權微信公衆號 dasu_Android(大蘇)獨家發佈html

上一篇博客裏講過 build.gradle 裏的每一行代碼基本都是在調用一個方法,既然是這樣,咱們就能夠用 android studio(下面簡稱as) 去查看它源碼的方法註釋說明,這樣就能夠理解每一個方法是作什麼的了,就算是在大神的 build.gradle 碰見一些沒看懂的代碼,也能夠點進去看方法介紹來理解。就像咱們在查看 SDK 裏的各類方法同樣。java

可是有個問題,應該也有小夥伴跟我同樣吧,每次在大神的 build.gradle 看到一堆不懂的代碼時,按住 Ctrl 鍵後,鼠標移到代碼上時有個跳轉的手勢時老是很開心,老是心想原來能夠看源碼啊,那就點進去看看介紹,看這個是幹嗎的吧。但是每次一點進去,打開的倒是 class 代碼文件,頂多就只有方法名,一點註釋都沒有,並且方法參數命名還混淆過,也猜不出來是幹嗎的。又不懂怎麼去官方文檔裏查找,只能去網上用關鍵字查找,找出來的又跟本身碰到的問題不同,越找越氣乾脆不找了,放一邊去,之後再說。android

是吧,若是能夠直接經過 as 看源碼的註釋該多好。好了,廢話到這,下面開始正文。api


系列索引

build.gradle系列一:看不懂的build.gradle代碼
build.gradle系列二:學點Groovy來理解build.gradle代碼
build.gradle系列三:如何用Adnroid Studio查看build.gradle源碼
...微信


正文

咱們來舉個例子,就像系列一的博客裏介紹的 build.gradle 裏有這樣一段代碼:
build.gradle
咦!這代碼是第一次在 build.gradle 裏看見過,是什麼意思呢?不怕,我有絕招:
Ctrl + 左鍵
Android Studio大法---看源碼,還有什麼是不能經過看源碼註釋解決的麼
BaseExtension.class
是跳到源碼了,但是爲何沒有方法的註釋說明呢,這方法是什麼鬼誰知道啊。再仔細看看 as 的提示,原來打開的是個 class 文件啊。
as提示
as 的提示那裏應該會有個下載和選擇源碼位置的按鈕的啊,搞不懂爲何不出現。maven

另外,咱們知道,as 通常會默認先打開 xxx-sources.jar 也就是 xxx 的 java 文件源碼,若是沒有源碼文件,纔會打開 xxx.jar 的 class 代碼。咱們看一下,打開的是什麼文件。
gradle-2.3.0.jar
沒錯,as 打開的是 gradle-2.3.0.jar,說明 as 沒有找到 gradle-2.3.0-sources.jar 源碼文件,咱們看一下究竟是不是這樣
as標題欄
as 標題欄會顯示你當前打開的文件的具體位置,好了,知道了 gradle-2.3.0.jar 在電腦裏的位置了,咱們到那個目錄下看看
gradle-2.3.0.jar本地路徑
只有一個 gradle-2.3.0.jar 文件和一個 pom 文件,正常的話應該還要有個 xxx-sources.jar 文件纔對,就像下面這樣
三個文件
由於這裏沒有 gradle-2.3.0-sources.jar 文件,因此 as 沒辦法打開帶有方法註釋的源碼文件了。既然知道問題,那麼就好解決了,as 的提示條也沒有下載的按鈕,那咱們就本身去下載好了
seach.maven.org
打開 maven 網站,在這裏能夠下載 gradle 插件。在搜索框中輸入 com.android.tools.build,爲何輸入這個,你打開 project 下的 build.gradle 文件看看就知道了
com.android.tools.build
search result
這些就是 gradle 插件,咱們在根目錄下的 build.gradle 配置的 gradle 版本其實就是來這裏下載的,應該是吧。
下載的文件
下載後獲得的就是這些文件了,接下去就是找到相應文件的位置,複製一份過去
gradle的本地路徑
打開相應的插件文件夾,選擇相應的版本,最後將下載的 xxx-sources.jar 複製一份進去,最後的樣子以下
三個文件
好了,大功告成,咱們再打開 as,記得 ReBuild 一下,而後再試試查看 build.gradle 源碼會是什麼樣子
BaseExtension.java
LintOptions.java
翻譯一下英文大概就是說, lintOptions.abortOnError = false 是設置即便 lint 檢查時發現錯誤也不中止構建程序的運行。學習

這種方法比去官方的 api 文檔裏查閱方便多了吧。再來看看幾個效果。
BaseExtension.java
這裏就能夠看到源碼裏介紹 Plugin 的值都有哪些,分別對應哪一個類,該去哪一個類看它的做用是什麼,幹什麼的。
AndroidConfig.java
藉助 as,咱們甚至能夠很容易的查到 android{...} 這個括號裏能使用的方法都有哪些,若是要看各自的做用是幹什麼的,再繼續點進去查看註釋就好了。是否是發現,咱們在 build.gradle 裏的 android{...} 使用過的標籤名原來都在這裏的啊。gradle

之後就算是再碰到大神的 build.gradle 文件裏各類沒看見過的標籤名,不用再擔憂看不懂了。不懂就看源碼註釋嘛,so easy!網站

固然,大神的 build.gradle 文件裏仍是會出現一些 groovy 代碼或者是 task 之類的,這些就不是 gradle 源碼裏可以查到的了,須要稍微瞭解一下 groovy 和 gradle 語言的基礎,有興趣的能夠繼續閱讀下我寫的這個系列裏的相關博客,固然能力不夠,若是你但願更好的學習,網上資料也不少。ui


QQ圖片20180316094923.jpg 最近剛開通了公衆號,想激勵本身堅持寫做下去,初期主要分享原創的Android或Android-Tv方面的小知識,感興趣的能夠點一波關注,謝謝支持~~

相關文章
相關標籤/搜索