/EVersion

简单到一行搞定所有依赖的版本控制集

在这里插入图片描述

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,上线之后关闭或切换自研日志采集器。

五、维护升级

所有的依赖库在注释部分,都存在官方地址,所以当产生更新时,可以直接去官网查看最新版本。 非自研模块,可以分散到多个管理员处,当个模块产生升级时:

  1. 需要先独立验证可靠性
  2. 描述升级前后的特性对比,如有变动务必带案例。如API接口变化,附带解决方案样例。
  3. 需要查看最新的版权协议,如有变化也需要通知。
  4. 如有较大变化如大版本的更新引入了新特性,需要提出部门评审审核。涉及组件各自评审升级时间以及影响,明确升级计划及时间。

自研模块,由自研项目拥有者更新,同时做部门通知。

此文档可以放到创建项目时末班中,直接附带,方便大家使用。

六、交付项目与新项目

已经交付的项目,不要求在维护期持续集成更新,新项目需使用最新版依赖库。

七、一键引入所有基础依赖

到需要引入基础依赖的项目 中 替换掉所有 dependencies{}即可(指dependencies 的内容和自身)

addBaseDeps(project)

住:需要在项目级的 build.gradle 中 apply from: 'versions.gradle'