从零开始Android组件化

本文依赖的知识点:
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

到目前项目的组件化基本完成,后续更新项目完善后的更多细节以及遇到的问题......

推荐阅读更多精彩内容