EAS 更新

编辑页面

EAS Update 是一项云服务,为使用 expo-updates 库的项目提供更新。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

EAS Update 是来自 EAS(Expo Application Services)的云服务,为使用 expo-updates 库的项目提供更新。

EAS Update 让你在应用商店提审之间轻松修复小错误并快速推送修复。它通过让应用能够以空中下载(over-the-air)的方式更新自身的非原生部分(例如 JS、样式和图片)来实现这一点。所有包含 expo-updates 库的应用都可以接收更新。

快速开始

下面的 eas 命令需要 EAS CLI。有关更多信息,请参阅 如何安装 EAS CLI

安装 expo-updates 库并配置 EAS Update:

Terminal
npx expo install expo-updates

eas update:configure

你需要为 Android 或 iOS 创建一个新的构建,以便在构建中包含 expo-updates 库。之后,你可以将更新推送到生产频道:

Terminal
eas update --channel production --message "修复登录按钮对齐"

此命令会发布你的 JavaScript bundle 和资源文件,使用户在下次启动应用时收到新版本。

完整的 EAS Update 使用步骤,请参阅 开始使用 EAS Update

主要功能

用于更新管理的 JS API

更新 JavaScript API 包含一个名为 useUpdates() 的 React hook。这个 hook 会提供当前正在运行的更新以及任何可用或已下载的新更新的详细信息。此外,你还可以查看更新过程中遇到的错误,以帮助你在应用尝试更新时调试问题。

该 API 还提供了诸如 checkForUpdateAsync()fetchUpdateAsync() 之类的方法,让你可以控制应用何时检查更新以及下载更新。

洞察跟踪

你将获得一个 部署仪表板,帮助可视化哪些更新正在发送到各个构建。Updates 与 insights 协同工作,为你提供用户对更新采纳率的数据。

通过重新发布来修正错误

如果某个更新表现不符合预期,你可以像在版本控制系统中新增一个“commit”一样,将之前稳定的版本 重新发布 到有问题的版本之上。

何时使用 EAS Update

场景推荐
修复 JavaScript 代码中的 bug 或崩溃,并在几分钟内部署更新
更新文案、翻译、UI 样式或屏幕布局
通过 rollouts 向一部分用户逐步发布变更
CI 或自动化工作流 发布更新
在正式发布前与内部团队一起测试更新
更改原生代码或原生依赖
更改应用权限(相机、位置等)
更新 Expo SDK 版本
任何需要新的应用二进制版本的内容

对于标记为 的场景,请使用 EAS Build 创建并提交新的应用二进制文件。

常见问题(FAQ)

发布更新时我必须遵循哪些准则?

EAS Update 的一条规则是,你需要遵守你所面向的平台和应用商店的规则。这意味着你的更新需要遵循 App Store 和 Play Store 的准则,包括更新的内容以及你如何使用它们。这通常意味着对应用行为的更改需要经过审核。

App Store 规则会定期变化;就像你在不使用 Expo 的情况下编写应用时需要遵守这些规则一样,当你使用 Expo 和 EAS Update 时也需要遵守它们。

EAS Update 是一个快速将改进交付给应用用户的绝佳方式。例如,考虑一个存在关键 bug 的应用,需要尽快修复。借助 EAS Update,你可以快速发布修复,之后再提交一个包含该修复的新版应用。

“月活跃用户”在一个计费周期内如何统计?
注意:1 个月活跃用户等于 1 次应用的唯一安装,并且该安装在你的计费周期内至少下载了 1 次更新。
  • 在你的计费周期内,每天都下载新更新的一个应用安装,计为 1 个月活跃用户。
  • 在你的计费周期内,没有下载任何新更新的一个应用安装,计为 0 个月活跃用户。
  • 卸载并重新安装应用(并在你的计费周期内分别下载更新),计为 2 个月活跃用户。
  • 同一设备上有两个应用,且这两个应用都归属于同一个 Expo 账户并且都使用更新,则该账户会被视为 2 个月活跃用户。
我如何为我的应用实现自定义更新策略?

默认情况下,expo-updates 会在应用每次加载时检查更新。你可以使用 Updates APIapp config 实现自定义更新策略。

我可以在现有的 React Native 项目中使用 EAS Update 吗?

可以。EAS Update 既适用于使用 Continuous Native Generation (CNG) 的项目,也适用于已安装 expo-updates 库的 现有 React Native 项目

我的应用用户需要重新安装应用才能接收更新吗?

不需要。更新会在应用内下载,并根据你的配置进行应用。用户会在下次启动应用或重新加载时看到新版本。

EAS Update 如何处理原生代码兼容性?

EAS Update 使用 runtime version policies 来确保更新只会发送给具有兼容原生代码的构建。如果你的原生代码发生变化,你需要创建一个新的 runtime version。

我可以在 EAS Workflows 中或从其他 CI/CD 流水线中使用 EAS Update 吗?

可以。EAS Update 与 EAS Workflows 配合使用。你仍然需要配置并为 Android 或 iOS 创建一个新构建。之后,你可以向工作流配置中添加一个更新任务。例如:

jobs: publish_update: type: update params: message: '修复登录按钮对齐' channel: production

更多信息请参阅 EAS Workflows 预打包任务

要使用 GitHub Actions 自动发布更新,请参阅 GitHub PR 预览 Action 指南。

EAS Update 和 CodePush 有什么区别?

EAS Update 是一种原生解决方案,同时还集成了 EAS Build,并提供统一的工作流。CodePush 采用的是略有不同的方法。要了解 EAS Update 与 CodePush 之间的更多差异,请参阅 CodePush 和 EAS Update 之间的概念差异

Classic Updates 仍然受支持吗?

Classic Updates 服务在 2021 年 12 月之前可用,目前已弃用。新的更新无法再通过 expo publish 发布,不过,现有应用将继续接收已经发布且仍在使用中的 Classic Updates。

我们建议迁移到 EAS Update,或使用 自托管更新服务

开始使用

开始使用 EAS Update

了解如何在你的项目中完成配置并开始使用 EAS Update。

发布更新

了解如何使用 EAS Update 向特定分支发布更新。

预览更新

使用 EAS Update 查看你队友的更改。

使用 GitHub Actions

在一次提交后发布更新,并通过二维码进行预览。

从 CodePush 迁移

了解如何从 CodePush 迁移到 EAS Update。

将 EAS Update 与其他 EAS 服务结合使用

如需完整了解如何将 EAS Update 与其他 EAS 服务一起使用,请参阅此 EAS 教程。