热更新技术简易原理及技术推荐

article/2025/8/26 17:30:42

为了照顾萌新童鞋,最开始还是对热更新的概念做一个通俗易懂的介绍。

热更新用通俗的讲就是软件不通过应用商店的软件版本更新审核,直接通过应用自行下载的软件数据更新的行为。在用户下载安装App之后,打开App时遇到的即时更新,是一种各大手游等众多App常用的更新方式。

​大家熟知的王者荣耀,经常就会采用热更新的方式让用户直接在App内下载数据包得到更新,避免了用户耗费时间和流量下载应用。

热更新的技术价值

站在 App 开发者角度的“热”是指在不发版的情况来实现更新,修复 BUG 和发布功能,让开发者得以绕开应用商店的审核机制,避免长时间的审核等待以及多次被拒造成的成本。

在热更新出现之前,通过反射注解、反射调用和反射注入等方式已经可以实现类的动态加载了。热更新的实质就是替换,需要替换运行时新的类和资源文件的加载,就可以认为是热操作了。

热更新的技术选型

其实各家互联网巨头都有自己的热更新技术,目前比较有代表性的技术可以分为两类:类加载、底层替换。

1、类加载

只需要把 Bug 修复涉及到的类文件插入到数组的最前面去,就可以达到热修复的效果。 类加载方案的时效性差 ,需要重新冷启动才能见效,但修复范国广,限制少。代表的有Qzone 超级补丁、微信 Tinker

2、底层替换

底层替换是一种nativite方案,其操作是在Native修改Filed指针的方式,实现方法的替换,达到即时生效无需重启,对应用无性能消耗的目的。

底层替换方案限制颇多 ,可以不用重启生效,加载经快,立即见效。代表的有阿里系的 AndFix 、Sophix 如果进一步对各个热更新方案进行对比,可以用这张图进行总结:

对比角度

Andfix

阿里 Hattix

Sophix

Tinke

方法替换

支持

支持

支持

--

方法增滅

不支持

不支持

冷启动支持

--

反射调用

支持静态方案

支持静态方案

冷启动支持

--

修复方式

即时生效

即时生效

自动判断

冷启动

安全机制

加密传输及签名校验

加密传输及签名校验

加密传输及签名校验

性能损耗

几乎无损耗

几乎无损耗

冷启劲有低损耗

较高

补丁大小

热更新就是一种热操作,它是一种改变app运行行为的技术,其本质就是利用hook操作进行替换,在代码上是一种侵入性的操作。由于在安全性的考虑,Google 和苹果是不支持热更新的,在中国特殊国情下才出现了这种黑科技。

是否存在更加简洁靠谱的热更新机制呢?

答案是有的。

一种轻量的热更新机制

也是因为国内互联网企业和开发者的持续内卷,小程序形态的业务承载方式兴起,至从2017年微信上线开放小程序以来,支付宝、百度、字节等头部厂商都投入到小程序的研发体系中,目前小程序已经受到市场的普遍认可,优质的操作体验也改变了用户原有第一时间下载App使用商家服务的习惯。

但是大家有想过吗,小程序也是一种热更新机制,对于微信、支付宝等平台来讲,可以通过管理后台上下架的形式对小程序承载的业务进行管理,并且这种方式对于代码是完全没有入侵的。相对于以上集中热更新方式来讲优势也比较明显,但是这种方式也是有门槛的。

不是每家公司都有像微信、支付宝等大厂商研发技术和成本让自己的 App 具备小程序的运行能力,背后需要掌握复杂的编译及渲染技术。

目前市场上有一些比较成熟的小程序容器技术是可以帮助任一App实现这种功能,例如 FinClip是通过 SDK 集成的方式让自有的 App 具备小程序运行能力。说的更浅显易懂的话,这就是一种「Native + 小程序」的混合开发模式,借助这种开发模式可以让小程序运行在自有 App 中,将臃肿的 App 功能打散,功能模块互相解耦实现模块化开发,各业务模块间互不影响,通过管理后台即能实现实时动态更新与发布。

​推测大家现在想到的一个点:H5 也能实现,为啥还要去用小程序容器。

很简单,H5 白屏卡顿等问题频发,对用户体验造成极大影响,对于追求用户体验的 App 来讲这点就很排斥。实话现在使用各家银行 App 内嵌的 H5 页面我是真的很烦,加载慢还各种卡。

小程序类似原生的使用体验、各种权限的获取、保存缓存等正好能够解决之前 H5 遗留的这些问题。

热更新还有很多值得讨论的,你的看法和观点是什么?


http://chatgpt.dhexx.cn/article/3Z4g52Ii.shtml

相关文章

热更新及其原理

热更新:是app常用的更新方式,只需下载安装更新部分的代码 工作原理:动态下开发代码,使开发者在不发布新版本的情况下修复bug和发布功能,绕开苹果审核机制,避免长时间的审核以及多次被拒绝造成的成本。 优…

HTML/CSS实现小米官网搜索框效果

效果图: 需求分析: 1、输入框焦点事件 onfocus:成为焦点, 点击输入框的时候,出现闪烁光标,此时可以输入内容。 onblur :失去焦点, 点击页面空白区域,光标消失。此时不可以输入内容。 2、获取元素 3、注册事件 2.1…

html中的搜索代码,Web自动化(3):网页自动搜索功能

unsplash.jpg 写在前面 如果我们需要在期刊中搜索我们想要找的文章,那么我们如何才能达到这个目的。我们首先看一下,手动和自动对比图: 网页搜索.png 其实内容全部一样,我们只是用自动化程序,来代替我们手动操作。 1. 创建webdriver驱动对象,驱动打开网页 # 导入包 from …

java搜索代码_Java实现搜索功能代码详解

首先,我们要清楚搜索框中根据关键字进行条件搜索发送的是get请求,并且是向当前页面发送get请求 //示例代码 请求路径为当前页面路径 "/product" 当我们要实现多条件搜索功能时,可以将搜索条件封装为一个map集合,再根据m…

干货!最全优秀搜索框设计案例(含代码链接)

面对纷繁复杂的网页内容,用户通过查询关键词表达需求,期望在响应的查询结果中快速获取准确的信息和流畅的用户体验。用户与网络世界的万千联系都是从搜索开始的。搜索框之于用户就像是用户与应用或网站之间的对话窗口。小小的搜索框传递着用户与网站、应…

php网页制作中搜索框的代码,在网页里嵌入百度搜索框功能

今天发现某个网站是直接使用百度搜索作为自己网站的搜索功能的,感觉这个挺好玩的,不需要去研究复杂的搜索算法而又直接使用了百度搜索这个强大的搜索引擎为自己撑腰。无论对自己还是对用户来说都是相当不错的选择,下面作者将要和大家分享一下…

利用CSS写精美搜索框

利用html写搜索样式框 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>8款纯CSS3搜索框</title&g…

JavaScript实现智能搜索框

应用场景&#xff1a; 1. 搜索框在页面中占据的空间过小&#xff0c;希望无论浏览到什么位置&#xff0c;可以轻易地回到并聚焦搜索框。 2. 搜索框里面的文字大小过小&#xff0c;希望能够在上方开辟一块空间放大内容 解决思路&#xff1a; 1. 对整个页面添加键盘事件keyup…

html中搜索栏怎么写,html搜索框怎么做

很多:从记忆角度讲运用(谐音记忆法,联想法) 平常来说呢,可分为(死记硬背发,音标记忆法) 另外:自己创造 总结【谐音记忆法,死记硬背发,音标记忆法】 html/css如何写出如下搜索框效果&#xff0c;请给出代码 html制作一个搜索框&#xff0c;代码是什么&#xff1f; 打开Hbuilder编…

搜索导航HTML,CSS 带搜索导航栏的示例代码

本文为大家介绍如何使用 CSS 创建一个带搜索的导航栏。 以下实例均是响应式的。 可以先看下效果图: 创建一个搜索栏 主页 关于 联系我们 /* 在顶部导航栏中添加黑色背景颜色 */ .topnav {overflow: hidden; background-color: #e9e9e9; } /* 设置导航栏的链接样式 */ .topnav …

淘宝网搜索框源代码

搜索框代码&#xff1a; <script typetext/javascript> alimama_pidmm_11487878_0_0; alimama_typeg; alimama_tks{}; alimama_tks.style_i1; alimama_tks.lg_i1; alimama_tks.w_i350; alimama_tks.h_i69; alimama_tks.btn_i1; alimama_tks.txt_s; alimama_tks.hot_i1; a…

百度搜索框代码,实现回车点击,跳转到新页面,简单

参考网站&#xff1a;https://110.nanshiw.com/ 上图为实现效果 代码如下&#xff1a; <script> function butClick() {var val document.getElementById("search_key").value;if(val.length 0){alert(搜索为空&#xff0c;请输入内容);return false;}else…

智能搜索框html代码,js实现搜索框关键字智能匹配代码

只要使用搜索引擎的朋友应该都有这样的体会&#xff0c;就是当在搜索框输入关键字的时候&#xff0c;会出现自能匹配现象&#xff0c;这绝对是非常好的用户体验&#xff0c;下面就是一段类似的代码&#xff0c;当然这里只是掩饰&#xff0c;所以只能匹配的数据都是本地固定好的…

html5搜索框在最右侧,html5搜索框特效点击搜索框弹出分类搜索框代码

特效描述:html5搜索框特效 点击搜索框弹出 分类搜索框。点击搜索框弹出分类搜索框代码 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 Search People Sara Soueidan Rachel Smith Peter Finlan Patrick Cox

网页添加百度搜索框代码大全

★ 用法&#xff1a;在下面选择合适的样式&#xff0c;复制代码到网页中相应位置粘贴即可。 ★ 样式一&#xff08;20030&#xff09; 代码&#xff1a; <iframe id"baiduframe" marginwidth"0" marginheight"0" scrolling"no" fr…

【项目】实现网页搜索框功能

一、实现搜索框的部分代码 【注&#xff1a;涉及api接口和中后台数据交互】 1. 最终呈现形式&#xff1a; 2. 代码实现&#xff1a; HTML文件中&#xff1a; <!-- 搜索框部分 --><div class"search-bar" fxFlexAlign"center" style" ma…

FLOWABLE流程引擎分析

flowable流程引擎分析 历史: flowable工作流引擎是从jboss的jbpm->alfresco的activiti->flowable 逐步演化过来的, 核心开发人员是同一个团队. 都是因为与原公司的设计理念存在分歧,导致两次出走. flowable自16年fork之后,已经成为一个活跃的社区,逐步赢得的许多工作流引…

流程引擎课堂(一)| 关于开源流程引擎Activiti 的需要注意的几点

编者按&#xff1a;流程引擎在各个行业都有应用&#xff0c;其重要性不言而喻&#xff0c;充分了解流程引擎是一项重要课题。本文详细介绍了开源流程引擎Activiti 的优点与局限性&#xff0c;为流程引擎的选型提出了参考性建议。 基础概念 首先&#xff0c;我们来了解几个概念…

自主研发的流程引擎怎么样?好用吗?

编者按&#xff1a;随着数字化管理的发展&#xff0c;企业对于业务流程系统的要求越来越精细化&#xff0c;有些企业选择自主研发的流程引擎&#xff0c;自主研发的流程引擎怎么样&#xff1f;本文介绍了一款国产自主研发的流程引擎。 为什么要自主研发 企业的流程系统很重要&…

流程引擎设计思路

前言 在现代化的企业管理模式中&#xff0c;会通过日积月累的经验形成一套流程化的作业&#xff0c;来满足企业日常的经营活动&#xff0c;这不仅能够规范工作要求&#xff0c;还能提高人员工作效率。经常也会说道&#xff0c;流程化的工作模式是一个公司成熟的标记&#xff0c…