標籤:複製 class -o 顯示 程式 abort result 學習 lse
上一篇部落格裡講過 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源碼