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

EAS 模拟器 CLI 参考

编辑页面

用于创建、检查、监控、控制、列出和停止远程模拟器会话的实验性 EAS CLI 命令参考。


simulator:* 命令处于实验阶段且默认隐藏。运行这些命令前,请安装或更新 EAS CLI:

Terminal
- eas simulator:start --help

--help 标志会显示 simulator:start 的可用选项。

启动命令也可写作 eas simulator、eas sim 和 eas sim:start。其他命令也有对应的 eas sim:* 别名,例如 eas sim:list 和 eas sim:stop。

如需在不使用 EAS CLI 的情况下管理会话,请使用 REST API。

命令

命令用途
simulator:availability检查当前项目的账户是否可以使用 EAS Simulator
simulator:start创建会话并等待其控制器配置
simulatorsimulator:start 的别名
simulator:exec在加载 .env.eas-simulator 的情况下运行另一个命令
simulator:events显示已记录的活动,或跟踪运行中会话的活动
simulator:get获取状态、连接详细信息、仪表板 URL、时间戳和构建产物
simulator:list列出并筛选当前项目的会话
simulator:stop停止会话

simulator:availability

Terminal
- eas simulator:availability --json

--json 标志是可选的。它会为代理和自动化工具输出稳定、机器可读的结果;省略该标志则输出适合人类阅读的内容。JSON 对象包含 available 和 accountName。此命令不会创建会话,也不会消耗模拟器使用额度。

simulator:start

会话类型决定 EAS 会通过远程设备配置哪种接口。在 iOS 上,每种类型都包含网页预览。选择 agent-device、Argent 或 Appium 可添加程序化控制,或者选择 web-preview-only 仅使用网页预览:

使用 agent-device 执行基于无障碍功能的设备操作和应用安装。

Terminal
- eas simulator:start --platform ios --type agent-device --name "Checkout flow screenshots" --non-interactive

重要标志:

标志描述
-p, --platformandroid 或 ios。在非交互模式下为必填项;在交互式终端中会提示输入
--name人类可读的会话名称,会显示在 simulator:list、simulator:get 和 expo.dev 中
--deviceiOS Simulator 名称或唯一设备标识符(UDID),或 Android 虚拟设备硬件配置文件。省略时由运行器选择设备
--build-id在会话就绪前安装并启动的 EAS Build
--application-archive-url在会话就绪前下载、安装并启动的应用归档
--expo-go安装并启动与当前项目 Expo SDK 版本匹配的 Expo Go
--sdk-version用于选择 Expo Go 的 Expo SDK 版本。仅在使用 --expo-go 时有效;默认为当前项目的 SDK 版本
--launch-arg应用启动时传递给已安装应用的参数。多个参数需重复使用该标志
--open-url启动后在已安装应用中打开的 Expo 或开发客户端 URL
--type会话类型。在 iOS 上,每种类型都包含网页预览。使用 agent-device、appium 或 argent 可添加程序化控制,使用 web-preview-only 则仅使用网页预览
--package-version控制器软件包版本。默认为服务的最新版本
--max-duration-minutes自动停止会话的时间。付费方案可使用自定义值;否则默认值取决于作业优先级
--max-idle-time-minutes会话没有活动达到指定分钟数后停止。省略时,会话没有空闲超时,并会一直运行到最长持续时间
--out-config-type使用 dotenv 写入 .env.eas-simulator,或使用 env 输出 shell 环境变量导出语句
--[no-]force当环境中已存在会话 ID 时,是否创建新会话。默认为 true
--non-interactive会话就绪后返回,而不是保持连接
--json输出机器可读内容,并启用非交互模式

--build-id、--application-archive-url 和 --expo-go 是互斥的应用来源。--launch-arg 和 --open-url 必须与其中一个应用来源搭配使用,因为启动命令需要已安装的应用才能启动。

即使使用 --json,默认的 dotenv 输出也会写入配置。明确不想写入文件时,请使用 --out-config-type env。

常见 JSON 输出字段的格式如下。remoteConfig 中的字段取决于所选控制器:

{ "id": "<session-id>", "name": "Checkout flow screenshots", "type": "<controller-type>", "deviceRunSessionUrl": "https://expo.dev/accounts/<account>/projects/<project>/simulator-sessions/<session-id>", "remoteConfig": { "<控制器特定键>": "<值>" } }

请将 remoteConfig 视为机密信息,因为其中包含控制器凭据。

交互式和非交互式行为

不使用 --non-interactive 时,启动命令会保持连接并轮询会话。按一次 Ctrl+C 可停止该命令。EAS CLI 确认会话结束后,会重置 .env.eas-simulator。

使用 --non-interactive 或 --json 时,控制器就绪后命令会返回。你必须单独停止会话。

simulator:exec

simulator:exec 与控制器无关。它会从 .env.eas-simulator 加载活动会话的连接变量,然后启动后续的命令及参数。

请使用会话启动时所选控制器对应的命令模式:

Terminal
- eas simulator:exec npx agent-device@latest <command> [args...]

simulator:exec 不实现设备操作。它只提供活动会话的连接环境,并运行后续的命令。可用的操作和参数语法来自 agent-device 或 Argent。

simulator:events

显示 .env.eas-simulator 所引用会话的活动快照:

Terminal
- eas simulator:events

传入会话 ID 以检查其他会话:

Terminal
- eas simulator:events --id <session-id>

默认的文本输出会将相关操作整合为易读的时间线。其中包括时间戳、控制器、摘要,以及可用时的持续时间。此命令显示来自 agent-device 或 Argent 的会话和控制器活动,而不是应用运行时日志。

在会话运行期间持续查看新活动:

Terminal
- eas simulator:events --follow

-f 短标志等同于 --follow。会话结束时,命令会停止持续查看。提前停止持续查看,请按 Ctrl + C。

对于代理和自动化任务,以 JSON 格式请求原始事件记录:

Terminal
- eas simulator:events --json

JSON 对象包含 deviceRunSessionId 和 events 数组。常见的事件字段包括 eventId、ts、producer、type 和 summary,以及可用时的操作 ID、结果、持续时间和控制器特定数据。--json 不能与 --follow 结合使用。

simulator:get

获取 .env.eas-simulator 所引用的会话:

Terminal
- eas simulator:get --json --non-interactive

显式获取另一个会话:

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

响应包括:

  • ID、名称、类型、状态和平台
  • 创建、启动、结束和更新时间戳
  • expo.dev 模拟器会话 URL
  • 控制器连接配置
  • 会话产物(如果存在)

simulator:list

Terminal
- eas simulator:list --platform ios --status in-progress --json --non-interactive

筛选条件可以重复使用:

筛选条件值
--platformios、android
--typeagent-device、appium、argent、web-preview-only
--statusnew、in-progress、stopped、errored
--name不区分大小写的会话名称前缀

使用 --limit 控制页面大小,并将上一响应中的 endCursor 与 --after 一起使用进行分页。

simulator:stop

停止 .env.eas-simulator 所引用的会话:

Terminal
- eas simulator:stop

停止指定的会话:

Terminal
- eas simulator:stop --id <session-id>

停止变更具有幂等性。

使用 --json 输出包含会话 id 和最终 status 的机器可读对象。

.env.eas-simulator

托管文件始终包含会话 ID:

.env.eas-simulator
EAS_SIMULATOR_SESSION_ID="<session-id>"

控制器连接变量取决于所选类型:

控制器连接变量
agent-deviceAGENT_DEVICE_DAEMON_BASE_URL、AGENT_DEVICE_DAEMON_AUTH_TOKEN
ArgentARGENT_TOOLS_URL,以及在需要时使用的 ARGENT_AUTH_TOKEN
AppiumAPPIUM_URL、APPIUM_CAPS

将该文件添加到 .gitignore:

.gitignore
.env.eas-simulator

会话运行期间不要修改其中的值。