一、概念
组件化是对单个功能进行开发,使得功能可以复用。将多个功能组合起来就是一个业务模块,因此去除了模块间的耦合,使得按业务划分的模块成了可单独运行的业务组件。(一定程度上的独立,还是依附于整个项目中,想完全独立详见插件化)
功能复用 | 每个组件都是一个单独的功能,可被不同的模块甚至不同的应用所使用。 |
提高效率 | 每个组件都是一个可单独编译运行的APP,由于拆分使得代码量少,调试起来快。 |
协同开发 | 组件之间相互独立,使得不同的开发人员能专注于各自的功能开发互不影响。 |
1.1 结构
依赖关系是上层依赖下层,修改频率是上层高于下层。对于业务组件由于存在页面跳转、方法调用、事件通信等问题需要特别处理,其它组件不存在耦合问题封装成 Library 即可。
壳工程 | 用于整合成完整的APP。(打包环境、签名、混淆、业务模块集成、主题等配置工作) |
业务组件 | 依赖于公共组件,既可以作为 Application 单独编译运行调试,又可作 为Library 集成到项目中。对于会复用到业务的功能(如搜索)可以再抽取为基础业务组件层供业务组件依赖。 |
功能组件 | 依赖于基础组件,提供业务组件所需的基本功能。 |
基础组件 | 通用的基础功能,一般是第三方库,修改频率极低,可作为SDK供所有项目集成使用。 |
二、组件单独调试
单工程方案 | 以 module 形式存在,动态配置组件的类型。 |
多工程方案 | 以 library 形式存在,通过 maven 引入。 |
二、单工程方案
2.1 创建 config.gradle 统一管理配置
项目根目录创建一个名为 config.gradle 的 .kt 文件,对项目进行全局统一配置,并对版本和依赖进行统一管理。
2.1 配置 moudle 类型
Gradle 提供三种配置来设定 module 的类型。
com.android.application | 项目构建后输出 apk 包,在调试时是一个应用能单独编译运行。 |
com.android.library | 项目构建后输出 aar 包,在打包时是一个库文件集成到项目中。 |
com.android.test |
2.2 动态切换配置
AndroidStudio 在新建一个项目后会在根目录生成一个 gradle.properties 文件,其中定义的常量可以被任何一个 build.gradle 所读取,因此可以定义一个 isMoudle 的常量,true 为调试模式 false 为集成模式。