Android EVersions-簡單到一行搞定所有依賴的版本控制集

EVersion是一個面向Android開發的版本控制集檔案,你可以将它放到你的常見項目模版中,友善使用。
同時可以作為一個控制集規範,用于多項目依賴的統一。
依賴是我們日常開發中總也避不開的一個話題,他會時不常的跳出來給我們制造一些小麻煩。
比如說在元件化初期,如果我們沒有規定依賴必須按照給定的集合進行選擇,那麼就有可能出現有的元件使用RxJava2有的元件使用RxJava3,又或者使用了不同版本的OKHttp版本,等等。這些問題出現時一般就是元件合并打包的時候,一旦遇到這類問題如果相關元件的工程師不在,或者沒有一個兩個架構都懂的人存在,那麼解決這類問題還是蠻棘手的。
再舉個例子即使我們的項目沒有引入元件化,就是簡單的一個單Module項目。如果部門内沒有做依賴版本集合控制就可能出現依賴“五花八門、百花齊放”的現象,這當然不是好事情,因為百花齊放的後果就是一旦人員離職,那麼交接的人就要看下他使用的依賴自己是否能駕馭,如果駕馭不了就變向的增加了維護成本和别人的學習成本。
是以對于一個成熟的隊伍來說,一個有效的依賴版本集合控制檔案是十分必要的。
最後還要叮囑各位一句,使用第三方依賴務必看一下開源協定,務必看一下開源協定,務必看一下開源協定!
如果發現僅供學習不可用于商業的開源項目盡量不要用,因為版權問題不出則以,一出就是大問題,是以針對這一點,我在選擇架構的時候特意備注了架構的開源協定。
一、目前将我們的依賴庫分成了如下部分:
- 1.控制元件的min_sdk、target_sdk版本号,這樣所有元件的SDK版本就可以實作統一控制了。
- 2.統一項目級的Gradle插件版本号,減少修改,可以直接打開同部門項目檢視代碼解決問題。
- 3.原生AndroidX部分已經為大家更新到官方公布的最新的穩定版上
- 4.将AndroidX的音視訊子產品單獨列出,友善學習查閱
- 5.第三方應用部分,是我們根據實際使用情況以及安卓常用三方前200排名分析總結出來的,此部分僅作為參考。
- 6.最後一部分建議增加自研架構的寫入,友善新加入的同僚查閱。
二、以上所有的依賴附帶了簡介、官方位址、版權資訊
- Android原生部分如下:
//異步擴充布局以避免界面出現卡頓。
versions.XAsynclayoutinflater = "1.0.0"
- 第三方部分的格式如下:
/**
* 功能:圖檔選擇
* 版權:MIT License
* 位址:https://github.com/lovetuzitong/MultiImageSelector
* */
有功能簡介,使用協定,和位址。友善大家的可以快速的有一個了解,安心的使用,以及想學習的時候快速找到源碼。
三、關于RxJava以及依賴于RxJava的衍生庫
如:retrofit2 rxlifecycle4
已經統一更新到最新,最新版本統一依賴于RxJAVA3.
四、關于日志部分,建議在項目中做切換,開發項目建議使用Logger,上線之後關閉或切換自研日志采集器。
五、維護更新
所有的依賴庫在注釋部分,都存在官方位址,是以當産生更新時,可以直接去官網檢視最新版本。
非自研子產品,可以分散到多個管理者處,當個子產品産生更新時:
- 需要先獨立驗證可靠性
- 描述更新前後的特性對比,如有變動務必帶案例。如API接口變化,附帶解決方案樣例。
- 需要檢視最新的版權協定,如有變化也需要通知。
- 如有較大變化如大版本的更新引入了新特性,需要提出部門評審稽核。涉及元件各自評審更新時間以及影響,明确更新計劃及時間。
自研子產品,由自研項目擁有者更新,同時做部門通知。
此文檔可以放到建立項目時末班中,直接附帶,友善大家使用。
六、傳遞項目與新項目
已經傳遞的項目,不要求在維護期持續內建更新,新項目需使用最新版依賴庫。
七、一鍵引入所有基礎依賴
到需要引入基礎依賴的項目 中 替換掉所有 dependencies{}即可(指dependencies 的内容和自身)
住:需要在項目級的 build.gradle 中
apply from: 'versions.gradle'