与你的团队分享预览

编辑页面

了解如何使用 EAS Update 发送 OTA 更新并与团队共享预览。


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

Updates 通常用于在应用商店发布版本之间修复小错误并推送小改动。它们允许更新我们示例应用中非原生的部分,例如 JavaScript 代码、样式和图片。

在本章中,我们将使用 EAS Update 与团队共享更改。这将帮助我们和团队快速共享预览该更改。

观看:如何与团队共享预览
观看:如何与团队共享预览

设置 EAS Update,以便在应用商店发布版本之间与团队共享应用的预览版。


1

安装 expo-updates 库

要初始化我们的项目并发送更新,我们需要使用 expo-updates 库。运行以下命令进行安装:

Terminal
npx expo install expo-updates

2

配置 EAS Update

要使用 EAS Update 初始化我们的项目,我们需要按照以下步骤进行:

  • 由于我们正在为应用配置使用动态 app.config.js,因此需要添加 updatesruntimeVersion 属性,以使我们的项目与 EAS Update 兼容。运行以下命令,从 EAS 获取这些属性及其值,并手动将它们复制到 app.config.js 中:
Terminal
eas update:configure
非动态(app.json)项目怎么办?

如果项目不使用动态 app config(使用 app.json 而不是 app.config.js),上述命令会将我们的应用配置为与 EAS Update 兼容,并将正确的属性添加到 app.jsoneas.json 中。

  • 重新运行 eas update:configure 以继续设置流程。应将一个 channel 添加到 eas.json 中的每个构建配置:
eas.json
{ "build": { "development": { %%placeholder-start%%... %%placeholder-end%% "channel": "development" }, "ios-simulator": { %%placeholder-start%%... %%placeholder-end%% }, "preview": { %%placeholder-start%%... %%placeholder-end%% "channel": "preview" }, "production": { %%placeholder-start%%... %%placeholder-end%% "channel": "production" } } %%placeholder-start%%... %%placeholder-end%% }
请注意,eas update:configure 命令会将 channel 添加到 eas.json 中的每个构建配置中。不过,我们的 ios-simulator 配置继承自 development 配置,单独的 channel 并没有意义。我们可以安全地从上面的配置中删除 ios-simulator.channel
什么是 channel?

Channels 用于将构建分组在一起。如果我们有一个 Android 构建和一个 iOS 构建,而且它们都在应用商店中,我们可以将它们的 channel 都设置为 production。之后,我们可以告诉 EAS Update 目标为 production channel,这样我们的更新就会影响所有具有 production channel 的构建。

3

创建开发构建

我们需要创建一个新的开发构建,因为上一次构建不包含 expo-updates 库。运行以下命令:

Terminal
eas build --platform android --profile development

我们使用 Android 设备的开发构建来演示更新。不过,我们也可以使用 --platform all--platform ios 来创建适用于两个平台的构建,或者仅为 iOS 创建构建。

在新的开发构建版本创建完成后,请确保将其安装到设备上。

4

修改应用的 JavaScript 代码

让我们修改示例应用的 JavaScript 代码。如果你没有使用 Sticker Smash app,你可以修改代码中的任意部分来查看应用中的变化。

我们将把示例应用中第一个按钮的文本从 Choose a photo 改为 Select a photo

app/(tabs)/index.tsx
<Button theme="primary" label="Select a photo" onPress={pickImageAsync} />

5

发布更新

与其创建一个新的构建来与团队共享此更改进行测试,不如发布一个更新:

Terminal
eas update --channel development --message "Change first button label"

在上面的命令中,我们使用了 development channel。每个更新都关联一个 channel name。这类似于我们在 git 中提交的每个 commit,都关联着一个 git 分支。

因此,通过在构建配置中使用 development channel,然后发布更新,我们是在请求 EAS 将此更新推送到具有 development channel 的构建。 当我们创建一个 EAS Update channel 时,它会自动映射到一个同名分支。

更新发布后,CLI 会提示我们相关信息。

点击 Website link,在 EAS 仪表板的 Over-the-air updates > Update groups 下查看该更新:

6

在开发构建中实时预览更新

要在开发构建中预览实时更新:

  • 在开发构建中登录你的 Expo 账户。
  • 打开 Extensions 选项卡。
  • EAS Update 下查找列出的 Branch: development
  • 点击 Open 以访问该更新。

7

与预览或生产构建共享更改

非开发构建(preview 或 production)的更新会在应用启动并请求任何新更新时自动下载到设备。

任何运行预览或生产构建的团队成员都会收到我们推送到这些特定分支的更改更新。

例如,对于 preview 构建,我们可以运行:

Terminal
eas update --channel preview --message "Change first button label"

下面是一个我们已为 preview 构建发布更新的示例。要测试该更新,请强制关闭并重新打开应用两次,以下载并查看更改:

总结

Chapter 10: Share previews with your team

我们已成功配置 EAS Update 来管理并发布跨平台的空中更新,并探索了获取更新进行审查的方法。

在下一章中,了解如何从 GitHub 仓库触发构建的流程。

Next: 从 GitHub 仓库触发构建