模块化,组件化,插件化

在编程之初,相信每个人都有按照功能分包的意识,这就是最简单的模块化,而随着项目越来越大,代码逻辑越来越复杂,维护起来十分麻烦。因而组件化,插件化等技术慢慢的发展了起来,本文主要总结下自己对于模块化、组件化、插件化等概念的认识。

模块化

根据功能或者业务进行划分模块,例如网络请求模块,图片加载模块,登录模块,模块化相互之间存在依赖关系

组件化

根据业务逻辑划分,多个module,debug时可编译为多个apk,release时可编译为多个Library,可在gradle中配置debug和release的相关参数.组件间需要采用隐式通信

解决问题:

  1. 用于项目过大,每次编译时间长
  2. 用于团队多个人分工开发不同的模块
  3. 解耦,便于维护

在进行组件化开发时,首先需要进行基础模块和业务模块的划分,基础功能包括基础网络请求,图片加载,播放器等等,这些功能模块是所有业务模块的通用基础库。而我们进行的组件化开发,则是针对业务模块进行的。将业务拆分成一个个独立的模块,在开发时以独立app进行,整合时则作为lib进行。业务模块之间的页面跳转可以通过Route等开源框架实现,或者自己实现也可以。业务模块之间的数据通信,主要是通过Intent传值,ContentProvider,广播等形式进行。

插件化

将各个功能拆分成独立的插件,可下载插件扩展功能,主要技术难点是动态加载

解决问题

  1. 解决方法数超过65536问题
  2. 按照需要下载模块,减小项目apk的大小

热更新

主要原理和插件化差不多,都是动态加载,区别热更新是要做到bug类的替换和修复
常用操作为:资源替换,类替换,So库替换

Tinker,AndFix…

解决问题:

  1. 线上修复bug,一般不用于新功能的上线
文章目录
  1. 1. 模块化
  2. 2. 组件化
  3. 3. 插件化
  4. 4. 热更新
|