Android葵花宝典Android开发架构设计

APP插件化/组件化框架分析

2017-11-01  本文已影响1183人  闲庭

VirtualAPK插件框架简单使用
阿里Atlas组件框架使用

最近一段时间在研究插件化和组件化实现方案,今天也算整理一下笔记记录一下,记得之前讲述过一篇关于组件化的文章【Android 组件化之初探】,刚好对应着阿里的Atlas组件化框架,今天主要做个大致的介绍,稍后再逐个讲述下各框架的接入方法以及具体使用方法。

一、模块化、插件化和组件化

1. 模块化、插件化和组件化的关系

在技术开发领域,模块化是指分拆代码,即当我们的代码特别臃肿的时候,用模块化将代码分而治之、解耦分层。具体到 android 领域,模块化的具体实施方法分为插件化和组件化。

2. 插件化和组件化的区别

一套完整的插件化或组件化都必须能够实现单独调试、集成编译、数据传输、UI 跳转、生命周期和代码边界这六大功能。

插件化和组件化最重要而且是唯一的区别的就是:

插件化

插件化开发是将一个项目app拆分成多个模块,这些模块包括宿主和插件。每个模块相当于一个apk,而组件化相当于一个lib。最终发布的时候将宿主apk和插件apk单独打包或者联合打包。

作用

组件化

组件化开发是将一个项目app拆分成多个模块,每个模块都是一个组件,组件化开发过程中相互依赖或单独调试,最终发布的时候是将这些组件合并统一成一个apk。

3. 插件化 和 组件化如何选择

在插件化和组件化取舍的一个重要原则是:APP 是否有动态增加或修改线上模块的需求,如果这种动态性的需求很弱,就不需要考虑插件化,一般说来,电商类或广告类产品对这个需求比较强烈,而类似“得到 APP”这类的知识服务产品,每个功能的推出都是经过精细打磨的,对这种即时的动态性要求不高,所以不需要采用插件化。

如果你的产品对动态性的要求比较高,那么在选择插件化之前也需要从两个方面权衡一下。一是插件化不可避免的去 hook 一些系统的 api,也就不可避免地有兼容性的问题,因此每个插件化方案需要有专门的团队去负责维护;二是从一个业务逻辑复杂的项目中去拆分插件化需要的时间可能是非常巨大的,需要考虑对开发节奏的影响。

因此,对大多数产品来说,组件化都是一个不错甚至最佳的选择,它没有兼容性,可以更方便地拆分,并且几乎没有技术障碍,可以更顺利地去执行。特别是对急需拆分的产品来说,组件化是一个可退可守的方案,可以更快地执行下去,并且将来要是迁移到插件化,组件化拆分也是必经的一步。

二、插件化和组件化方案

altas.png

四种方案比较与选择

插件化.png

在 加载耦合插件 方面,VirtualAPK 是开源方案的首选,推荐大家使用。
通俗易懂地说——

抽象地说——

上一篇下一篇

猜你喜欢

热点阅读