This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

从 Classic Updates 迁移

编辑页面

帮助从 Classic Updates 迁移到 EAS Update 的指南。


EAS Update 是 Expo 更新服务的下一代。如果你正在使用 Classic Updates,本指南将帮助你升级到 EAS Update。

Prerequisites

1 requirement

EAS Update 的最低版本要求

EAS Update 需要以下版本或更高版本:

  • Expo SDK 45.0.0 及更高版本
  • Expo CLI 5.3.0 及更高版本
  • EAS CLI 0.50.0 及更高版本
  • expo-updates 0.13.0 及更高版本

安装 EAS CLI

1

安装 EAS CLI:

Terminal
npm install --global eas-cli

2

然后,使用你的 Expo 账户登录:

Terminal
eas login

配置你的项目

你需要对项目进行以下更改:

1

使用 EAS Update 初始化你的项目:

Terminal
eas update:configure

执行此命令后,你应该会在应用配置中看到两个新字段:expo.updates.urlexpo.runtimeVersion

2

为了确保更新与构建中的底层原生代码兼容,EAS Update 使用了一个名为 runtimeVersion 的新字段,它取代了你项目应用配置中的 sdkVersion 字段。请从应用配置中移除 expo.sdkVersion 属性。

3

为了允许更新应用到使用 EAS 构建的构建版本中,请更新 eas.json 中的 EAS Build 配置文件,添加 channel 属性。这些 channel 会取代 releaseChannel 属性。我们发现将 channel 命名为与配置文件同名很方便。例如,preview 配置文件有一个名为 "preview"channel,而 production 配置文件有一个名为 "production"channel

eas.json
{ "build": { "development": { "developmentClient": true, "distribution": "internal" }, "preview": { "distribution": "internal", "channel": "preview" }, "production": { "channel": "production" } } }

4

可选:如果你的项目是一个现有的 React Native 项目,请参阅在现有项目中使用 EAS Update,了解你可能需要的额外配置。

创建新的构建

上述更改会影响构建中的原生代码层,这意味着你需要创建新的构建,然后才能开始发送更新。构建完成后,你就可以发布更新了。

发布更新

在本地对项目进行更改后,你就可以发布更新了,请运行:

Terminal
eas update --channel [channel-name] --message [message]

# 示例
eas update --channel production --message "修复了拼写错误"

发布后,你可以在 EAS 仪表板 中查看该更新。

其他迁移步骤

  • 在脚本中将 expo publish 的实例替换为 eas update。你可以使用 eas update --help 查看发布的所有选项。
  • 如果你的任何代码引用了 expo-updates 库中的 Updates.releaseChannel,请将其替换为 Updates.channel
  • 移除任何引用 Constants.manifest 的代码。这现在将始终返回 null。你可以通过 expo-constants 库中的 Constants.expoConfig 访问大多数你需要的属性。

了解更多

上面描述的步骤使你能够使用与 Classic Updates 类似的流程。然而,EAS Update 更加灵活,功能也更多。它可用于创建更稳定的发布流程。了解 EAS Update 的工作原理 以及如何为你的项目和团队设计更稳定的 部署流程

如果你在迁移过程中遇到问题,请查看我们的 调试指南。如果你有反馈,欢迎加入我们的 Discord,在 #update 频道中交流。