关于 test-with-simulator
为 Even Hub 应用开发者提供使用 evenhub-simulator 测试应用的指南,可通过键盘和鼠标模拟眼镜手势,并检查显示与音频。模拟器不能替代真机验证。
主要功能
- 01键盘和鼠标映射为手势
- 02配置显示效果与音频输入
- 03导出显示截图
- 04通过 Web 检查器调试
适用场景
- 01迭代应用布局和交互逻辑
- 02测试音频输入处理
- 03在部署前识别需真机验证的功能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ even-realities/ everything-evenhub --skill test-with-simulator安装后在 Claude Code 中输入/test-with-simulator确认已加载。
详细介绍
模拟器是硬件测试的补充,而非替代品。
安装
npm install -g @evenrealities/evenhub-simulator
版本:v0.7.1。跨平台支持:macOS、Linux、Windows。
基本用法
evenhub-simulator http://localhost:5173
evenhub-simulator -g http://localhost:5173 # with glow effect
evenhub-simulator -b spring http://localhost:5173 # with spring bounce
evenhub-simulator -c ./my-config.toml http://localhost:5173 # custom config
CLI 参考
| 选项 | 说明 |
|---|---|
-c, --config <path> | 配置文件路径 |
-g, --glow | 启用眼镜显示屏的发光效果 |
--no-glow | 禁用发光效果(覆盖配置) |
-b, --bounce <type> | 弹跳动画:default 或 spring |
--list-audio-input-devices | 列出可用的音频输入设备 |
--aid <device> | 选择特定的音频输入设备 |
--no-aid | 使用默认音频设备(覆盖配置) |
--print-config-path | 输出默认配置文件路径并退出 |
--automation-port <port> | 在此端口启动自动化 HTTP 服务(例如 9898) |
--completions <shell> | 生成 shell 补全:bash、elvish、fish、powershell、zsh |
-V, --version | 输出版本 |
-h, --help | 输出帮助信息 |
配置文件路径
| 平台 | 位置 |
|---|---|
| macOS | ~/Library/Application Support/ |
| Linux | $XDG_CONFIG_HOME 或 ~/.config/ |
| Windows | {FOLDERID_RoamingAppData} |
使用 evenhub-simulator --print-config-path 查看确切路径。
模拟器输入
键盘和鼠标输入映射为眼镜手势:
| 输入 | 眼镜上的对应操作 |
|---|---|
| 向上 | 向上滑动 / 向上滚动 |
| 向下 | 向下滑动 / 向下滚动 |
| 单击 | 单击 |
| 双击 | 双击 |
音频测试
- 采样率:16000 Hz
- 格式:有符号 16 位小端 PCM
- 每个事件的数据:100ms(3200 字节 / 1600 个样本)
- 列出设备:
--list-audio-input-devices - 选择设备:
--aid <device-id> - 音频数据通过
event.audioEvent.audioPcm(Uint8Array)传入
截图
点击模拟器显示屏,即可将 RGBA PNG 导出到当前工作目录。文件名基于时间戳生成。文件路径会显示在 stdout 和眼镜 Web 检查器控制台中。
调试提示
- 原始负载错误:
RUST_LOG=debug evenhub-simulator <url>— 记录原始负载解析错误 - Web 检查器:模拟器托管一个 WebView — 使用浏览器开发者工具检查控制台、网络和 DOM
- eventSource:在模拟器中硬编码为
1(TOUCH_EVENT_FROM_GLASSES_R) - onDeviceStatusChanged:不会触发 — 模拟器中的配置文件为硬编码
模拟器与硬件的差异
| 功能 | 模拟器 | 真实眼镜 |
|---|---|---|
onDeviceStatusChanged | 不会触发(硬编码) | 实时状态更新 |
eventSource | 硬编码为 1 | 实际输入来源(左/右臂、戒指) |
imuData | 始终为 null | 启用时提供真实的 IMU x/y/z 数据 |
| 字体渲染 | 近似效果 | 固件 LVGL 字体 |
| 列表滚动 | 可能与硬件不同 | 原生固件滚动 |
| 图像内存 | 不强制限制 | 受硬件内存限制 |
| 错误处理 | 边缘情况下可能不同 | 硬件行为 |
开发注意事项
- 布局与逻辑 — 模拟器适用于可靠地迭代
- 列表滚动体验 — 发布前在硬件上验证
- 图像内存限制 — 在代码中实施大小限制;模拟器不会检测违规情况
- 设备状态流程 — 仅在硬件上测试;
onDeviceStatusChanged在模拟器中永远不会触发 - IMU 功能 — 无法在模拟器中测试;
imuData始终为null - 多输入来源 — 模拟器仅会发出右臂触摸输入(
eventSource= 1)
典型工作流
npm run dev # Start dev server
evenhub-simulator -g http://localhost:5173 # Launch simulator
# Interact via keyboard/mouse
# Click display to take screenshots
# Iterate on code — auto-reloads
# Validate on real hardware before deploy
Shell 补全
evenhub-simulator --completions zsh > ~/.zsh/completions/_evenhub-simulator
evenhub-simulator --completions bash > /etc/bash_completion.d/evenhub-simulator
evenhub-simulator --completions fish > ~/.config/fish/completions/evenhub-simulator.fish
任务
$ARGUMENTS
评论
支持 Markdown