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