美文网首页
开源的RN热更新加载方案

开源的RN热更新加载方案

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

一、简介 pushy

该组件由react native 中文网独家发布,该组件是面向 React Native 提供热更新功能的组件,结合Update 服务使用。

  • 注意,在 iOS 上使用热更新有被拒的可能。被拒之后可以按此步骤单独屏蔽 iOS 端(react-native-update版本需 >= 5.3.2):

1.如果 RN 版本>=0.60,在项目根目录下编辑或创建 react-native.config.js,添加如下内容

 // react-native.config.js
 module.exports = {
   dependencies: {
     'react-native-update': {
       platforms: {
         ios: null, // 阻止ios模块自动链接
       },
     },
   },
 };

2.如果在原生代码端尚未配置,则跳过下面文档中的 ios 端的配置。如果已经配置,则按文档的步骤反向操作(添加的 ios 代码删去)。
3.如果是 0.60 以上版本或使用了 cocoapods,在 ios 目录中再次运行 pod install,确保 Podfile 和 Podfile.lock 中都没有'react-native-update'。如果 RN 版本<0.60,则运行react-native unlink react-native-update。
4.在 js 代码里调用 checkUpdate()方法前,判断 Platform.OS,如果是 ios 平台则直接 return 跳过。

优势

  1. 命令行工具&网页双端管理,版本发布过程简单便捷,完全可以集成 CI。
  2. 基于 bsdiff 算法创建的超小更新包,通常版本迭代后在 1-10KB 之间,避免数百 KB 的流量消耗。
  3. 支持崩溃回滚,安全可靠。
  4. meta 信息及开放 API,提供更高扩展性。
  5. 跨越多个版本进行更新时,只需要下载一个更新包,不需要逐版本依次更新。

Pushy的使用过程中主要遇到如下几个问题:

1、Android-不支持Android Studio 3 编译
原因:build.gradle中缺少一点配置
应对:可参考这里解决 https://github.com/reactnativecn/react-native-pushy/issues/140

2、iOS-更新后js文件仍然是旧的
原因:修改js后不应该archive,应该通过pushy bundle(仔细领会文档的意图)。
应对:可参考这里解决 https://github.com/reactnativecn/react-native-pushy/issues/164

这个热更新服务是否收费?

目前该热更新服务完全免费,但限制每个账号不超过3个应用;每个应用不超过10个活跃的包和100个活跃的热更新版本;每个应用每个月不超过10000次下载。iOS和Android版本记做不同的应用。

已经移除的应用、包版本、热更新版本不在统计之列,所以你可以移除测试时产生的和已过期版本来更有效的利用空间。

是否可以搭建自己的热更新服务?

你可以单独使用本组件的原生部分(不包括js模块)和命令行工具中的bundle、diff、diffFromIpa、diffFromApk四个功能。

这些功能都不会使用我们的热更新服务,也无需注册或登录账号。但你可能要编写自己的js模块来与不同的热更新服务器通讯。

如果想搭建私有云服务,可以QQ:402740419

安装

官方文档

二、简介CodePush

CodePush 是微软提供的一套用于热更新 React Native 和 Cordova 应用的服务。
CodePush 是提供给 React Native 和 Cordova 开发者直接部署移动应用更新给用户设备的云服务。CodePush 作为一个中央仓库,开发者可以推送更新 (JS, HTML, CSS and images),应用可以从客户端 SDK 里面查询更新。CodePush 可以让应用有更多的可确定性,也可以让你直接接触用户群。在修复一些小问题和添加新特性的时候,不需要经过二进制打包,可以直接推送代码进行实时更新。

优势

1.直接对用户部署代码更新
2.管理 Alpha,Beta 和生产环境应用
3.支持 React Native 和 Cordova
4.支持JavaScript 文件与图片资源的更新
5.CodePush开源了react-native版本,react-native-code-push托管在GitHub上。

安装

官方文档
入门
进阶

搭建自己服务器

参考文章

以上两种方式实现了完整bundle包的基本热更新,但是这只是热更新的一部分,还有很多方面可以优化,比如:多模块的多bundle热更新、bundle拆分差量更新、热更新的异常回退处理、多版本bundle的动态切换、bundle的更新和apk的更新相结合等等,这也是之后继续研究学习的方向。

相关文章

网友评论

      本文标题:开源的RN热更新加载方案

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