CC组件化架构

【github传送门】 https://github.com/luckybilly/CC

【相关资料】
(1) https://blog.csdn.net/zhaicaixiansheng/article/details/81009721
(2) https://blog.csdn.net/xiangzhihong8/article/details/79003697

【背景】

图片.png

【示意图】

架构.png
项目结构.png

【问题1】 到此就实现了“组件化架构”了么?当然没那么简单,目前只是非常简单的集成。“组件化”不仅仅是把各个功能模块分开,还有模块之间如何通信,以及“组件化”的一大亮点------各个组件可以单独开发。

【答案】 前面我们把各个组件集成到到main组件,现在我们把组件拆出来,单独开发,开发完后,可以再把组件集成到main中,发布。这是组件化开发的最大亮点(优点)。

【如何集成】https://blog.csdn.net/zhaicaixiansheng/article/details/81009721

【问题2】共用资源的引用???
【答案】 解决的办法就是,也把共用库组件化,然后其他组件引用它,所以我们的架构可以演化为这样:

图片.png

【示意图】


图片.png

【问题3】多组件集成时,其资源文件会被归档到一起,所以如果命名重复,那么就会发生冲突,导致界面混乱。

【答案】
为了解决这个问题,我们可以让各个组件中的资源都有一个属于自己的前缀,例如home组件中的资源,我们可以以home_开通,video组件中的资源,我们可以以video_开头,这样就防止了资源冲突。在这里gradle可以帮我们做一点事情,就是让我们在命名资源文件时,帮我们先加上前缀。例如在home组件的build.gradle文件中,加入

resourcePrefix"home_"

这样之后我们的xml文件如果没有以home_为前缀的话,就会报错。但是这个功能其实很弱,例如xml文件报错,但是我们运行的时候,依然可以运行,图片文件不已home_为前缀,也不会报错,所以,资源冲突的问题,还需要开发者自己多多注意。

【相关链接】https://www.jianshu.com/p/8d492e2ee846

【问题4】组件之间的通信
【答案】

图片.png

【问题5】统一版本号???

【答案】我们可以把这些版本号统一管理起来,免得每次修改都得同时修改多份build.gradle文件,也避免不同的组件使用的版本不一样,导致冲突。

在项目build.gradle文件中(项目根目录下的build.gradle文件),定义版本号常量

图片.png
图片.png

【总结】

图片.png

基类库的封装

图片.png

【注意1】组件化和插件化的区别???
【答案】

图片.png
图片.png

【由来】CC组件的由来!!!
【github 传送门】https://github.com/luckybilly/CC
【开发文档】https://luckybilly.github.io/CC-website/#/
【简单集成】https://www.jianshu.com/p/f77b7e942495

你可能感兴趣的:(CC组件化架构)