返回精选库
expo-dev-client·开发与工程

用 expo-dev-client 建立可反复开发的原生运行包

本文目录

Expo Go 提供固定的一组原生能力,适合快速开始;应用加入它不包含的原生库或自定义配置后,就需要自己的开发构建。expo-dev-client 帮助 Agent 选择并搭起这个运行包,让之后的 JavaScript 修改仍能快速迭代。

先把 Expo 知识接入 Agent

Codex 用户在终端运行下面的 Expo 官方插件命令,也可在 Codex 的 /plugins 中找到 Expo。Claude Code 用户改用 claude plugin install expo@claude-plugins-official。两种插件都会带入 Expo Skills 与 MCP 配置;其他支持 Agent Skills 的客户端可用 npx skills@latest add expo/skills --skill '*',按提示选择客户端并刷新会话。安装插件本身不会构建或发布应用。

命令
codex plugin add expo@openai-curated

打开已有 Expo 项目,直接说“使用 expo-dev-client”,并给出当前 SDK、目标平台及相关文件。

先选本地还是云端构建

以下是可按项目调整的首次输入:

提示词
使用 expo-dev-client,为当前 Expo 应用建立 Android 本地开发构建。先检查原生依赖、Android 工具链与现有原生目录,说明 Expo Go 为什么不够;使用现有包管理器安装所需依赖并给出构建步骤。保留手改原生文件,不发布商店、不提交云端构建。

本地 Android 构建需要配置 Android 原生工具链,iOS 本地编译需要 macOS 与 Xcode。EAS 可以在云端编译,但需要账号、相应配置与可用额度;选择云端并不是安装这个 Skill 的必然后果。先把目标设备和构建位置说清楚,能避免生成不适用的产物。

最小本地流程

官方文档的本地入口是在项目中运行 npx expo install expo-dev-client,再选择 npx expo run:android 或 npx expo run:ios。连接真机时可按平台配置并加 --device。命令会处理编译、安装和启动开发服务;已有原生目录时,应先弄清它们是生成产物还是包含手动维护的代码。

构建成功后,日常修改 JavaScript 或 TypeScript 通常只需 npx expo start。需要明确指定运行目标时,可以使用 npx expo start --dev-client。安装 Skill、安装应用依赖、编译原生包是三个不同步骤,不要把第一步完成当作设备上已经可以运行。

什么变化需要重新编译

增加或升级原生库、修改相关应用配置、升级 Expo SDK,都可能改变原生运行包。单纯刷新 JavaScript 不能把新原生 API 加进旧包。官方生成式流程可能需要重新生成原生目录再构建;prebuild --clean 会重建目录,手动维护原生代码的项目不能不加判断地照搬。

若选择 EAS,先确认 development profile、目标平台与模拟器或设备类型,再提交构建。开发构建不是商店发布包,分发和签名也需要按目标设备处理;TestFlight 不应成为每次本地调试的默认步骤。

以设备能连接项目为结束点

合适的产物是一份匹配项目的构建配置、已说明的命令和连接开发服务的方法。检查设备是否安装了新包、是否连接正确服务,以及所需原生能力是否存在。没有实际完成构建时,清楚保留剩余步骤;本地 JavaScript 能启动,并不代表原生编译和设备安装都已经成功。

从构建结果追到设备里的应用

如果选本地构建,让 Agent 记录目标平台、使用的命令、产物路径和实际安装设备。若选 EAS 构建,则保留 development profile、构建链接和目标设备类型,确认拿到的是开发客户端而非商店发布包。只看到 Metro 打印二维码,还不能证明手机已经装上包含新原生模块的包。

常见卡点可按链路排查:原生编译失败看 Xcode 或 Gradle 日志;包能安装但缺 API,检查是否仍在打开旧开发包;包已启动但连不上服务,检查设备与电脑的网络和启动模式。修改原生依赖后重新构建,再用目标功能作烟测;仅改 JavaScript 时则先尝试刷新,避免每次都无谓重编译。

什么时候别急着重新生成原生目录

如果项目里已有 ios 或 android 目录,先查看是否有人手改权限、扩展、签名或第三方原生代码。生成式项目与手动维护项目的升级方式不同;对后者直接运行清理式 prebuild,可能把关键配置抹掉。让 Agent 先给差异清单和恢复方案,再进行会改写目录的操作。构建成功后也不要只打开首页,至少访问本次促使你创建开发包的原生功能,确认它确实在新包里。

二维码打开了正式版怎么办

生产版与开发包同机安装时,旧版 Expo SDK 的一位用户遇到 Android 扫描开发二维码却进入正式版,iOS 则正常。先核对两套构建的 scheme、包名与 dev launcher 配置,确认设备装的是本次构建;需要继续排查时,可在开发包的启动器里手动输入 Metro 地址。这个问题与具体版本、系统链接分发有关,不能只靠重新启动 Metro 解决。

你的首次任务进行得怎么样?

选择项通过网站统计帮助我们了解常见卡点。屏蔽统计可能导致无法送达;具体问题请通过邮件反馈。

参考来源

  1. expo-dev-client — official skillexpo
  2. expo/skills — READMEexpo
  3. Introduction to development buildsExpo
  4. Dev Client url opening Production appRayanMoarkech
发现过期或有误的信息?告诉我们

继续发现

其他值得了解的技能。