什么是热修复?它的优缺点是什么?

news/2024/5/19 5:14:49/文章来源:https://blog.csdn.net/maniuT/article/details/131648042

我们开发时常常要考虑的一些问题。

开发上线的版本能保证不存在Bug么? 修复后的版本能保证用户都及时更新么? 如何最大化减少线上Bug对业务的影响?

热修复技术帮助我们解决了很多问题,带来的优势不言而喻。不知道各位对于热修复技术掌握如何?

热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷。

本文将从以下方面为大家详解热修复技术:

  • 什么是热修复?

  • 热修复的优势和不足?

  • 热修复框架分类

  • 技术原理及特点

  • 实际案例解析

  • 热修复技术选择

1、什么是热修复?

热修复就是通过下发补丁包,让已安装的客户端动态更新,用户不用重新安装APP,就能够修复软件缺陷。

image

2、热修复的优势和不足?

优势:

无需重新发布版本;用户无感知修复,代价小;修复成功率高,把损失降到最低。

不足:

  • 补丁只能针对单一客户端版本,随着版本差异变大补丁体积也会增大;
  • 补丁不能支持所有的修改,例如AndroidManifest;
  • 补丁无论对代码还是资源的更新成功率都无法达到100%。

3、常用热修复框架

Dexposed: 阿里= >开源=>实时修复
Andfix:阿里=>开源= >实时修复
阿里百川HotFix:阿里= >未开源=>实时修复
Qzone超级补丁: QQ空间=>未杆源=>冷启动修复
QFix: 手Q团队=>开源=>冷启动修复
Robust: 美团= >开源= >实时修复
Nuwa:大众点评=>参考Qzone实现开源= >冷启动修复
RocooFix:百度金融= >开源=>冷启动修复
Aceso: 美丽说蘑菇街=>开源=>实时修复
Amigo:饿了么=>开源= >冷启动修复
Tinker: 微信= >开源= >冷启动修复
Sophix: 阿里=>未开源(商业收费) =>实时修复+冷启动修复

还有一些框架是内部使用没公开的

简单分类如下:

native hook:Dexposed,Andfix,阿里百川,HotFix;
Java:Qzone超级补丁;QFix,Robust,Nuwa,RocooFix,Aceso,Amigo,Tinker;
混合:Sophix

合理的分类如下:

4、技术原理及特点

native解决方案;multidex 方案;Instant Run 热插拔原理等;

5、技术原理及特点

QQ空间;
微信热补丁方案:
美团Robust等;

6、修复技术如何选择?

1、阿里Dexposed
2、阿里AndFix
3、QQ空间
4、美团Robust
5、微信Tinker
6、阿里Sophix

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。可以助力app百倍的热修复技术,已经非常成熟。各大厂商都拥有自己的热修复技术,像微信,QQ,支付宝,手淘,饿了么/美团等等。

面试官经常会拿热修复来考察开发者的技术功底。因为热修复涉及到的知识面非常的广,需要掌握反射、类加载、gradle、字节码插桩、davilk/art虚拟机等等。

为了帮助到大家可以在面试中,合理的避开面试官挖的坑,我这整理了《2023年版的Android 面试题集》,感谢兴趣的可以进行参考备战面试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_328876.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AcWing算法基础课】第四章 数学知识(未完待续)

文章目录 前言课前温习番外:秦九韶算法核心模板 一、质数1. 试除法判定质数核心模板1.1题目描述1.2思路分析1.3代码实现 2、试除法分解质因数核心模板1.4题目描述1.5思路分析1.6代码实现 二、筛素数1.朴素筛法求素数核心模板2.线性筛法求素数(O(n)&#…

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果,但是如果换成onclick绑定事件则会提示没有该方法。主要原因是: 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西,因为methods里的代码是编译…

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 Proteus仿真小实验: STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 功能: 硬件组成:STM32F103R6单片机 LCD1602显示器8路光耦隔离开关量采集4路微小信号…

你的流量虚了吗?分析手机流量卡不足量的套路

当今时代,手机流量的使用是每个人每天都在消耗的事情,在有WIFI的情况下还好,大家不需要担心流量用多了还是少了,但是在使用手机流量的时候,就需要注意了,看看是不是会用超什么的,但是现在有一个…

网络编程5——TCP协议的五大效率机制:滑动窗口+流量控制+拥塞控制+延时应答+捎带应答

文章目录 前言一、TCP协议段与机制TCP协议的特点TCP报头结构TCP协议的机制与特性 二、TCP协议的 滑动窗口机制 三、TCP协议的 流量控制机制 四、TCP协议的 拥塞控制机制 五、TCP协议的 延时应答机制 六、TCP协议的 捎带应答机制 总结 前言 本人是一个普通程序猿!分享一点自己的…

QT事件处理

设计一个闹钟&#xff0c;定时播报内容。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTimerEvent> #include <QDateTime> #include <QMessageBox> #include <QTextToSpeech> #include <QDebug> namespa…

41. 同时在线人数问题

文章目录 题目需求思路一实现一学习链接题目来源 题目需求 现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下。 表中每行数据表达的信息为&#xff1a;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间。 现要求统计各直播间最大同时在…

21-注册中心与配置中心Nacos

已经使用过了Spring cloud提供的Geteway、openFeign。 1、注册中心与配置中心 1.1、注册中心 相当于通讯录,让应用之间相互认识。 用途: 实例的健康检查。 路由转发:为了控制成本,会对机器做动态扩容,此时IP就不固定了。 远程调用。 1.2、配置中心 动态修改线上的配…

Java 匿名对象

一、简介 1.1.含义 没有名字的对象 。以常规的创建对象的方法&#xff1a; AtomicInteger atomicInteger new AtomicInteger(100000);格式&#xff1a; 类名 变量名 new 类名(); 这样就完成了对象的创建。注意&#xff1a;&#xff08;&#xff09;内可以无参数&#xff0c…

Zabbix 的使用 续

Zabbix 的使用 续 一、部署 zabbix 代理服务器1.1 环境准备1.2 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy1.3 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.4 导入数据库信息1.5 修改 zabbix-proxy 配置文件1.6 启动 zabbix-proxy1.7 在所有主…

ARM day10 (IIC协议接收温湿传感器数据)

iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{…

vue 多环境打包指令配置及编译

1.创建多环境: 在根目录创建.env.xxx文件,如下为例(我创建了两个) 文件内容主要包括&#xff1a; # 页面标题 VUE_APP_TITLE "标题"# 生产环境配置 ENV production# DNA检测仓储管理系统/生产环境 VUE_APP_BASE_API https://xxxxxx 2.设置: 修改根目录下的package…

行业追踪,2023-07-10,汽车零部件如期调整,需要耐心等待第二波

自动复盘 2023-07-10 成交额超过 100 亿 排名靠前&#xff0c;macd柱由绿转红 成交量要大于均线 有必要给每个行业加一个上级的归类&#xff0c;这样更能体现主流方向 rps 有时候比较滞后&#xff0c;但不少是欲杨先抑&#xff0c; 应该持续跟踪&#xff0c;等 macd 反转时参与…

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型&#xff0c;含短期预测未来功能 一、效果展示 二、数据设置 数据采用一列数据滑动窗口设置为5 &#xff0c;可自行设置70%训练30%测试预测未来值为10 &#xff0c;可自行设置&#xff0c;控制10以内 三、模型…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪&#xff0c;日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会&#xff0c;期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道&#xff0c;引发三地警务机关的高度关注…

开发实例:实现一个时间轮算法

时间轮算法是一种比较常见的时间计数器算法&#xff0c;它主要用于定时器的处理。在Java开发中&#xff0c;我们可以使用这种算法来实现非常高效且精准的定时器功能。下面&#xff0c;我将为大家介绍一个基于时间轮算法的定时器实现方法。 1、定义时间轮的数据结构 首先&…

【JAVA】JAVA与C++的区别与联系

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言两方介绍CJAVA 不同|Java不支持指针、模板、指针重载、联合等||支持析构函数||条件编译和包含||螺纹支架||默认参数||转到语句||多重继承||异常处理||方法重载和操作符重载|…

Stable Diffusion - 图像控制插件 ControlNet (OpenPose) 配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131591887 论文&#xff1a;Adding Conditional Control to Text-to-Image Diffusion Models ControlNet 是神经网络结构&#xff0c;用于控制预…

【Linux从入门到放弃】进程状态的理解以及什么是僵尸进程和孤儿进程?

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 文…

JavaScrpt_11 Web API 事件流、委托事件、其它事件、元素尺寸与位置

JavaScrpt_11 Web API 事件流、委托事件、其它事件、元素尺寸与位置 前言一、事件流1. 捕获和冒泡2. 阻止冒泡 二、委托事件三、其它事件1. 页面加载事件 2. 元素滚动事件 3. 页面尺寸事件 四、元素尺寸与位置 前言 进一步学习 事件进阶&#xff0c;实现更多交互的网页特效&…