# @expo/simulator-launcher 中文文档

规范地址：https://npmcn.com/package/%40expo/simulator-launcher/

版本：27\.10\.0
npm 元数据更新时间：2026-11-13T23:00:18.367Z
中文译文更新时间：2026-11-14T06:18:16.320Z
软件包许可：BUSL-1\.1

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40expo/simulator-launcher
原文对照：https://npmcn.com/package/%40expo/simulator-launcher/?lang=original
项目主页：https://github.com/expo/eas-cli#readme
源码仓库：https://github.com/expo/eas-cli

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.2 MB，5 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2026-10-30T00:36:45.312Z
- 最新版本发布：2026-11-13T23:00:18.005Z
- 近 30 天下载量：2598（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 14 个）

## 中文简介

关于EAS工人的模拟会议

## 安装

```sh
npm install @expo/simulator-launcher
```

也可以使用：`pnpm add @expo/simulator-launcher`、`yarn add @expo/simulator-launcher`、`bun add @expo/simulator-launcher`

## README

# @ expo/ 模拟发射器

准备 iOS 模拟器和本地工具,缓存 Expo Go 和 Appium 文件, 并准备声明会话 。 需要 macOS 。 (笑声).

用您想要准备的设备启动发射装置:

```sh
export EXPO_SIMULATOR_STARTUP=1
export EXPO_SIMULATOR_DEVICE="iPhone Duo,iPhone 18"
exec bunx @expo/simulator-launcher@latest start
```

## 图标

-   `start`: 为配置的设备运行一个孤儿服务图像 。 它的默认设备准备就绪 首先;背景中的其他设备会温暖。 默认时启动 .
-   `claim ENGINE [DEVICE]`: 保留一个任务并返回其选中的设备加上现有的服务器 身份、端口和证书。 引擎数 : `serve-sim`, (中文(简体) ), `agent-device`, (中文(简体) ), `argent`, (中文(简体) ), `appium`。 。 。 . 无 DEVICE 表示第一个配置的设备. 索赔不启动选定设备或等待 它的工具。 建造工具在现有的服务站端口上私下采用该设备.
-   `prepare-tools`: 收养后继续消费索赔。 保留全局Argent, 重复默认 代理设备跑道或为选定的设备准备跑道。 Appium等旧XCTest清理.
-   `stop`: 永久结束热身, 等待所有拥有的资源被清理.
-   `warmup`: 填充模拟器和本地工具缓存. 与 `EXPO_SIMULATOR_STARTUP=1`, (中文(简体) ), 电话 `prefetch`,将选中的模拟器拖出,安装 Expo Go 除非已禁用, 并等待 用于默认设备上的Argent和代理设备。 然后它会消耗自有的流程 并关闭 下移所选模拟器。 已准备好的文件和本地构建缓存仍然可用 . 不完全准备或清理失败 。 准备期限为10分钟;清理 需要更长的时间。 需要新的 macOS 靴子前 `start` 已经运行。 重复,或 `start` 之后 `warmup`,需要另一个靴子。 它不启动 Appium 会话或准备 二级装置上的探照器.
-   `prefetch`: 缓存所选的 Expo Go 存档用于再利用 。 与 `APPIUM_VERSION` 财务报告和审定财务报表 `XCUITEST_VERSION`,编写 Appium, XCUI Test 和 WebDriver Agent 文件。 它不获取服务图像、代理设备或Argent。 进取到stderr;命令在第一次失败时停止.

消费者使用 `start` 用于会话命令( e)`LAUNCHER_VERSION` 页:1 在另一个进程中运行这些 :

```sh
bun x "@expo/simulator-launcher@$LAUNCHER_VERSION" claim serve-sim
# After adoption confirms the selected device and native ACK:
bun x "@expo/simulator-launcher@$LAUNCHER_VERSION" prepare-tools
bun x "@expo/simulator-launcher@$LAUNCHER_VERSION" stop
```

在不启动设备的情况下缓存文件 :

```sh
simulator-launcher prefetch
```

还准备模拟器和本地工具(`warmup` 已通话 `prefetch`:

```sh
EXPO_SIMULATOR_STARTUP=1 simulator-launcher warmup
```

会话的通过要求支持端口设备的 service-sim 发布通过.

一个持久的状态文件, `/tmp/expo-simulator-startup.json`,持有生命周期,发射装置版本, 选中的设备、 服务器证书、 要求和本地身份 。 它独立于家庭/TMPDIR。 一个短的靴子瞄准锁 序列化更新; 已丢弃的锁失败关闭 。 状态范围为当前启动. `start` 使用提供的运行时包版本,并记录准确的版本输入为 `serveSimVersion`, (中文(简体) ), `agentDeviceVersion` 财务报告和审定财务报表 `argentVersion` 在这个状态和要求。 消费者 在重新使用之前,将明确的软件包请求与这些版本进行比较。 标记、范围和未设置输入 不报告确切的版本。 构建工具也使用 `serveSimVersion` 为了温暖的收养和录音.

## 环境

-   `EXPO_SIMULATOR_STARTUP=1` 允许热身.
-   `EXPO_SIMULATOR_PREINSTALL_EXPO_GO=0` 关闭博览会 去预先安装.
-   `EXPO_SIMULATOR_DEVICE` 是一个逗号分隔的精确设备名称或UDID的列表。 条目是 进行修剪,必须确定一个可用的设备。 第一种是默认. 未设置保存 最短可用的 iPhone 名称, 空或空白值也是如此 。 空列表条目缺失, 模糊或重复的设备显然失效.
-   `SERVE_SIM_VERSION`, (中文(简体) ), `AGENT_DEVICE_VERSION`, (中文(简体) ), `ARGENT_VERSION` (单位:千美元)`start`编号 :`warmup` 只: 运行时间 包选择,每个默认为 `latest`发射机不另设 版本搜索 。 选择准确版本的呼叫者可以在状态和主张中识别出它们. `prefetch` 忽略这些设置, 并且从不将其记录在 `prepared.json`。 。 。 .
-   `EXPO_GO_SDK_VERSION`: 选择 SDK 用于 `prefetch` 财务报告和审定财务报表 `start` 带有 https iOS 模拟器存档 在博览会的API版本中。 取消设置 选择最近的 SDK 稳定; 针头必须是 `x.y.z` 选择 a β。 (中文(简体) ). `start` 当SDK/存档元数据与所供应的SDK匹配时,或当 没有提供 SDK 。 不匹配元数据, 启动使用此变量从 API 中选择 或最新稳定SDK。 忽略当 `EXPO_SIMULATOR_PREINSTALL_EXPO_GO=0`。 。 。 .
-   `APPIUM_VERSION`, (中文(简体) ), `XCUITEST_VERSION` (单位:千美元)`prefetch` 仅限:准确版本(`x.y.z`),两者或 也没有。 任何其他价值 `prefetch` 失败.
-   `AGENT_DEVICE_STATE_DIR`, (中文(简体) ), `ARGENT_EVENT_LOG`: 工具状态/输出位置.
-   代理设备闲置计时器默认关闭 。 覆盖 `AGENT_DEVICE_DAEMON_IDLE_TIMEOUT_MS` 财务报告和审定财务报表 `AGENT_DEVICE_IOS_RUNNER_IDLE_STOP_MS` (毫秒数).

## 编写文件

`prefetch` 写入 `expo-go/` 财务报告和审定财务报表 `appium/` 下级 `~/Library/Caches/expo-simulator-startup/`,以及 每个步骤跳过时都删除。 每个读者在使用之前检查文件 否则会运行正常的下载或安装。 重用已准备好的文件时保留这些目录 .

-   `expo-go/<sha256 of the archive URL>.tar.gz`数字 : `start` 在其 SDK 匹配时使用已记录的 URL 或当未提供 SDK 时。 它检查文件与 `gzip -t` 在此之前 提取。 从该 URL 再次下载了丢失或被损坏的归档 .
-   `appium/`: Appium家有被钉住的xcitest司机和WebDriverAgent跑车. 在记录前先检查跑者捆绑的元数据并可执行. 构建工具, 当文件匹配表和 Appium 匹配当前时重用它 解决明确版本的请求,包括范围和 `latest`。没有覆盖, 的版本必须满足默认的 Appium 3 范围。 构建工具不写入或 把这里搬走 这些检查不加载驱动程序或发射 WDA; 验证再使用 真实的 Appium 会话.

### 编制工具清单

`prefetch` 写入 `~/Library/Caches/expo-simulator-startup/prepared.json` 在接到所有请求后 步骤和临时文件清理成功。 在刷新缓存之前, 它会删除以前的 显出. 跳过的工具没有出现在新清单中;失败的准备不会发布新的工具 .

JSON有一个 `tools` 地图 :

-   `appium.version`, (中文(简体) ), `appium.xcuitest`, (中文(简体) ), `appium.home`: 准备的Appium和XCUI Test版本 绝对的Appium家道。 本条目仅在WDA准备成功后才被写入.

当博览会启动时, `expo-go.sdk` 财务报告和审定财务报表 `expo-go.url` 内 `tools` 记录其选定的 SDK 并存档 URL. SDK识别出所选的"博览会"发行版本,而不是应用程序的二进制版本. 步入尽头 已禁用或未设置,列表为 `{"tools":{}}`。 。 。 .

`start` 只读可选的博览会 从此列表中选择。 缺少或无效的博览会 元数据,或不同提供的SDK的元数据,使用普通的SDK/存档选择. 遗产 service-sim,代理设备与Argent条目被忽略,包括错误的条目. 精确的 CLI 版本输入只记录在当前的启动状态和声明中.

共享构建工具 `readPreparedSimulatorToolAsync(tool, schema)` 阅读器从 `tools` 使用消费者的计谋。 每个消费者在重复使用前检查相容性. 失踪, 无效或更长的元数据是缓存错失,并使用正常的设置.

保存博览会的档案 和整个Appium的家, 不仅仅是名单。 亚平的家 必须在同一个用户的下方记录路径。 重运行 `prefetch` 以重生标本 当更改版本时。 元数据不能证明驱动程序加载或 WDA 启动; 验证 Appium再利用与真实会话.

## 边界

原生热能仍然运行服务-sim,代理-device和Argent. Bun 可能缓存他们的包作为侧面 效果;这些附带缓存被保留。 呼叫者提供请求的软件包选择 ,而Bun重复使用匹配文件或获取请求的版本。 原生建筑缓存 复用取决于所选的版本和设备.

-   准备就绪意味着默认设备启动并服务-sim答案. Apsd步骤和博览会 在所有列出的设备上,在背景中运行。 索赔不等待他们;停止 加入他们. 第二个设备可能尚未启动 。 它的启动失败让默认值可用 . 索赔保留一个装置;它没有报告该装置准备就绪。 私人收养必须确认 相同的服务器 PID/ port, 选中的设备准备状态和工具设置前的本地视频/ 抓取 并应用动作。 工作时间版本和认证检查仍然具有权威性.
-   代理设备仅在默认设备上启动 。 次要索赔准备在 收养和老人清理结束。 一个设备独立的Argent服务器被重新用于声称的设备. Appium等待未使用的工具停止后再开始自己的WDA.
-   Warmup 使用已准备好的 Expo Go 选择,或者在没有时使用独立的 SDK 选择,一次从 前置归档( 参见 [编写文件](https://npmcn.com/package/%40expo/simulator-launcher/#readme-prepared-files))或通过下载,再用于第二个设备. 每个初始设备都得到一个预安装尝试;普通故障警告. B. 防止索赔的新情况 预安装. `prepare-tools` 等待仍在所主张设备上运行的安装 报告它的版本, 因为任务安装它的应用程序下一个 。 继续安装在其他设备上; 收养可能会关闭这样的设备,然后安装失败并发出警告。 终端站 排出它们和下载清理。 任务应用程序安装保留 权威。 替换不再预先安装. `ffmpeg` 必须在路径上可用.
-   开始尝试一次,每个靴子接受一次索赔。 清理失败后, 绝不允许再有会话 . Stop的调用暂停不是全球清理的最后期限,也不是完成拆分的证明. 一个建材工具声称在确认终端清理后才会使用正常的启动.

索赔和工具JSON包括证书;将其捕获,而不是将其流到工作日志上.

## 常见问题

### @expo/simulator-launcher 是什么？

关于EAS工人的模拟会议

### 如何安装 @expo/simulator-launcher？

在项目目录运行 npm install @expo/simulator-launcher，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 simulator-launcher，可以用 npx simulator-launcher 直接运行。

### @expo/simulator-launcher 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/expo\_\_simulator-launcher 是否存在。

### @expo/simulator-launcher 可以商用吗？

@expo/simulator-launcher 使用 BUSL-1\.1 许可。声明的许可为 BUSL-1\.1，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @expo/simulator-launcher 的下载量有多少？

根据 npm 官方下载统计，@expo/simulator-launcher 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,598 次，日均约 87 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @expo/simulator-launcher 还在维护吗？

最新版本 27\.10\.0 发布于 2026/11/14（今天）；至今共发布 14 个版本，其中过去 12 个月发布了 14 个；首次发布于 2026/10/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

