CC组件化架构

作者: zhengLH | 来源:发表于2019-04-22 11:21 被阅读4次

    【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组件化架构

        本文链接:https://www.haomeiwen.com/subject/ryvegqtx.html