简介
首先,什么是 AUC 呢?在 QQ 群里的小伙伴们应该知道这个词,或者知道我的工具类的也应该能猜到是什么,没错,AUC 全称就是 AndroidUtilCode,这个项目的生命周期已长达 3 年之久,star 数目前是 24k+,应该算是比较成功的一个开源项目了,基于它,我打造了一套自认为还不错的组件化架构 ———— AucFrame,其优点如下所示:
- 统一管理项目中的 Gradle
- 自由选择调试模块
- 自由选择需要的包
- 自由切换源码和远程仓库
- 业务模块互不依赖,完全解偶
- 模块间通讯一学就会
- 比 EventBus 更高效的模块内通讯
预览
架构么,肯定要开门见山,直接上图,不然说的再天花乱坠也无济于事,也就是所谓的 no picture you say a j8
,AucFrame 的架构如下所示:
其项目中具体的工程结构如下所示:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21└── AndroidUtilCode
├── feature
│ ├── launcher
│ │ └── app
│ ├── main
│ │ ├── app
│ │ └── pkg
│ ├── mock
│ ├── subutil
│ │ ├── app
│ │ ├── export
│ │ └── pkg
│ └── utilcode
│ ├── app
│ ├── export
│ └── pkg
└── lib
├── base
├── common
├── subutil
└── utilcode
基于此,我们可以设计出如下通用架构:
其工程结构如下所示:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18└── ProjectName
├── feature
│ ├── launcher
│ │ └── app
│ ├── feature0
│ │ ├── app
│ │ ├── export
│ │ └── pkg
│ ├── feature1
│ │ ├── app
│ │ ├── export
│ │ └── pkg
│ └── mock
└── lib
├── base
├── common
├── rxjava
└── utilcode
对着架构图也许你也能撸出来一个,但其优雅程度肯定不及我撸的,具体如何优雅?最直接的就是 feature 下的所有模块的 build.gradle
都是空空如也,没有一行代码,甚至删了也无所谓,也就不需要你写哪个模块具体需要依赖什么,但确切的依赖关系,就是架构中所示,开发者可自由配置想要运行哪个 app
,自由配置你所需要的 pkg
,做到各业务可完全独立运行,下面就让我带领你如何优雅地撸出它来。
学习
该教程适合期望能优化自己工程架构的中高级开发人员,新手的话建议把 Gradle 摸清楚了再来学习即可,为了你更好更全面地了解及掌握 AucFrame,在这里我会一步步地搭建一个模板工程:AucFrameTemplate,并教你如何搭建出该架构及背后的原理,方便你可以运用到你的项目中,或者在下个项目中快速使用,相关课程列表如下所示:
- AucFrame 之简介及学习(就是本节)
- AucFrame 之让你的 Gradle 更智能
- AucFrame 之统一管理 Gradle
- AucFrame 之解放 Gradle
- AucFrame 之模块间通信
- AucFrame 之模块内通信