eas 热更新相关

几个问题:

eas 打包 和 eas 热更新

打包命令:eas build --profile profile name --platform all

热更新命令:eas update --channel channel name --message "测试版本1.0.1"

eas.json vs app.json(app.config.js)

The knowledge sources provided don't contain the full content of the https://docs.expo.dev/eas-update/expo-dev-client/ page, so I'll answer based on the available related documentation.


EAS 热更新完整流程

整体流程概览
复制代码
安装依赖 → 配置项目 → 创建构建 → 发布更新 → 用户接收更新

第一步:安装依赖
bash 复制代码
npx expo install expo-updates

[安装 expo-updates](https://docs.expo.dev/tutorial/eas/team-development/)


第二步:配置项目
bash 复制代码
eas update:configure

该命令会自动完成:

  • app.json 中添加 updates.urlruntimeVersion
  • eas.json 各构建 profile 中添加 channel 属性

配置完成后 app.json 示例:

json 复制代码
{
  "expo": {
    "runtimeVersion": {
      "policy": "appVersion"
    },
    "updates": {
      "url": "https://u.expo.dev/your-project-id"
    }
  }
}

eas.json 示例:

json 复制代码
{
  "build": {
    "preview": {
      "distribution": "internal",
      "channel": "preview"
    },
    "production": {
      "channel": "production"
    }
  }
}

[配置项目](https://docs.expo.dev/eas-update/getting-started/#configure-your-project)


第三步:创建构建

Channel 信息会在构建时烧录进原生代码,所以必须先有构建才能接收更新:

bash 复制代码
eas build --profile production

[EAS Build 与 Update](https://docs.expo.dev/build/updates/)


第四步:发布更新

修改 JS 代码后,推送热更新:

bash 复制代码
eas update --channel production --message "修复登录页面 bug"

发布后 EAS 服务器会将更新分发给所有 channel=productionruntimeVersion 匹配的 App。[发布更新](https://docs.expo.dev/eas-update/getting-started/#publish-an-update)


第五步:用户接收更新
方式 说明
自动后台下载 App 启动时自动检查并下载,下次冷启动生效
Development Build 通过 Extensions 面板手动加载指定更新,适合测试
Expo Orbit 扫码直接安装并启动更新
编程控制 使用 expo-updatesuseUpdates hook 主动检查并提示用户

[测试更新](https://docs.expo.dev/eas-update/getting-started/#publish-an-update)


注意事项
  • 热更新只能更新 JS 代码,涉及原生模块变更时必须重新构建
  • 每次修改原生层后需同步更新 runtimeVersion,否则新旧版本 App 可能收到不兼容的更新
  • 默认情况下 debug 构建不会 启用 expo-updates,需要 release 或特殊配置的 debug 构建才能测试热更新效果 [调试说明](https://docs.expo.dev/eas-update/debug/#verify-the-channelbranch-mapping)

Channel 与 Profile 的关系

Profile 是 eas.json 配置文件中环境的简称,用于构建时指定运行哪组环境配置。

Channel 代表当前应用环境的唯一标识。构建完成后,该标识会被记录在应用中。进行热更新时,系统只会拉取与该标识匹配的热更新资源包。

runtimeVersion的书写方式

参考这里:点击

备注:我理解应该使用平台特定运行版本。避免不兼容的更新

相关推荐
NiceCloud喜云3 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby4 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
丷丩4 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
Front思5 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫7 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。8 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星8 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒8 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
丷丩8 小时前
MapLibre GL JS第19课:实时更新要素
前端·javascript·gis·map·mapbox·maplibre gl js
Mr.Daozhi8 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具