高级发布通道
编辑页面
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
本文档已于 2022 年 8 月归档,且不会再接收任何更新。要了解更多关于为何发布通道被弃用的原因,请参阅我们关于 EAS Update 的博文。我们建议改用 EAS Update。
简介
要快速了解发布通道,请阅读此文。
当你运行 expo publish --release-channel staging 发布应用时,它会创建:
- 一个发布版本,由 Android 和 iOS 平台上的
publicationId标识。发布版本指的是发布时你的打包源代码和资源。 - 一个指向
staging发布通道中该发布版本的链接,由channelId标识。这就像 git 分支上的一次提交。
为简化起见,本文其余部分只会提到 ios 发布版本,但你也可以在任何时候把 ios 替换为 android,所有内容依然成立。
查看过去的发布
你可以使用 expo publish:history 查看你发布过的所有内容。
示例命令和输出
expo publish:history --platform ios
| publishedTime | appVersion | sdkVersion | platform | channel | publicationId | | ------------------------ | ---------- | -------- | ------- | ------------------------------------ | | 2018-01-05T23:55:04.603Z | 1.0.0 | 24.0.0 | ios | staging | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
要查看有关此特定发布的更多详细信息,可以运行 expo publish:details
示例命令和输出
expo publish:details --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3

我的用户会获得应用的哪个版本?
你的用户会获得推送到某个发布通道上的、最近且兼容的发布版本。影响兼容性的因素包括:
- sdkVersion(独立应用只构建为支持单个 SDK 版本)
- platform
- releaseChannel
下图流程图展示了我们如何确定要向用户返回哪个发布版本:

将发布版本提升到新的发布通道
示例用例:你之前已经将某个发布版本发布到 staging,并且在测试中一切顺利。现在你希望这个发布版本在另一个发布通道中生效(即)production
我们运行 expo publish:set 将发布版本推送到 production 发布通道。
expo publish:set --publish-id 80b1ffd7-4e05-4851-95f9-697e122033c3 --release-channel production
继续上一节的内容,我们可以看到该发布版本同时存在于 staging 和 production 发布通道中。
expo publish:history --platform ios
| publishedTime | appVersion | sdkVersion | platform | channel | publicationId |
|---|---|---|---|---|---|
| 2018-01-05T23:55:04.603Z | 1.0.0 | 36.0.0 | ios | staging | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
| 2018-01-05T23:55:04.603Z | 1.0.0 | 36.0.0 | ios | production | 80b1ffd7-4e05-4851-95f9-697e122033c3 |
| 2018-01-04T22:43:19.302Z | 1.0.0 | 36.0.0 | ios | production | d6b61741-a8dc-11e9-852a-3b0715b88238 |
回滚发布通道条目
示例用例:你将一个发布版本发布到了 production 发布通道,但后来发现它给你的一些用户带来了严重回归,因此你想回退到上一个版本。
继续上一节的内容,我们使用 expo publish:set 只回滚 production 发布通道中 iOS 平台的条目
expo publish:set --release-channel production --publish-id d6b61741-a8dc-11e9-852a-3b0715b88238
或者,我们也可以使用以下命令回滚 production 发布通道中 Android 和 iOS 的条目:
expo publish:rollback --release-channel production --sdk-version 36.0.0
现在我们可以看到我们的发布版本已在 production 发布通道上可用。
expo publish:history --platform ios
| publishedTime | appVersion | sdkVersion | platform | channel | publicationId |
|---|---|---|---|---|---|
| 2018-01-04T22:43:19.302Z | 1.0.0 | 36.0.0 | ios | production | d6b61741-a8dc-11e9-852a-3b0715b88238 |
发布通道 CLI 工具
发布历史
用法: expo publish:history [--release-channel <channel-name>] [--count <number-of-logs>] 查看你已发布版本的日志。 选项: -c, --release-channel <channel-name> 按发布通道筛选。如果不包含此标志,将显示最近的发布。 -count, --count <number-of-logs> 要查看的日志数量,最大 100,默认 5。 -r, --raw 生成一些原始输出。 -p, --platform <ios|android> 按平台筛选,android 或 ios。
发布详情
用法: expo publish:details --publish-id <publish-id> 查看已发布版本的详细信息。 选项: --publish-id <publish-id> 发布 ID。(必填) -r, --raw 生成一些原始输出。
发布回滚
用法: expo publish:rollback 将更新回滚到某个发布通道。等同于运行 `expo publish:set`,并将 publish-id 设置为指定 sdk 版本中的最近一次发布 选项: -c, --release-channel <channel-name> 要回滚的发布通道名称(必填) -s, --sdk-version <version> 要回滚的 SDK 版本(例如 37.0.0)(必填) -p, --platform <ios|android> 要回滚的平台(除非指定,否则同时回滚两者)
发布设置
用法: expo publish:set --release-channel <channel-name> --publish-id <publish-id> 将已发布的版本设置为从指定通道提供。 选项: -c, --release-channel <channel-name> 要设置已发布版本的通道。(必填) -p, --publish-id <publish-id> 要从该通道提供的已发布版本 ID。(必填)