本文依赖的知识点:
Android Gradle语法
什么是组件化?
项目开发到一定阶段时,随着需求的增加以及频繁地变更,项目越来越大,越来越臃肿,各个module之间依赖严重,每次打包编译都要耗时很久。而且因为依赖严重,所以同项目开发人员之间无法并行开发,影响开发效率。
为了解决这个问题,对项目各个模块进行解藕,拆分。这个过程叫做组件化。
为什么需要组件化?
简言之:代码解耦,并行开发
通过不同维度和应用环境下进行不同程度的拆分,达到组件灵活配置,增加开发效率的目的。 所以细化来说,组件化就是根据功能和业务来拆分module,最后module组成模块,而后模块组装成应用。
组件化的基本架构
图片来自网络
开始组件化
1. 基础库的封装
将基础库封装到common_base模块中。
2. 组件模式和集成模式的切换(libs和app之间切换的能力)
因为要实现各个module之间解藕,能实现并行开发,所以必要的功能模块应该可以单独打包测试,而互不影响。
2.1 项目根目录下添加一个自定义的gradle文件
在文件里面需要添加额外的属性:
- 模块切换app的开关
- 依赖库以及版本号定义
config.gradle
这样就可以把控整个项目的配置。
2.2 项目根目录下的build.gradle中依赖config.gradle
依赖config.gradle
2.3 在对应组件module的build.gradle中设置切换逻辑
app和lib切换
如果切换到组件模式下,组件要作为独立app,那么就需要以下配置:
- gradle添加对应的appID
- 入口Activity,并在manifest里面申明application和入口activity
-
sourceSet配置组件模式和集成模式依赖的对应资源并在对应路径添加资源
组件配置
2.4 主APP的build.gradle中设置切换逻辑
主app切换逻辑
3. 组件间通信实现
组件间通信的实现是采用了阿里的Arouter路由通信。
至于Arouter的使用请参考:
https://github.com/alibaba/ARouter/blob/master/README_CN.md
到目前项目的组件化基本完成,后续更新项目完善后的更多细节以及遇到的问题......