Github 上有哪些值得學習的 gradle 開源插件?

關於自定義 Gradle 插件,網上有很多教程,但是大都很 demo,很多並沒有結合實際應用,大家在平時的開發工作中有沒有發現過一些不錯的值得學習的實用插件?


ka 老師提到了 Small,確實,Small 代碼寫的很規範, 質量非常高,是個很好的範例,但是用到的 API 確實有點太多了,對於初學者未免有點吃力了。實際上,Gradle 構建本身是不複雜的,甚至可以說很簡單,攜程的 DynamicApk 就有現成的自己構建 APK (非 Android 默認的構建流程)的 Gradle 代碼。我覺著 Gradle 真正讓人覺著困難的是代碼量龐大,要掌握的 API 太多了,有七十多個子項目,再加上 Android Plugin,真要通讀的話,會讓人慾仙欲死。

不過所幸,日常開發,並不需要通讀源碼。只要掌握了 Gradle 生命周期,就很容易理解了。平時看源碼就當看小說一樣,隨便翻翻,真正寫代碼的時候,知道怎麼去查就可以了。

這個圖是我一年多以前畫的,直到現在,我都覺著非常有用。當然,對於 Android 構建來講,還有更合適的教程。這裡我極力推薦我司挖坑小能手區長的文章 Gradle系列之從init.gradle說起 - 區長的專欄 - CSDN博客 配合 passy/build-time-tracker-plugin 這個插件,代碼量也不大,關鍵是很好懂,而且跟 Android 構建結合的很緊密。區長還寫了不少其他關於 Gradle 的文章,雖然並不系統,但是全都非常實用,非常推薦。

對於 Android 構建來講,還有兩個非常重要的概念,上面的插件沒有提到,那就是 Variant 和 Transform,不過上面的都搞明白了,再看 Small 插件,就好懂了,這裡面就有這兩個概念的運用。


Small Gradle

APK構建流程相關,使用到的API比較多,代碼風格好。


兩個方面回答:

1. 「網上有很多教程,但是大都很 demo,很多並沒有結合實際應用」,要實用一點的入門一點的,我就大言不慚地推薦一哈自己寫的「2BAB/Seal」,主要解決 Android Manifest Merge 中常見的 Application 屬性及 replace 相關報警、衝突等問題,用到的 API 不多,但是和構建流程結合緊密,有很多小的知識點可以挖掘(Github 里還有另外兩個 repo 也有 Gradle 插件的使用,比如有扒 Small 項目的 Resource 插件化的 Gradle 實現及講解);

2. 如果只是看這些基礎插件,很難做到進階二字,自己感覺在這些基礎 API (Gradle for Android 教程,Gradle 官方教程)兜兜轉轉也有段時間了,在想辦法深入的過程中覺得做到兩點會有利於提高自己:第一就是如 @Ailurus 所說,掌握生命周期,比如看區長的那篇文章;第二就是勤翻源碼,平時有任何實踐的機會(比如做個插件解決點小問題)都把用到的相關知識點翻一翻,事實上因為這方面的成熟資料不多,所以幾乎你每次想做點什麼都需要自己動手去看看,例如最近在做一個依賴的動態版本注入時,就需要看看依賴管理這塊是怎麼做的,仲裁的時機和Evaluate的關係等等。


毛遂自薦,四月份開始準備做個 gradle plugin for Android

下面是我的學習路徑:

1. Gradle Basic - CoXier的基地

2. Gradle Task - CoXier的基地

有了一定的基礎之後,我在網上看到了zjw-swun/AppMethodOrder 但是我個人覺得整個項目不是很規範,不適合 PR,之後我重新寫了一個:

CoXier/AppMethodTracking

這個插件我認為算是比較規範的:

  1. 使用 「groovy 項目結構」 來開發插件
  2. 發布到 http://gradle.plugin.com
  3. 優化項目,生成「方法樹」,最後以HTML界面展示,可點擊摺疊方法


基於android gradle插件的 transfrom-api 寫的一個小插件 yrom/shrinker 。

至於如何系統學習 gradle 插件開發,gradle官方文檔你值得擁有 Gradle User Guide Version 3.3。

至於如何開發 android 的 gradle 插件,看代碼呀 ⊙.⊙ https://android.googlesource.com/platform/tools/base/+/gradle_2.3.0/build-system/


android gradle plugin,用來學習,最合適不過了,不過最開始下手的時候會發現力不從心


看到一個 fir 的上傳插件 sangmingming/gradle-fir-plugin 代碼量不大,適合閱讀。


推薦閱讀:

如何評價Zealer安卓版客戶端?
關於豌豆莢(類似應用)和國內第三方 Android 應用商店的思考,不知道是否正確?
小白求問!安卓root之後都能幹嘛!?

TAG:Android開發 | Gradle |