Android组件化和插件化开发

Android组件化和插件化开发

什么是组件化和插件化?

组件化和插件化

组件化开发就是将一个app分红多个模块,每一个模块都是一个组件(Module),开发的过程当中咱们可让这些组件相互依赖或者单独调试部分组件等,可是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。
插件化开发和组件化开发略有不用,插件化开发时将整个app拆分红不少模块,这些模块包括一个宿主和多个插件,每一个模块都是一个apk(组件化的每一个模块是个lib),最终打包的时候将宿主apk和插件apk分开或者联合打包。android


组件化

概述

android工程的组件通常分为两种,lib组件和application组件
application组件是指该组件自己就能够运行并打包成apk
lib组件是指该组件属于app的一部分,能够供其它组件使用可是自己不能打包成apkgit

为何要有组件化?

加入一个app工程只有一个组件,随着app业务的壮大模块愈来愈多,代码量超10万是很正常的,这个时候咱们会遇到如下问题github

  • 稍微改动一个模块的一点代码都要编译整个工程,耗时耗力
  • 公共资源、业务、模块混在一块儿耦合度过高
  • 不方便测试

组件化正确的姿式

既然选择使用组件化,那么如何正确的使用它呢?这里给出一种解决方案,若是你有更好的方案,欢迎交流。
咱们建立了一个app工程project,默认里面有一个app组件,这个app组件是能够直接运行的。
怎么划分组件呢?网络

  • 1.新建一个lib组件,new Module—>Andorid Library,取名BaseUtilLib,咱们将全部的公共的工具类、网络分装等类放在其中
  • 2.新建一个lib组件,BaseReslLib,咱们将全部的公共资源、drawable、String等类放在其中
  • 3.将app按照本身的规则划分红多个模块,好比按业务按地区等均可以
  • 4.逐一开发某个模块,好比Test模块,新建一个TestApp组件,TestApp组件引用[1][2]步骤的BaseUtilLib和BaseReslLib,在TestApp组件里添加并引用TestLib组件。在TestLib的activity中写代码写业务逻辑,TestApp只负责跳转和测试
  • 5.将工程中的全部相似TestLib组件(不是TestApp组件)引入到工程的app中
    看着有点乱,整理出一张图
    组件化开发

这样的好处有并发

每一个模块能够独立开发编译运行
开发单个模块时能够共享资源和工具类
能够针对单个模块测试app

demo地址:https://github.com/halibobo/ModuleBuild框架


插件化

为何有插件化?

有了组件化,为何还要用插件化呢?插件化开发总的来讲有如下几点好处(不一样插件框架不同):工具

  • 宿主和插件分开编译
  • 并发开发
  • 动态更新插件
  • 按需下载模块
  • 方法数或变量数爆棚

处境

开放出来的插件化开发框架比较多,他们各自都有本身的优点和和不足,实现的原理也有差异下面列组件化

开源的插件化框架

目前开源的这几个框架有宿主和插件分离的也有融合在一块儿的,每一个框架的详细介绍和demo在github里均可以查看到。插件化demo运行起来比较简单,可是真正将它用到实际项目中仍是要考虑不少小细节的,目前我也正处于研究阶段。测试

转自:大黑

相关文章
相关标签/搜索