Skip to content

Latest commit

 

History

History
96 lines (71 loc) · 7.95 KB

File metadata and controls

96 lines (71 loc) · 7.95 KB

react-native-update npm version

English README

本组件是面向 React Native 提供热更新功能的组件,详情请访问我们的官方网站 https://pushy.reactnative.cn

区域服务说明

  • 中国区服务使用 Pushyhttps://pushy.reactnative.cn),由武汉青罗网络科技有限公司运营,服务器位于中国境内,也通过 cloudflare 智能分流,完全支持海外用户高速访问。使用人民币支付订阅
  • 全球区服务使用 Creschttps://cresc.dev),由 CHARMLOT PTE. LTD. 运营,服务器位于新加坡。使用美元支付订阅
  • 中国区与全球区服务由不同公司实体独立运营,服务器、数据及控制台系统彼此隔离。如果可以使用网银和支付宝结算,建议使用 Pushy,否则建议使用 Cresc。

现已支持鸿蒙以及新架构

快速开始

请查看文档

优势

  1. 对中国用户使用阿里云高速 CDN 分发,对比其他服务器在国外的热更新服务,分发更稳定,更新成功率极高。海外用户智能分流至 cloudflare,同样提供稳定高速的分发体验。
  2. 基于 bsdiff/hdiff 算法创建的超小更新包,通常版本迭代后在几十至几百 KB 级别(其他全量热更新服务所需流量通常在几十 MB 级别)。更针对 Hermes 字节码专门优化了 diff 算法(详见下方算法对比),补丁体积进一步显著缩小。
  3. 始终跟进 RN 最新正式版本,第一时间提供支持。支持 hermes 字节码格式。支持新架构(注:安卓 0.73.0 ~ 0.76.0 的新架构因官方 bug 不支持,0.73 以下或 0.76.1 以上的新架构可用)。
  4. 跨越多个版本进行更新时,只需要下载一个更新包,不需要逐版本依次更新。
  5. 命令行工具 & 网页双端管理,版本发布过程简单便捷,完全可以集成 CI。
  6. 后台自带数据统计(版本分布、更新成功率等)、灰度发布(按比例逐步放量)与版本健康度监控,无需自建数据链路即可掌控每次发布。
  7. 支持崩溃回滚,安全可靠,结合健康度监控可及时发现并止损问题版本。
  8. meta 信息及开放 API,提供更高扩展性。
  9. 提供付费的专人技术支持。

Diff 算法对比

传统 diff 算法直接对字节做差分,而 Hermes 字节码中大量结构是"偏移量表"——JS 一处小改动会令其后所有偏移量整体位移,导致二进制差异被急剧放大。我们在 hdiff 之前引入了一层针对 HBC(Hermes 字节码)的 delta-friendly 可逆变换:对偏移位域做前项差分,从根源上消除这种位移放大。布局描述表由发布端随补丁下发,Hermes 版本演进时客户端零升级、自动兼容。

以下数据在真实 RN 0.86 应用的 release 产物上实测(Hermes HBC v98,字节码约 4.4 MB),每个补丁都先通过完整往返校验再记录体积。完整的评测方法、测试数据与可复现代码见 hbc-diff-benchmark

Hermes 字节码(.hbc)——生产环境 Hermes 应用的实际发包格式:

迭代场景 全量 OTA(gzip) bsdiff bsdiff+lzma hdiff hdiff + HBC 变换
单行文案修改 1901.5 KB 93.7 KB 87.7 KB 89.0 KB 63.5 KB(−28% / −29%)
小功能(约 60 行) 1913.9 KB 411.6 KB 330.9 KB 328.0 KB 285.5 KB(−14% / −13%)
中等功能(约 300 行) 1973.7 KB 551.6 KB 430.6 KB 431.6 KB 398.4 KB(−7% / −8%)

文本 JS bundle——非 Hermes 应用(同一应用、同样三个场景):

迭代场景 全量 OTA(gzip) bsdiff bsdiff+lzma hdiff
单行文案修改 807.2 KB 0.3 KB 0.7 KB 0.1 KB
小功能(约 60 行) 813.1 KB 7.4 KB 7.4 KB 5.8 KB
中等功能(约 300 行) 837.7 KB 38.4 KB 37.4 KB 28.7 KB

文本 bundle 没有偏移量表,diff 天然干净——补丁只有几百字节到几十 KB,较大改动下 hdiff 仍比 bsdiff 小约 20%~25%。偏移位移放大是 Hermes 字节码特有的问题,这正是 HBC 变换存在的意义。

要点:

  • 增量更新比全量 OTA 节省 5~30 倍流量(单行改动 63.5 KB vs 全量 1.9 MB)。
  • bsdiff+lzma 对照组(同一份 bsdiff 差分数据、换用 lzma 压缩)表明压缩器占了 bsdiff 与 hdiff 差距的大头——而 HBC 针对性变换再带来的 7%~29% 缩减是纯算法收益,且越是高频的小改动收益越大。
  • hdiff 生成补丁比 bsdiff 快 2~4 倍,变换本身开销仅个位数毫秒。
  • 安全兜底:改写任何字节前先对段边界、位域范围做全量校验,不匹配时自动回退到普通 hdiff 路径。

与其他热更新库对比

对比维度 react-native-update expo-update react-native-code-push
价格/成本 提供免费额度,多级梯度付费(最低约 66 元/月),流量不单独计费 提供免费额度,多级梯度付费(最低约 136 元/月),超出流量额外计费 已停运(Microsoft App Center 已于 2025 年 3 月 31 日停止服务)
更新包大小 ⭐⭐⭐⭐⭐ 几十至几百 KB(增量更新) ⭐⭐⭐ 全量更新(通常几十 MB) 已停运
中国地区访问速度 ⭐⭐⭐⭐⭐ 阿里云 CDN,速度极快 ⭐⭐ 国外服务器,可能较慢 已停运
iOS 支持 ✅ 支持 ✅ 支持 已停运
Android 支持 ✅ 支持 ✅ 支持 已停运
鸿蒙支持 ✅ 支持 ❌ 不支持 已停运
Expo 支持 ✅ 支持 ✅ 支持 已停运
RN 版本支持 ⭐⭐⭐⭐⭐ 第一时间支持最新版本 ⭐⭐⭐⭐ 跟随 Expo SDK 已停运
新架构支持 ✅ 支持 ✅ 支持 已停运
Hermes 支持 ✅ 支持 ✅ 支持 已停运
崩溃回滚 ✅ 自动回滚机制 ✅ 支持 已停运
灰度发布 ✅ 后台自带,按比例逐步放量 ✅ 支持 已停运
数据统计 ✅ 后台自带(版本分布、更新成功率等) ⚠️ 有限 已停运
健康度监控 ✅ 后台自带版本健康度监控 ❌ 不支持 已停运
Hermes 专项 diff 优化 ✅ HBC 结构感知,补丁更小 ❌ 全量更新 已停运
管理界面 ✅ 命令行工具 + Web 管理界面 ✅ Expo Dashboard 已停运
CI/CD 集成 ✅ 支持 ✅ 支持 已停运
API 扩展性 ✅ Meta 信息 + 开放 API ⚠️ 有限 已停运
中文文档/支持 ⭐⭐⭐⭐⭐ 完整中文文档,中文社区支持 ⭐⭐ 英文为主 已停运
技术支持 ✅ 付费专人技术支持 ⚠️ 社区支持 已停运
服务器部署 ✅ 可托管也可付费私有部署 ✅ Expo 托管(EAS Update) 已停运
更新策略 灵活配置(静默/提示/立即/延迟) 相对固定 已停运
流量消耗 ⭐⭐⭐⭐⭐ 极低(增量更新) ⭐⭐⭐ 较高(全量更新) 已停运
更新成功率 ⭐⭐⭐⭐⭐ 极高(国内 CDN 优势) ⭐⭐⭐ 中等 已停运

关于我们

本组件由React Native 中文网独家发布,如有定制需求可以联系我们

关于此插件发现任何问题,可以前往Issues发帖提问。