最近听到别人在谈论热更新这个东西,想了想在日常使用的app上热更新体现得不是很明显。
但是在游戏软件上变体现得淋漓尽致了。
前阵子我下了个软件,真好玩。停了几天没玩,打开游戏发现它在自己下载,过了一会登录进去了。我玩上了最新版本的功能了,哎真好。那这就是热更新,不需要经过运营商商店,直接通过应用自行下载软件的数据。
又有一段时间我有了新的爱好,哎我想看比赛,于是好久好久没玩这个游戏了。这次再次打开进来,它不让我玩了,提示我要去app store更新app,那这就是普通更新。
为什么要热更新?
发版需要运营商商店审核,审核的时间较长。
在这个背景下,如果app出现了比较严重的问题,要再次发版就需要等待一段比较长的时间。
这会给用户造成很大的困扰,可能会导致用户的流失。同时更新率也不一定能得到保证。
在这个基础上变可使用热更新方式来规避这个问题。
用户只需要重新启动app,便获取到了最新的内容。
热更新的原理:
通过服务器下发patch包,app加载完patch包后,替换掉有问题的代码
那热更新是怎么实现的?它为什么不需要再次发版呢?
1.热修复---加载H5动态刷新
适用于native+h5混合开发的应用,只需要web服务器更新,便可实时更新终端界面。
缺点:
只对app中的h5页面有效,对原生模块无能为力
关于原生页面和H5的区别
2.基于js的动态更新---支持ios7及以上
对于浏览器来说,内核的模块是由渲染引擎和js引擎组成的。
apple将js引擎用oc封装了起来,使得它可以脱离渲染独立去执行js,可以在native和js数据类型之间相互的切换。
简言之就是当native的代码有问题的时候,这时候通过下发js代码去覆盖之前的native代码。由此完成了代码的更新
这里是通过JSPatch来完成的。
什么是JSPatch?
JSPatch 是一个 iOS 动态更新框架,通过JSCore,就能用JS 调用原生接口。
3. React native 动态更新
React Native是前端开发方式开发原生应用的框架,核心是JS与原生的交互。利用JS动态更新的性质,可以实现应用的热修复以及热更新。
它支持ios和android