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'