Universal mobile devtool for Agents & Humans - control iOS Simulators, Android Emulators, and real devices from a single dashboard and CLI 面向代理与人类的通用移动开发工具 - 从单一仪表盘和命令行界面控制 iOS 模拟器、Android 模拟器以及真实设备
通用移动开发工具 —— 通过单个仪表板和命令行控制 iOS 模拟器、Android 模拟器和真实设备
npx simvyn
启动本地服务器,在浏览器中打开Web仪表盘,并自动发现所有已连接的模拟器、仿真器和USB连接的物理设备。
## 安装
**全局安装:**```bash
npm install -g simvyn
一次性使用(无需安装):```bash npx simvyn
**要求:**
- Node.js >= 22.12.0
- macOS(完全支持iOS + Android)或Linux(仅Android)
## 功能特性
- **设备管理** — 发现、启动、关机、擦除、创建和克隆模拟器、仿真器及物理设备,支持收藏置顶
- **应用管理** — 通过拖放或CLI安装、启动、终止、卸载应用
- **日志查看器** — 实时流式输出,支持等级过滤、页面内搜索(Cmd+F)、正则搜索、分页和导出
- **位置模拟** — 设置GPS坐标,播放GPX/KML路线,支持速度控制,保存常用位置
- **设备设置** — 深色模式、语言区域、方向、权限、状态栏覆盖、无障碍预设
- **截图与录屏** — 截取屏幕截图和录制屏幕视频,带历史记录
- **深度链接** — 打开URL和自定义协议,按应用保存收藏
- **数据库检查器** — 浏览SQLite表,运行SQL查询,查看SharedPreferences和NSUserDefaults
- **文件浏览器** — 浏览应用沙盒,上传/下载文件,内联编辑文本
- **推送通知** — 编写JSON负载,发送到iOS模拟器,模板库
- **集合** — 将设备操作打包为可重用序列,一次应用到多个设备
- **崩溃日志** — iOS诊断报告和Android logcat/tombstone崩溃信息
- **剪贴板** — 读取和写入设备剪贴板内容
- **媒体** — 推送照片和视频到设备相机胶卷和图库
- **工具设置** — 服务器配置、存储管理、诊断和调试报告
- **物理设备支持** — 通过USB连接物理Android和iOS设备,自动发现
- **Web仪表板** — 苹果Liquid Glass设计,命令面板,键盘导航
- **完整CLI** — 每个功能都可通过 `simvyn <command>` 无头运行
## 模块展示
### 设备管理
在一个统一列表中查看所有已连接的iOS模拟器、Android仿真器以及通过USB连接的物理设备。无需接触Xcode或Android Studio即可启动、关机和擦除设备。通过选择设备类型和运行时创建新的iOS模拟器,或克隆现有模拟器以快速生成副本。物理设备在插入时自动出现,并在设备选择器中单独分组。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/2b85641878f6015c248311700a1a87a20476ade6c930273a3e47f288a82d6d2e.png" alt="设备管理" width="700" /></p>
- 列出所有可用的模拟器、仿真器和跨平台物理设备
- 单击或通过CLI命令启动、关机和擦除设备
- 创建新的iOS模拟器,支持设备类型和运行时选择
- 克隆并重命名现有模拟器
- 将常用设备置顶收藏到设备选择器顶部
- 通过WebSocket实时更新设备状态
### 应用管理
在任何已连接设备上安装、启动、终止和卸载应用。将IPA、APK或iOS模拟器.app包直接拖放到仪表板。查看详细的应用程序信息,清除应用数据,无需手动执行adb或simctl命令。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/17757b1ca8ddd41d43ac3a159260598308da6c3f759e1c9d730f61498e18ce8a.png" alt="应用管理" width="700" /></p>
- 拖放安装IPA、APK和iOS模拟器.app
- 按包ID启动、终止和卸载应用
- 查看应用详情,包括版本、大小和权限
- 清除Android设备上的应用数据
- 列出所有已安装的应用,支持搜索过滤
### 日志查看器
实时流式传输设备日志,支持强大的过滤功能。按日志级别过滤,使用正则表达式搜索,按进程名称过滤。使用页面内搜索(Cmd+F)高亮显示特定条目,而不隐藏周围的上下文。导出过滤后的日志以供共享或归档。分页历史记录可向后滚动浏览数千条条目,而不会出现性能问题。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/b909b3515637b4059ebf210c56599f2f022506f09ee35a11e812bd8368d3750e.png" alt="日志查看器" width="700" /></p>
- 通过WebSocket实时日志流
- 按级别过滤:调试、信息、警告、错误、致命
- 页面内搜索(Cmd+F),支持匹配高亮、导航和计数
- 正则搜索和进程名称过滤
- 分页历史记录,支持虚拟滚动
- 将过滤后的日志导出到文件
- 暂停/恢复日志流,同时保持状态在清除操作后保持不变
### 位置
使用交互式地图或手动输入在任何设备上设置精确的GPS坐标。播放GPX和KML路线文件,支持可调速度控制。将常用位置保存为收藏,以便快速访问。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/47842dfa878ffbc80bd5bb32d83e820e7ed7dd56a4d63368ca6e823ef72889d4.png" alt="位置" width="700" /></p>
- 交互式地图,点击设置坐标
- 播放GPX和KML路线文件,支持速度控制
- 按设备保存常用位置收藏
- 多设备位置广播
- 反向地理编码,显示人类可读地址
### 设备设置
切换深色模式,更改语言区域,旋转设备方向(Android),管理应用权限,覆盖状态栏外观。应用无障碍预设,测试应用在不同条件下的表现。所有设置更改会立即在目标设备上生效。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/d3f6a33c17b773560072f7b94b71abd5ebc82786c073bdeb6d25f828c3f214fa.png" alt="设备设置" width="700" /></p>
- 切换深色/浅色模式
- 更改设备语言区域
- 管理应用权限
- 覆盖状态栏(时间、电量、信号)
- 无障碍预设(加粗文本、增加对比度、内容大小)
### 截图与录屏
在任何设备上截取屏幕截图和录制屏幕视频。所有截图都带有时间戳并组织在可浏览的历史记录中。直接从仪表板下载或删除截图。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/58ed8f25d148ed53f39066e42be730f255235dbec47539bbec826c455cba7936.png" alt="截图与录屏" width="700" /></p>
- 一键截取屏幕截图
- 屏幕录制,支持开始/停止控制
- 带时间戳的截图历史记录
- 从仪表板下载和删除截图
### 深度链接
在任何设备上打开URL和自定义URI协议。将常用深度链接保存为按应用组织的收藏。测试应用的深度链接处理,无需在终端中手动输入URL。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/3a990ef7c74f83c93b63c1654f74b3fa952b0b41abd31fe688cdaf2e29570f62.png" alt="深度链接" width="700" /></p>
- 在设备上打开任何URL或自定义协议
- 按应用保存常用深度链接收藏
- 链接历史记录,按最近优先排序
- 同时支持iOS和Android
### 数据库检查器
浏览任何应用沙盒内的SQLite数据库。查看表结构,运行任意SQL查询,检查SharedPreferences(Android)或NSUserDefaults(iOS)。内联编辑值,无需编写脚本。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/4884b688dbbee5f1a34b0454950f4d6562e74efdbbb3b84ca5c626835b4b7d37.png" alt="数据库检查器" width="700" /></p>
- 浏览SQLite表,支持可排序列
- 运行任意SQL查询
- 查看和编辑SharedPreferences及NSUserDefaults
- 内联单元格编辑,支持类型检测
### 文件浏览器
浏览任何已安装应用的沙盒文件系统。导航目录,上传和下载文件,内联编辑文本文件。在机器和设备之间传输文件,无需手动执行adb pull/push命令。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/7b7ba540ad5de8b575da4f9bb28694dc68f5ffce51225a388788b8ef2f4767a0.png" alt="文件浏览器" width="700" /></p>
- 浏览应用沙盒目录
- 上传和下载文件
- 内联文本文件编辑
- 支持iOS和Android应用容器
### 推送通知
编写JSON推送通知负载并发送到iOS模拟器。使用内置模板库作为起点,或从头编写负载。实时JSON验证可在发送前突出显示错误。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/f640654be67c24c7248806987e62908316407c18648fc145109118f260443f7d.png" alt="推送通知" width="700" /></p>
- 编写并向iOS模拟器发送推送负载
- 内置负载模板库
- 实时JSON验证
- 按包ID定位特定应用
### 集合
创建可重用的设备操作集,并一次应用到多个设备。集合将设置位置、切换深色模式、安装应用等步骤打包到一个可重复的工作流中。simvyn附带了三个入门预设供您使用。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/fbf2ddbba1d3725321c80a914bf5b71ea6a2fc605fddbb73abd0b28385488af6.png" alt="集合" width="700" /></p>
- 创建、复制和管理命名集合
- 浏览跨所有模块的分类操作目录
- 拖放重新排序步骤
- 应用到多个设备,支持兼容性检查
- 三个内置入门预设
### 崩溃日志
查看iOS诊断报告(.ips文件)以及来自logcat和tombstone转储的Android崩溃日志。浏览带有时间戳和进程信息的崩溃条目。查看完整的崩溃详情,无需深入设备文件系统。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/8f74a799448050bc37eace1d43865b13f3f47a0997c01dba650fd21e94f09ebf.png" alt="崩溃日志" width="700" /></p>
- 解析iOS诊断报告(.ips)
- Android logcat崩溃按PID和标签分组
- 检索Android tombstone转储
- 带时间戳的崩溃列表,支持详情视图
### 剪贴板
从仪表板或CLI读取和写入设备剪贴板。适用于快速粘贴测试数据到应用中,或检查应用复制的内容。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/db889032abeb5f1d511dcfeb8c06c215bda851436f198a63db97f595b50853d6.png" alt="剪贴板" width="700" /></p>
- 读取当前剪贴板内容
- 将文本写入设备剪贴板
- 支持iOS模拟器和Android仿真器
### 媒体
将照片和视频直接推送到设备的相机胶卷或图库。将文件拖放到仪表板,无需线缆、电子邮件或云传输即可注入。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/c63ce5411dc17b5d329c2af381c035d86164f5544928b0c76fe7d05346473561.png" alt="媒体" width="700" /></p>
- 通过拖放将照片和视频添加到设备图库
- 支持高达500 MB的大文件
- 支持iOS模拟器和Android仿真器
### 工具设置
配置simvyn服务器,管理存储,查看诊断信息。包含用于提交问题的调试报告生成器。
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/12264/7ba043d473d21d4bb5477582539ffd9a4c57600ec20c22ee9d7e63146cbbfbb2.png" alt="工具设置" width="700" /></p>
- 服务器端口、自动打开和轮询间隔配置
- 存储使用概览,支持数据清除选项
- 诊断信息:Xcode版本、devicectl可用性、adb版本
- 一键生成调试报告,用于提交Bug
## 集合指南
集合让您将多个设备操作打包成一个可重复使用的序列,并一键应用到任意设备组合。
### 创建集合
从侧边栏打开集合面板。点击 **新建集合** 并为其命名。集合初始为空——您需要从操作目录中添加步骤。
### 添加步骤
点击 **添加步骤** 浏览分类操作目录。操作按模块组织——设备设置、位置、应用管理等。选择一个操作,内联配置其参数(坐标、包ID、切换值),它就会出现在您的集合中。拖放步骤以重新排序。
### 应用集合
点击 **应用** 打开应用模态窗口。从设备列表中选择一个或多个目标设备。兼容性摘要会显示哪些步骤将在不兼容的平台上被跳过(例如,Android设备上的仅iOS操作)。按 **Cmd+Enter** 执行。一个实时状态矩阵会显示每个步骤、每个设备的实时进度。
### 命令面板集成
保存的集合会出现在命令面板(**Cmd+K**)中。按名称搜索集合,并通过设备选择器直接应用——无需导航到集合面板。
### 启动集合
simvyn附带了三个内置预设:
- **深色模式 + 日语区域** — 启用深色模式并将区域设置为日语
- **截图设置** — 配置状态栏覆盖,用于干净的App Store截图
- **重置设备状态** — 清除位置、重置设置并擦除应用数据
### CLI 用法```bash
simvyn collections list # List all collections
simvyn collections apply <name> <devices...> # Apply a collection to devices
所有功能均可通过命令行访问。直接运行 simvyn(不带参数)可启动仪表盘,或使用以下任一命令进行无界面操作。
simvyn 将 xcrun simctl(iOS 模拟器)、xcrun devicectl(iOS 物理设备)和 adb(Android)统一封装在同一接口下。无需 SDK——可与任何应用配合使用,无需更改代码。
其架构基于模块系统,每个功能(位置、日志、应用管理等)都是一个独立的插件,分别注册自己的 API 路由、CLI 命令和 WebSocket 处理程序。Web 仪表盘通过一个多路复用 WebSocket 连接与本地 Fastify 服务器通信,实现实时设备状态和日志流传输。对于特定设备类型不支持的功能,界面会自动禁用并显示清晰提示。
| 平台 | iOS 模拟器 | iOS 设备 | Android 模拟器 | Android 设备 |
|---|---|---|---|---|
| macOS | 是 | 有限支持 | 是 |
通过 USB 连接的物理设备会自动与模拟器一同发现。仪表盘将它们分别归入不同分区(物理设备/模拟器/仿真器),并在设备断开连接时显示通知。
Android 物理设备支持几乎所有功能——应用管理、深层链接、日志、截屏、数据库检查器、文件浏览器等。少数仅限仿真器的功能(通过 adb emu geo 的位置模拟、电池模拟)不可用,并在界面中明确标注。
iOS 物理设备需要 Xcode 15+,底层使用 xcrun devicectl。支持的功能包括设备发现、应用安装/卸载/启动/终止、应用列表、深层链接和文件复制。许多依赖 simctl 的功能(截屏、屏幕录屏、位置模拟、剪贴板、外观、状态栏、推送通知)在 iOS 物理设备上不可用。不支持的控件会被禁用,并附带工具提示说明原因。集合功能会自动跳过不适用于物理设备的步骤。
MIT
| 命令 | 描述 |
|---|
simvyn | 启动仪表盘(默认) |
simvyn device list | 列出所有设备 |
simvyn device boot <device> | 启动设备 |
simvyn device shutdown <device> | 关闭设备 |
simvyn device erase <device> | 擦除设备内容和设置 |
simvyn device create <name> <type> <runtime> | 创建新的 iOS 模拟器 |
simvyn device clone <device> <name> | 克隆 iOS 模拟器 |
simvyn device rename <device> <name> | 重命名 iOS 模拟器 |
simvyn device delete <device> | 删除 iOS 模拟器 |
simvyn location set <device> <lat> <lng> | 设置 GPS 坐标 |
simvyn location route <device> <file> | 播放 GPX/KML 路线 |
simvyn location clear <device> | 清除模拟位置 |
simvyn app list <device> | 列出已安装的应用程序 |
simvyn app install <device> <path> | 安装 IPA、APK 或 iOS 模拟器 .app |
simvyn app uninstall <device> <bundle-id> | 卸载应用程序 |
simvyn app launch <device> <bundle-id> | 启动应用程序 |
simvyn app terminate <device> <bundle-id> | 终止应用程序 |
simvyn app info <device> <bundle-id> | 显示应用详情 |
simvyn app clear-data <device> <bundle-id> | 清除应用数据(Android) |
simvyn logs <device> | 流式输出设备日志 |
simvyn screenshot <device> | 截取屏幕截图 |
simvyn record <device> | 录制屏幕 |
simvyn link <device> <url> | 打开深层链接 |
simvyn push <device> | 发送推送通知 |
simvyn fs ls <device> <bundle-id> [path] | 列出应用沙箱中的文件 |
simvyn fs pull <device> <bundle-id> <path> | 下载文件 |
simvyn fs push <device> <bundle-id> <src> <dst> | 上传文件 |
simvyn db list <device> <bundle-id> | 列出数据库 |
simvyn db query <device> <bundle-id> <db> <sql> | 运行 SQL 查询 |
simvyn db prefs <device> <bundle-id> | 查看 SharedPreferences / NSUserDefaults |
simvyn keychain add <device> <cert> | 添加根证书 |
simvyn keychain reset <device> | 重置钥匙串 |
simvyn collections list | 列出所有集合 |
simvyn collections show <id> | 显示集合详情 |
simvyn collections create <name> | 创建新集合 |
simvyn collections delete <id> | 删除集合 |
simvyn collections duplicate <id> | 复制集合 |
simvyn collections apply <name> <devices...> | 将集合应用到设备 |
simvyn settings orientation <device> <orient> | 设置设备方向(Android) |
| 是 |
| Linux | 否 | 否 | 是 | 是 |