美文网首页
ReactNative热更新思路

ReactNative热更新思路

作者: 你还真是学不乖丶 | 来源:发表于2020-02-05 22:56 被阅读0次

    一、简介

    热更新技术是ReactNative框架的一大特色。简单的说,热更新技术就是在无需用户重新下载APP SDK的情况下,更新已安装的APP除Native之外的功能,并且绝大部分情况是在用户不知道的状态下更新成功。最常见的使用场景就是一些电商类的APP在活动日替换符合活动日主题的页面,新增功能(不涉及Native功能)等等。也常用于解决APP现存的一些bug,不必频繁的发布新版本。热更新技术也是ReactNative框架备受关注的原因之一。

    热更新的技术限制:只能更新js代码,图片等静态资源。原生代码,原生配置都不能(其实能通过jspatch之类的技术能实现,但苹果现在会扫描代码,碰到jspatch会打回)
    热更新的政策限制:明面上,苹果,谷歌都不允许热更新,所以提交AppStore和play store审核的时候都不能使用热更新,甚至不能出现检查版本之类的字眼。审核通过后可以开启热更新。但是另一方面,所有的大厂都在明目张胆地进行热更新(微信的小程序不是热更是什么?),所以……总的来说都是睁一只眼闭一只眼,只要不太过分玩换皮,热更新是官方不欢迎但也不拒绝的存在。

    二、热更新的大致流程

    1c86e3a72dfa5b8ef502f0014d12f385_68795-c035e2064202c45f.png

    首先抛出热更新的实现思路:用户每次打开APP客户端,在APP启动的过程中请求服务器获取最新bundle版本号,同时从本地获取当前已安装APP的bundle版本号,将两者进行对比,如若一致,则无需更新继续执行其他逻辑;如果不一致,从服务器获取当前最新版本的bundle包下载到本地。解压缩最新版本的bundle包(服务器端存放的bundle包一般均为压缩文件)。如果采用全量更新方法,解压缩之后的bundle文件可直接使用;如果使用的是差量更新方法,解压缩之后还需要与当前本地使用的bundle包进行合并,合并成功之后方可使用。这里还有一个隐藏的技术点:修改ReactNative默认读取加载bundle包的路径,将之改成你自定义的bundle包路径。也就是你解压新bundle包的路径(全量更新方法)或你合并bundle包的路径(差量更新方法)。最后是查看APP的更新效果,如果是冷加载,必须是在APP被彻底杀死,重新启动之后才能看到;如果是热加载,调用ReactNative重新加载bundle方法。

    三、思路节点分析(冷加载,Android)

    1.创建服务器
    2.Android平台封装ReactNative的Native Module技术。包含:

    当前bundle版本提取;
    获取服务器端bundle版本号;
    文件或者目录的创建;
    bundle文件下载;
    bundle文件解压缩;
    bundle文件与差量包的合并;
    文件的删除等等。

    四、技术节点分析

    • JAVA IO流操作;

    • Android的BuildConfig操作;(参考URL:http://blog.csdn.net/aotian16/article/details/51776051

    • 文件操作:解压缩,取差量,合并;

    • RN手动打包;

    • RN打包的文件中包含:RN源码,第三方库,业务逻辑代码;

    • RN的运行机制;

    • 修改ReactNative读取bundle文件的路径;

    相关文章

      网友评论

          本文标题:ReactNative热更新思路

          本文链接:https://www.haomeiwen.com/subject/zucexhtx.html