本篇文章已受權微信公衆號 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 裏看見過,是什麼意思呢?不怕,我有絕招:
Android Studio大法---看源碼,還有什麼是不能經過看源碼註釋解決的麼
是跳到源碼了,但是爲何沒有方法的註釋說明呢,這方法是什麼鬼誰知道啊。再仔細看看 as 的提示,原來打開的是個 class 文件啊。
as 的提示那裏應該會有個下載和選擇源碼位置的按鈕的啊,搞不懂爲何不出現。maven
另外,咱們知道,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{...}
使用過的標籤名原來都在這裏的啊。gradle
之後就算是再碰到大神的 build.gradle 文件裏各類沒看見過的標籤名,不用再擔憂看不懂了。不懂就看源碼註釋嘛,so easy!網站
固然,大神的 build.gradle 文件裏仍是會出現一些 groovy 代碼或者是 task 之類的,這些就不是 gradle 源碼裏可以查到的了,須要稍微瞭解一下 groovy 和 gradle 語言的基礎,有興趣的能夠繼續閱讀下我寫的這個系列裏的相關博客,固然能力不夠,若是你但願更好的學習,網上資料也不少。ui
最近剛開通了公衆號,想激勵本身堅持寫做下去,初期主要分享原創的Android或Android-Tv方面的小知識,感興趣的能夠點一波關注,謝謝支持~~