1. 程式人生 > >如何用Android Studio查看build.gradle源碼

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

容易 https ask 基礎 groovy shu result 支持 ref

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

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

是吧,如果可以直接通過 as 看源碼的註釋該多好。好了,廢話到這,下面開始正文。


系列索引

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


正文

我們來舉個例子,就像系列一的博客裏介紹的 build.gradle 裏有這樣一段代碼:
技術分享圖片
咦!這代碼是第一次在 build.gradle 裏看見過,是什麽意思呢?不怕,我有絕招:
技術分享圖片
Android Studio大法---看源碼,還有什麽是不能通過看源碼註釋解決的麽
技術分享圖片


是跳到源碼了,可是為什麽沒有方法的註釋說明呢,這方法是什麽鬼誰知道啊。再仔細看看 as 的提示,原來打開的是個 class 文件啊。
技術分享圖片
as 的提示那裏應該會有個下載和選擇源碼位置的按鈕的啊,搞不懂為什麽不出現。

另外,我們知道,as 一般會默認先打開 xxx-sources.jar 也就是 xxx 的 java 文件源碼,如果沒有源碼文件,才會打開 xxx.jar 的 class 代碼。我們看一下,打開的是什麽文件。
技術分享圖片
沒錯,as 打開的是 gradle-2.3.0.jar,說明 as 沒有找到 gradle-2.3.0-sources.jar 源碼文件,我們看一下到底是不是這樣
技術分享圖片
as 標題欄會顯示你當前打開的文件的具體位置,好了,知道了 gradle-2.3.0.jar 在電腦裏的位置了,我們到那個目錄下看看
技術分享圖片


只有一個 gradle-2.3.0.jar 文件和一個 pom 文件,正常的話應該還要有個 xxx-sources.jar 文件才對,就像下面這樣
技術分享圖片
因為這裏沒有 gradle-2.3.0-sources.jar 文件,所以 as 沒辦法打開帶有方法註釋的源碼文件了。既然知道問題,那麽就好解決了,as 的提示條也沒有下載的按鈕,那我們就自己去下載好了
技術分享圖片
打開 maven 網站,在這裏可以下載 gradle 插件。在搜索框中輸入 com.android.tools.build,為什麽輸入這個,你打開 project 下的 build.gradle 文件看看就知道了
技術分享圖片
技術分享圖片
這些就是 gradle 插件,我們在根目錄下的 build.gradle 配置的 gradle 版本其實就是來這裏下載的,應該是吧。
技術分享圖片
下載後得到的就是這些文件了,接下去就是找到相應文件的位置,復制一份過去
技術分享圖片
打開相應的插件文件夾,選擇相應的版本,最後將下載的 xxx-sources.jar 復制一份進去,最後的樣子如下
技術分享圖片
好了,大功告成,我們再打開 as,記得 ReBuild 一下,然後再試試查看 build.gradle 源碼會是什麽樣子
技術分享圖片
技術分享圖片
翻譯一下英文大概就是說, lintOptions.abortOnError = false 是設置即使 lint 檢查時發現錯誤也不停止構建程序的運行。

這種方法比去官方的 api 文檔裏查閱方便多了吧。再來看看幾個效果。
技術分享圖片
這裏就可以看到源碼裏介紹 Plugin 的值都有哪些,分別對應哪個類,該去哪個類看它的作用是什麽,幹什麽的。
技術分享圖片
借助 as,我們甚至可以很容易的查到 android{...} 這個括號裏能使用的方法都有哪些,如果要看各自的作用是幹什麽的,再繼續點進去查看註釋就行了。是不是發現,我們在 build.gradle 裏的 android{...} 使用過的標簽名原來都在這裏的啊。

以後就算是再碰到大神的 build.gradle 文件裏各種沒看見過的標簽名,不用再擔心看不懂了。不懂就看源碼註釋嘛,so easy!

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


技術分享圖片
最近剛開通了公眾號,想激勵自己堅持寫作下去,初期主要分享原創的Android或Android-Tv方面的小知識,感興趣的可以點一波關註,謝謝支持~~

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