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


本篇文章已授權微信公眾號 dasu_Android(大蘇)獨家發布

上一篇博客里講過 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
咦!這代碼是第一次在 build.gradle 里看見過,是什么意思呢?不怕,我有絕招:
Ctrl + 左鍵
Android Studio大法---看源碼,還有什么是不能通過看源碼注釋解決的么
BaseExtension.class
是跳到源碼了,可是為什么沒有方法的注釋說明呢,這方法是什么鬼誰知道啊。再仔細看看 as 的提示,原來打開的是個 class 文件啊。
as提示
as 的提示那里應該會有個下載和選擇源碼位置的按鈕的啊,搞不懂為什么不出現。

另外,我們知道,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{...} 使用過的標簽名原來都在這里的啊。

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

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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM