4.2 添加配制文件build.gradle(project)
6.1.1 创建 componentbase 模块(lib)
一、组件化
=====
作为一个单工程撸到底的开发人员,想试着将项目进行组件化改造,说动就动。毕竟技术都是写出来的,看看感觉懂了,但是实际开发中还是能遇到各种各样的问题,开始搞起来。
1.1 为什么使用组件化
一直使用单工程操作,项目越来越大导致出现了不少的问题:
-
查找问题慢:定位问题,需要在多个代码混合的模块中寻找和跳转。
-
开发维护成本增加:避免代码的改动影响其它业务的功能,导致开发和维护成本不断增加。
-
编译时间长:项目工程越大,编译完整代码所花费的时间越长。
-
开发效率低:多人协作开发时,开发风格不一,又很难将业务完全分割,大家互相影响,导致开发效率低下。
-
代码复用性差:写过的代码很难抽离出来再次利用。
1.2 模块化与组件化
1.2.1 模块
将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容,比如登录模块、首页模块等等。
1.2.2 组件
组件指的是单一的功能组件,如登录组件、视频组件、支付组件 等,每个组件都可以以一个单独的 module 开发,并且可以单独抽出来作为 SDK 对外发布使用。可以说往往一个模块包含了一个或多个组件。
1.3 组件化的优势
组件化基于可重用的目的,将应用拆分成多个独立组件,以减少耦合:
-
加快编译速度:每个业务功能都是一个单独的工程,可独立编译运行,拆分后代码量较少,编译自然变快。
-
解耦:通过关注点分离的形式,将App分离成多个模块,每个模块都是一个组件。
-
提高开发效率:多人开发中,每个组件模块由单人负责,降低了开发之间沟通的成本,减少因代码风格不一而产生的相互影响。
-
代码复用:类似我们引用的第三方库,可以将基础组件或功能组件剥离。在新项目微调或直接使用。
1.4 组件化需要解决的问题
-
组件分层:怎么将一个项目分成多个组件、组件间的依赖关系是怎么样的?
-
组件单独运行和集成调试:组件是如何独立运行和集成调试的?
-
组件间通信:主项目与组件、组件与组件之间如何通信就变成关键?
二、组件分层
======
组件依赖关系是上层依赖下层,修改频率是上层高于下层。先上一张图:
2.1 基础组件
基础公共模块,