如何为Expo应用做OTA热更新:Expo Skills的EAS Update配置、发布与健康监控完全指南
【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/gh_mirrors/skills9/skills
Expo EAS Update是 Expo 官方提供的 OTA(Over-The-Air,空中下载)热更新服务,可以跳过应用商店审核,直接向已安装用户推送 JavaScript 代码和资源更新。本文将介绍如何使用官方Expo Skills(AI 智能体技能集合)快速完成 EAS Update 的一键配置、发布流程与健康监控,帮助你在 10 分钟内上手 Expo 热更新。
一、OTA热更新能做什么?哪些改动"不能"热更新
EAS Update 的核心价值:修 Bug、改文案、调样式、更新资源,无需重新提交应用商店。用户下次启动 App 即可拿到新版代码。
但有一个关键边界 👇
| 改动类型 | 能否热更新 |
|---|---|
| JavaScript / TypeScript 代码 | ✅ 可以 |
| 样式、文案、图片资源 | ✅ 可以 |
| 新增/修改原生代码(Swift、Kotlin、原生库) | ❌ 需要重新打包构建 |
| 升级 Expo SDK / 原生配置 | ❌ 需要重新打包构建 |
先搞懂 5 个核心概念
EAS Update 的匹配逻辑由 5 个概念组成,理解了它们,就不会再问"为什么我的更新没生效":
| 概念 | 通俗解释 |
|---|---|
| Build(构建包) | 用户安装的本地 App,包含原生代码和一个固定频道 |
| Update(更新) | 一次发布的 JS Bundle + 资源,对应特定平台与运行时版本 |
| Branch(分支) | 一条有序的更新流,其中最新且兼容的更新会生效 |
| Channel(频道) | 构建包内嵌的稳定投递目标,在服务端指向某个分支 |
| Runtime Version(运行时版本) | 更新与本地原生代码之间的"兼容性边界" |
一句话总结匹配规则:平台相同 + 运行时版本匹配 + 频道指向发布该更新的分支,三者同时满足,更新才会被安装。
二、认识 Expo Skills:Expo 官方的 AI 技能包
Expo Skills 是 Expo 团队官方出品的 AI 智能体技能集合,把"何时用哪个 Expo/EAS API、工作流怎么组织、有哪些平台限制"这些专家知识封装成一个个SKILL.md技能文件,安装后即可让 Claude Code、Cursor、Codex 等 AI 编程助手按官方最佳实践干活。
与本文相关的两个技能:
- eas-update:负责配置、发布、测试与调试 OTA 热更新,源码见 plugins/expo/skills/eas-update/SKILL.md
- eas-update-insights:负责更新发布后的健康监控——崩溃率、启动数、唯一用户、包体大小,源码见 plugins/expo/skills/eas-update-insights/SKILL.md
一键安装步骤
在 Expo 项目根目录执行(支持 Cursor、OpenCode、GitHub Copilot 等主流 AI 工具):
npx skills@latest add expo/skills --skill '*'安装后重启或刷新 AI 会话即可。Claude Code / Codex 用户则建议走官方插件市场安装expo插件,后续更新由市场统一管理(详见 plugins/expo/README.md)。
三、一键配置 EAS Update:3 条命令搞定
EAS Skills 的eas-update技能强调一条黄金法则:不要手动瞎猜配置(比如手写updates.url、runtimeVersion),让 CLI 来干脏活。
第 1 步:安装热更新运行时
npx expo install expo-updates第 2 步:自动配置
npx eas-cli@latest update:configure这条命令会处理项目关联、连续原生生成(Continuous Native Generation)、已提交的ios/android/原生目录等全部细节。配置完成后,记得让 AI 帮你 review 一下它改动的 diff——这正是eas-update技能内置的工作流。
💡 如果项目已有
eas.json,CLI 只会给尚未设置频道的构建 profile 补充同名频道,不会破坏你现有的频道分配。
第 3 步:(可选)确认构建 profile
若项目尚未做过eas build:configure,按提示执行一次,为 preview / staging / production 各准备一个构建 profile。
四、如何正确发布一次OTA更新
发布会改动远端状态并影响线上用户,所以技能中特别强调:发布前务必明确目标频道、环境和平台;生产频道(production)只在明确需要时才发。
推荐发布流程:先预览,再生产
# 1. 先发到 preview 频道验证 npx eas-cli@latest update --channel preview --message "修复结算页崩溃" # 2. 验证通过后,再推广到 production npx eas-cli@latest update --channel production --message "v1.0.2 修复结算页崩溃"⚠️ 从 SDK 55 开始,发布必须显式指定 EAS 环境(--environment),确保导出的代码带上正确的环境变量。
发布后如何验证:记住"两次冷启动"
正式版构建默认优先启动速度:App 可能先跑旧代码,后台下载新更新,下次重启才生效。所以手动测试时:
- 完全杀掉App(不是切后台),重新打开 → 第 1 次启动发现并下载更新
- 若改动仍未出现,再完全杀掉并重新打开 → 第 2 次启动运行新更新
这就是技能文档中总结的"至多两次冷启动"(up to two cold launches)规则。除非你的产品确实需要"等待更新完成"的体验,否则不要为此调高启动等待超时(fallbackToCacheTimeout)。
五、健康监控:用 Insights 命令盯住发布质量
更新发布 ≠ 万事大吉。Expo Skills 的eas-update-insights技能提供了一组终端命令,直接查询发布健康度——这些数据与 expo.dev 控制台的更新详情页同源:
| 命令 | 用途 |
|---|---|
eas update:list | 列出最近的更新组,拿到groupID |
eas update:insights <groupId> | 查看单平台崩溃率、启动数、唯一用户、包体大小、按日明细 |
eas update:view <groupId> --insights | 更新详情 + 指标一并展示 |
eas channel:insights --channel <name> | 查看某频道下"内置版 vs OTA 版"用户占比与最热门更新 |
典型工作流:验证刚发布的更新是否健康
# 拿到 production 分支最新发布的 group ID GROUP_ID=$(eas update:list --branch production --json --non-interactive | jq -r '.currentPage[0].group') # 等几分钟到几小时有用户量后,看崩溃率 eas update:insights "$GROUP_ID" --json --non-interactive \ | jq '.platforms[] | {platform, installs: .totals.installs, crashRate: .totals.crashRatePercent}'看什么指标?
- 📉
crashRatePercent:崩溃率突增,或 iOS/Android 表现不对称(一边飙、一边平),就是需要立即排查的信号 - 👥
installs/uniqueUsers:采用率信号,判断有多少人真正拉到了新版 - 📊
daily时间序列:用于发现某天的启动失败突然尖峰
两个字段参考文档值得收藏:update-insights-schema.md 和 channel-insights-schema.md。
📌 注意口径:
installs统计的是"下载了清单和启动资源"的用户,确认运行要等下一次更新检查(最多约 24 小时),因此指标会略滞后于真实状态;崩溃是 App 自报的,进程被杀前未上报的崩溃不会计入。
六、热更新没生效?按顺序做 6 项排查
这是新手最高频的问题,eas-update技能给出了一条标准的排查清单:
- 确认发布目标:更新是否发到了正确的 EAS 项目、频道/分支、平台和环境?
- 对比兼容性:安装包的"平台 + 运行时版本"与发布的更新是否匹配?
- 确认构建包含新配置:App 配置(更新 URL、频道)只在新编译的构建包中生效,旧包不会自动带上
- 检查频道映射:频道 → 分支的服务端映射是否正确,分支上的活动更新是哪一条?
- 完整终止重开:给正式版构建留出"先下载、后应用"的正常生命周期(两次冷启动)
- 查原生日志:配合官方调试指南检查导出与配置问题
技能中反复强调一条红线:永远不要绕过兼容性或防变砖保护机制来"让更新看起来生效"——那可能把线上用户全部打变砖。
七、写在最后
用三句话回顾 Expo EAS Update 热更新的核心思路:
- ✅配置:交给
eas update:configure,不手写 URL 和 runtimeVersion - ✅发布:preview 先行、production 谨慎,记住"两次冷启动"验证法
- ✅监控:发布后用
eas update:insights盯崩溃率与采用率,异常即回滚
把 Expo Skills 装进你的 AI 编程助手,以上每一步都可以直接让它按官方最佳实践执行,并随时向你解释"为什么这么配"。热更新从此不再是黑盒。🚀
【免费下载链接】skillsA collection of AI agent skills for working with Expo projects and Expo Application Services项目地址: https://gitcode.com/gh_mirrors/skills9/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考