1、模块化
Android Studio提出的概念,module模块,包含两种格式application和library。概念是一个module是一个小项目,相对于包来说模块更灵活,耦合更低,随意插拨,根据不同关注点将项目共享部分或业务模块抽取出来形成独立module。
2、组件化
基于模块化,核心思想是角色的转换,在打包时是library,开始调试是application。单位是组件(module),目的是解耦与加快开发,隔离不需要关注的部分。分离独立的业务组件如微信朋友圈。
3、插件化
也是属于模块化的一种体现。将完整的项目按业务划分不同的插件,分治法,越小的模块越容易维护。单位是apk,一个完整的项目。作用与组件化不同于热更新,灵活性在于加载apk,按需下载,动态更新。
插件化实现原理简单概括三步:
通过dexclassloader加载。
代理模式添加生命周期。
hook思想跳过清单验证。
4、热修复
热修复与插件化都利用classloader实现加载新功能。不同的是热修复是为了修复bug,所以要将新的同名类替代同名的bug类,要抢先加载bug类之前加载新的类。插件化只是增加新的功能或资源文件,所以不涉及抢先加载旧类的使命。插件化比热修复简单,热修复在插件化基础上实现替换旧类bug。
5、模块化、组件化、插件化通讯方式不同
模块化相互引入,抽取了common,其他模块自然要引入这个module。
组件化主流是隐式和路由。隐式使解耦和灵活大大降低,因此路由是主流。
插件化本身是不同进程,因此是binder机制进程间通讯。
不同特点:
模块化(lib)主要解决问题是重用问题,不强调单独编译
组件化(lib)主要解决问题是功能拆分,强调单独编译
插件化(application)是所有组件都为apk的特殊组件化,特点可热更新
通讯方式不同点:
模块化相互引入,需要引入需要的module
组件化通讯方式分为隐式和路由。
插件化本身是不同进程,因此是binder机制进程间通讯。
https://blog.csdn.net/hailong0529/article/details/89392064