RN 热更新的优势:
React Native(RN)热更新的必要性主要体现在以下几个方面:
1. 快速修复和迭代
在应用发布后,可能会发现一些小的bug或需要进行细微的调整。通过热更新,可以快速将这些修复和改动推送给用户,而无需等待应用商店的审核流程,从而提高了修复和迭代的效率。
2. 提高用户体验
热更新允许在不重新安装应用的情况下,更新JavaScript代码和资源。这意味着用户可以在不感知的情况下获得最新的功能和修复,提升了整体的用户体验。
3. 降低发布成本
每次通过应用商店发布新版本都需要打包、签名和提交审核,这个过程既耗时又可能涉及额外的资源投入。热更新可以减少这种频繁发布的需求,降低了发布的成本。
4. 应对平台审核限制
在某些平台上,应用的审核周期较长,可能会影响到应用的及时更新。热更新提供了一种绕过这种限制的方式,使得开发者可以更灵活地控制应用的更新周期。
5. 支持A/B测试和灰度发布
热更新机制可以支持A/B测试和灰度发布,使得开发者可以在小范围内测试新功能或改动,收集反馈后再决定是否全面推送,从而降低了更新带来的风险。
综上所述,React Native的热更新功能为开发者提供了更高效、灵活的应用更新方式,特别适用于需要频繁更新和快速迭代的应用场景。
主流方案技术对比
概览
| 方案 | 核心原理 | 适用场景 | 风险提示 | git仓库 |
|---|---|---|---|---|
| CodePush | 微软云服务增量更新 | 国外网络 | 国内网络稳定性差,不继续更新 | github.com/microsoft/r…github.com/microsoft/c… |
| Pushy | 中文社区维护的增量更新方案 | 国内阿里云节点 | 只给二进制文件做远程部署 | github.com/reactnative… |
| expo | expo-update | 国外网络 | 需要升级底层脚手架 | github.com/expo/custom… |
| react-native-ota-hot-update | zip 安装 | 支持自定义布置服务 | 需要配置服务 | github.com/vantuan8829… |
详细分析
Microsoft:
官方只维护了 sdk :github.com/microsoft/r…
需要配合服务:lisong/code-push-server
整体因为宣布 Visual Studio App Center 将于 2025 年 3 月 31 日停用。您可以在 aka.ms/appcenter/r… 上了解有关支持时间表和替代方案的更多信息。
对应的替代方案:
sdk:github.com/appzung/rea…,替代方案,也可以继续使用github.com/microsoft/r…
Pushy:
优点:支持鸿蒙
服务:私有部署只提供二进制文件,不提供代码
但是可以帮助远程部署
Expo Updates
逐步升级的文档:
react-native-ota-hot-update
改动小,本身类似 Expo,但是使用的是旧的 rn-cli 框架。当前更新的效率比较高,但并不是很稳定, 自己在 andriod 端的 example 有问题。 github.com/vantuan8829…
总结
如果是使用 Expo 的,只需要再加服务端的内容就可以了,所以首推这个方案。 如果是国内用户,为了更轻松的使用到热更新的能力,可以采用 pushy 的方案。