插件化组件化热更新对比

本文介绍了模块化、组件化、插件化和热修复的概念和区别。模块化关注组件复用和解耦,组件化强调业务高内聚,插件化则用于减小APP体积并支持热更新。热修复则是一种动态加载技术,用于修复DEX错误。DroidPlugin、RePlugin和VirtualAPK是三种插件化框架,各有优缺点。

AI 驱动代码审查实战

Claude code-review 插件深度解析,把 AI 智能审查接进 CI/CD 流水线

一丶说明

(一)丶模块化

  • 定义:我的理解模块化就是,我们开发中的一种设计思想,我们在组件化的过程中,有些组件或基础库在多个模块中都有调用,我们可以把这些耦合度高的提炼出来,形成组件。供上层模块调用。
  • 使用:将我们用到的ListView,TabView,Dialog等抽离成单独的组件。
  • 目的:复用 解耦
  • 架构定位:纵向分层

(二)丶组件化

  • 定义:就是按照业务逻辑,将功能属于同一业务的代码整合到一起,模块的功能相对比较复杂。
  • 使用:我们APP中一般都包含首页,用户中心,启动,消息中心等模块,根据业务将属于他们各自的代码整合在一起,形成模块化。
  • 目的:隔离,高内聚
  • 架构定位:横向分层,根据业务逻辑进行划分

(三)丶插件化

  • 定义:它是把某个功能或者业务模块,单独抽离出来以减少宿主APP的体积,在使用该模块的时候再去加载它,这就是插件化技术
  • 使用:APP分成多个模块每个模块都是一个APk,而对组件化来说每个模块是一个lib。
  • 目的:解耦,更新
  • 架构定位:横向分层

(四)丶热修复:

动态加载技术,用于dex修复 组件化和模块化的比较 组件化更加强调的是复用,低耦合,一个组件能够在多个模块中重复调用,而模块化更加强调业务的高内聚,相近的业务功能都在同一模块中

二丶对比

(一)丶组件化和插件化的比较

  1. 组件化是一种思想,插件化是一种技术。
  2. 组件化中每个模块对应的是一个lib,而插件化中每个模块对应的是一个apk。
  3. 组件化是为了提高代码中的内聚度,而插件化是为了减少宿主APP的体积而出现的。

(二)丶插件化和热修复的比较

  1. 两者都是动态加载技术的应用。
  2. 插件化的对象是插件,也就是要加载运行APK包。 而热修复的对象是补丁,就是要加载运行patch,dex,jar等一系列包含dex修复内容的文件

(三)丶模块化,组件化,插件化的特点

  1. 模块化(lib)主要解决问题是重用问题,不强调单独编译
  2. 组件化(lib)主要解决问题是功能拆分,强调单独编译
  3. 插件化(application)是所有组件都为apk的特殊组件化

(四)丶模块化,组件化,插件化的不同点

  1. 模块化相互引入,需要引入需要的module
  2. 组件化通讯方式分为隐式和路由。
  3. 插件化本身是不同进程,因此是binder机制进程间通讯。

三丶插件化方案的对比说明

(一)丶DroidPlugin

  • 概述:
    DroidPlugin是由360手机助手团队在16年开源的插件框架,已经在360手机助手上使用,它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构。实现多团队协作开发具有一定的好处,其实VirtualAPK等开发框架一样具有这样的优势,由于360团队在后期推出了RePlugin这套新的插件框架,所以目前这套插件框架被RePlugin取代
  • 优点:
    • 宿主和插件完全隔离,插件不依赖宿主,可以独立安装运行
    • 低入侵设计,插件不需要继承任何类
    • 插件apk和普通apk一样的,所以插件开发没有门槛,开发的时候集成简单
  • 缺点:
    • 插件启动速度比较慢
    • 无法在插件中发送具有自定义资源的Notification
    • 无法在插件中注册一些具有特殊Intent Filter的Service、Activity、BroadcastReceiver、ContentProvider等组件以供Android系统、已经安装的其他APP调用
    • 缺乏对Native层的Hook,对某些带native代码的apk支持不好,可能无法运行

(二)丶Replugin

  • 概述:
    RePlugin是360安全卫士团队,在17年开源的插件框架,据17年360安全卫士团队介绍,他们的安卓客户端83%的功能都实现了插件化,并且成功的为2亿用户提供了服务,17年全年他们发布达将近600次,平均一天2次的发版,也是完全得力于这套插件框架,目标这套框架还在持续的更新中
  • 优点: 
    • 支持几乎所有的Android特性,四大组件均不需要在宿主manifest中预注册,支持几乎所有单品app可以利用到的特性如AppCompat,databing等等;
    • 及其稳定:hook点仅有一处(classLoader),崩溃率低于万分之一,很好的兼容了市面上的android rom
    • 拥有成熟的插件管理方案,支持插件的升级,安装,版本迭代,进程间通信,协议版本等等
    • 入侵极低,插件开发等同于原生开发
    • 集成相对来说比较简单
  • 缺点:
    • 对资源、application和context,插件和宿主的共享存在各种问题

(三)丶VirtualApk

  • 概述:

irtualAPK是滴滴出行自研的一款优秀的插件化框架,是该团队在17年6月3号开源的,该框架通过将业务模块插件化,可随时更新插件来发布新功能,具备版本随时发布的能力。VirtualAPK对插件没有额外的约束,原生的apk即可作为插件。插件工程编译生成apk后,即可通过宿主App加载,每个插件apk被加载后,都会在宿主中创建一个单独的LoadedPlugin对象。通过这些LoadedPlugin对象,VirtualAPK就可以管理插件并赋予插件新的意义,使其可以像手机中安装过的App一样运行

  • 优点:
    • 支持几乎所有的Android特性,四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期
    • Native层的Hook,插件中的so库能够正常使用
    • 兼容市面上几乎所有的Android手机,这一点已经在滴滴出行客户端中得到验证
    • 入侵极低,插件开发等同于原生开发
    • 插件的构建过程简单,通过Gradle插件来完成插件的构建,整个过程对开发者透明
  • 缺点:
    • 需要在插件中声明使用插件的宿主,所以在一定程度上影响了插件的独立性
    • 对资源、application和context,插件和宿主的共享存在各种问题

AI 驱动代码审查实战

Claude code-review 插件深度解析,把 AI 智能审查接进 CI/CD 流水线

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值