This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

排查 EAS 模拟器问题

编辑页面

诊断 EAS 模拟器中的访问、会话生命周期、控制器、安装、预览和快速刷新问题。


未找到命令

未找到命令 simulator:start

已安装的 EAS CLI 版本过旧。安装或更新 EAS CLI,然后查看命令:

Terminal
- eas simulator:start --help

由于 API 处于实验阶段,这些命令仍处于隐藏状态。

simulator:start 拒绝已记录的标志

更新到最新版本的 EAS CLI,然后将该命令与已安装版本的帮助信息进行比较:

Terminal
- eas simulator:start --help

访问和项目错误

账户未启用 EAS Simulator

启动前检查:

Terminal
- eas simulator:availability --json

如果 available 为 false,请勿重试 simulator:start。请使用本地模拟器或仿真器,或加入候补名单以获取访问权限。

EAS CLI 报告需要用户账户

请以交互方式登录,或在无头环境中提供 EXPO_TOKEN:

Terminal
- eas whoami

EAS CLI 报告项目未关联

请在 Expo 项目中运行该命令并初始化 EAS:

Terminal
- eas init

会话生命周期问题

会话启动时间过长

启动时间因设备容量而异。在设备启动期间,轮询现有会话:

Terminal
- eas simulator:get --id <session-id> --json --non-interactive

当状态为 IN_PROGRESS 且存在 remoteConfig 时,会话已准备就绪。如果状态变为 STOPPED 或 ERRORED,或者启动命令报告终止性失败,请启动新会话。在第一个会话仍处于启动阶段时启动第二个会话,并不会加快这一过程。

非交互式会话未自动停止

--non-interactive 会在控制器准备就绪后返回,但不会停止会话。请运行:

Terminal
- eas simulator:stop

启动会话后之前的会话仍在运行

默认情况下,simulator:start 会创建新会话,即使 .env.eas-simulator 中包含另一个会话 ID。它会替换本地配置,但不会停止之前的远程会话。

列出活动会话并显式停止旧会话:

Terminal
- eas simulator:list --status in-progress
- eas simulator:stop --id <old-session-id>

如果希望在环境中已包含 ID 时让 simulator:start 失败,而不是创建新会话,请使用 --no-force。为每个会话指定描述性 --name,以便在列表中轻松识别。

控制器和隧道问题

Remote daemon is unavailable 或隧道端点处于离线状态

控制器隧道已断开,或远程 VM 已结束。控制器断开会使已安装的应用状态、辅助功能引用和连接配置失效。

如果会话仍处于活动状态,请先停止会话,然后启动一个全新的会话,并重复执行安装 → 打开 → 操作。不要反复针对已失效的端点重试控制器命令。

Unknown command: tap 或 Unknown command: click

agent-device 的操作名称是 press:

Terminal
- eas simulator:exec npx agent-device@latest press @e2

控制器操作卡住

某些 iOS 快照和交互可能需要几十秒。如果操作超时,请在重试前刷新交互式辅助功能树:

Terminal
- eas simulator:exec npx agent-device@latest snapshot -i

即使响应延迟,原始操作也可能已经到达设备;盲目重试可能会导致操作执行两次。

install requires an active session or an explicit device selector

请传入平台:

Terminal
- eas simulator:exec npx agent-device@latest install com.example.app ./MyApp.app --platform ios

截图提示当前没有活动会话

请先打开已安装的应用,然后再截图:

Terminal
- eas simulator:exec npx agent-device@latest open com.example.app --platform ios
- eas simulator:exec npx agent-device@latest screenshot ./shot.png

应用和构建问题

Launch options require an application source

--launch-arg 和 --open-url 适用于会话启动期间安装的应用。请在命令中准确传入一个源:

  • --build-id <build-id> 用于 EAS Build
  • --application-archive-url <url> 用于远程应用归档
  • --expo-go 用于与项目 SDK 匹配的 Expo Go 版本

对于本地 .app 或 APK,请启动空白会话,然后通过 agent-device 或其他控制器安装。

Expo Go 无法确定 SDK 版本

请在具有有效应用配置的 Expo 项目中运行该命令,或将 --sdk-version <version> 与 --expo-go 一起传入。SDK 覆盖选项不能与 --build-id 或 --application-archive-url 一起使用。

远程设备不包含该应用

如果会话启动时未使用 --build-id、--application-archive-url 或 --expo-go,这是预期行为。请通过控制器安装本地模拟器或仿真器构建版本,或使用应用源启动新会话。

屏幕截图显示的是旧源代码

发布构建版本会在构建时嵌入 JavaScript。请使用当前源代码重新构建,确认现有的 EAS Build 具有匹配的指纹,或安装开发构建版本并将其连接到 Metro。

更改源文件不会更新已安装的发布构建版本。

快速刷新无法正常工作

请确认以下所有事项:

  • 已安装的二进制文件是带有 expo-dev-client 的开发构建版本,而不是发布构建版本
  • Metro 仅运行一个实例,且没有其他进程占用端口 8081
  • 开发客户端已连接到公开的 Metro 隧道 URL
  • 模拟器会话和控制器仍处于活动状态

在远程或无头代理环境中使用隧道 v2:

Terminal
- EXPO_UNSTABLE_TUNNEL_V2=1 npx expo start --tunnel

如果首次连接失败,请重置模拟器会话和 Metro 一次,然后重复文档中介绍的开发构建流程。重新连接发布构建版本无法启用快速刷新。

浏览器预览问题

Android 未返回 webPreviewUrl

目前不支持 Android 浏览器预览。请改用 agent-device 或 Argent,并收集截图或录屏。

预览显示在模拟器内

webPreviewUrl 被当作应用 URL 打开了。请改用桌面浏览器打开它。这是浏览器串流,而不是应用深层链接。

报告反馈

EAS Simulator 及其 CLI 处于实验阶段。报告问题时,请包含 EAS CLI 版本、会话 ID、平台、控制器类型和失败的命令。

如需反馈官方 EAS Simulator 技能:

Terminal
- npx --yes submit-expo-feedback@latest --category skills --subject "eas-simulator" "<actionable feedback>"