说起组件化,就不得不提一下模块化和插件化。它们的概念十分相似,咋一看还真分不清它们的区别是什么,很多人都会将它们搞混。严格意义来说,组件化、插件化其实也算是模块化的观念。
模块化
包含公共部分,当然也可以是业务模块。
组件化
组件化
将一个完整的工程,按业务划分为不同的插件,这也是分治法的一种体现。组件化的单位是组件(module),而插件化的单位是apk。插件化还可以实现热插拔(热更新)。组件化的灵活性在于按加载时机切换,而插件化的灵活性在于加载apk,完全可以动态下载,动态更新,比组件化更灵活。插件化本质上就是不同的apk, 你把各种不同的模块单独做成一个完全独立的app,需要整合的时候就插在一起,就形成了一个大型的app了。插件化的加载是动态的,这点很重要,也是灵活的根源。
他们的通信方式
模块化的通信方式,无非是相互引入;我抽取了common,其他模块使用自然要引入这个module。
组件化的通信方式,按理说可以划分为多种,主流的是隐式和路由。隐式的存在使解耦与灵活大大降低,因此路由是主流。
插件化的通信方式,不同插件本身就是不同的进程了。因此通信方式偏向于Binder机制类似的进程间通信。
组件化的使用
(本文重点)
组件化就是将一个app分成多个Module,每个Module都是一个组件(也可以是一个基础库供组件依赖),开发的过程中我们可以单独调试部分组件,组件间不需要互相依赖,但可以相互调用,最终发布的时候所有组件以lib的形式被主app工程依赖并打包成1个apk。集成至Android步骤如下:1、在工程根目录的build.gradle中添加cc-register插件的classpath。最新版本号1.1.2
2、在工程根目录创建一个名为”cc-settings-2.gradle”的文件,并将以下代码复制到该文件中(也可直接下载github中的cc-settings-2.gradle文件到工程根目录)
3、在主app module中添加对cc-settings-2.gradle文件的依赖将apply plugin: ‘com.android.application’替换为
如图所示:
4、新建一个module,并在该module下的build.gradle中添加对cc-settings-2.gradle文件的依赖,同时,将applicationId去除或者修改,与步骤3类似
5、在主app module中按如下方式添加对组件module的依赖
6、创建组件类,向外暴露当前组件提供的服务,新建一个类实现IComponent接口即可
7、调用组件
调用组件分为同步调用和异步调用2种方式同步调用:调用方将用同步的方式获得返回的调用结果异步调用:调用方通过回调接收组件的调用结果
组码网建立初衷
节约大幅度开发成本,带来更稳定的质量
节约大幅度开发成本
带来更稳定的质量
目前组码网已经有140名资深工程师和架构师完成了核心平台开发和基础的软件零件库的工作。随着越来越多的工程师加入,组码网的越发的成熟,相信软件开发的成熟的工业化时代即将来临。
文字/组码网
图片/组码网