ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Baguette serve 路由参考:以 HTTP/WS API 编程式驱动 iOS 模拟器的完整清单

Baguette serve 路由参考:以 HTTP/WS API 编程式驱动 iOS 模拟器的完整清单 Baguette serve 路由参考以 HTTP/WS API 编程式驱动 iOS 模拟器的完整清单【免费下载链接】baguetteHeadless control for Apples Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm项目地址: https://gitcode.com/gh_mirrors/baguette/baguetteBaguette是面向 Apple iOS 模拟器的 Headless 控制工具而baguette serve内置了一个开箱即用的 HTTP WebSocket 服务器一条命令启动后你就可以通过 30 多条 REST 路由和 6 条 WS 通道编程式完成模拟器启动/关机、点击滑动等多指手势、60 fps 实时视频流、截图、3D 渲染、GPS/运动/网络注入等操作。本文是一份完整的 serve 路由参考清单帮助你快速用脚本、CI 流水线或自己的网页驱动 iOS 模拟器。快速启动模拟器控制服务器默认监听http://127.0.0.1:8421启动后浏览器打开根路径即可看到设备列表页baguette serve # http://127.0.0.1:8421/simulators常用参数完整说明见 docs/commands.md参数默认值说明--port8421监听端口--host127.0.0.1绑定的网卡 / 主机--allowed-hosts无额外信任的 Host/Origin可重复*.example.com匹配子域--plugin-dir无额外插件目录同名时遮蔽已装插件--no-plugins关忽略所有已安装插件参数解析实现见 ServeCommand.swift。路由设计三原则UDID 在路径格式看扩展名 Baguette serve 的路由刻意做成了一棵资源树没有任何/api/前缀规则非常直白UDID 永远在路径里/simulators/:udid/…一台设备就是一个命名空间格式由文件扩展名决定screenshot.jpg给 JPEG、screenshot.png给 PNG、simulators.json给 JSON薄处理器无模板服务器只把领域值投影成 JSON / PNGUI 全部由 Resources/Web/ 下的静态 HTML/JS 承担。设备生命周期路由开机、关机、列设备方法路径作用GET/simulators设备列表页含 Boot / Shutdown 按钮GET/simulators.json{running, available}与baguette list --json相同POST/simulators/:udid/boot启动模拟器POST/simulators/:udid/shutdown关机一个典型的 CI 脚本序列就是GET /simulators.json找设备 →POST …/boot→ 测试 →POST …/shutdown。手势输入路由POST 一个 JSON 信封即可POST /simulators/:udid/input是编程式驱动模拟器的核心路由请求体放一个手势信封JSON响应体返回 ack。信封协议与baguette input共享完整定义见 docs/wire.md。支持的手势类型一览type用途关键点tap单击必填width/heightedge可触发 Home Indicator 等系统手势swipe滑动服务端插值duration默认 0.25stouch1-down/move/up单指流式触摸拖动、Home/App Switcher 拖拽、下拉通知中心touch2-down/move/up双指流式触摸实时捏合、旋转、双指平移pinch/pan一次性捏合 / 双指平移服务端自动插值 10 步scroll滚轮滚动deltaY为负即内容上移button实体按键home、lock、volume-up、action等key/type按键 / 输入文本W3C 键码仅 US-ASCII其余请用paste三个最容易踩的坑✅ 坐标是设备点points不是像素3× 屏用像素会偏 3 倍✅width/height取自describe-ui的screen.width/height每台设备不同438×954 只是 iPhone 17 Pro Max✅ 返回{ok:true}只代表已发送不代表屏幕有反应。60 fps 流式路由一个 WebSocket 扛下整个会话WS /simulators/:udid/stream?formatmjpeg|avcc是全双工的整场观看会话服务器 → 页面每条二进制消息一帧编码画面。MJPEG 直接发 JPEG 字节AVCCH.264用 1 字节标签0x01avcC 描述、0x02关键帧、0x03增量帧、0x04JPEG 种子帧页面 → 服务器文本 JSON包括流控制set_bitrate/set_fps/set_scale/force_idr/snapshot与手势信封二者共用同一通道。没有旁路事件路由也没有按 UDID 的注册表——socket 打开多久流就持续多久断开即停止采集。同族路由通道用途WS …/stream.3d.mjpeg/.avcc3D 舞台实时流可set_3d_camera旋转设备模型WS …/logs?levelpredicatebundleId实时统一日志unified logWS …/camera虚拟摄像头控制camera_start/camera_stop等截图与 UI 结构路由单帧画面 无障碍树方法路径说明GET/simulators/:udid/screenshot.jpg/.png单帧截图支持quality、scale、size、fit、background查询参数GET/simulators/:udid/screenshot-bezel.png画面嵌在设备边框里的合成图buttons控制按键GET/simulators/:udid/describe-ui.json?xy无障碍树带xy时对该点做命中测试GET/simulators/:udid/definition.jsonSDK 引导数据身份、屏幕矩形、边框 URL、按键系统环境注入路由姿态、铰链、位置、网络模拟真实世界条件全部走简单 REST姿态POST /simulators/:udid/orientation?valueportrait|landscape-left|…POST …/shake触发运动摇一摇铰链iPhone DuoGET/POST …/hinge支持pose、angle、duration折叠与回正GPSPOST/DELETE …/location设置模拟位置删除即清除网络限速GET/POST/DELETE …/network注入弱网条件CoreMotionGET/POST/DELETE …/motion注入计步、姿态等运动数据状态栏GET/POST/DELETE …/status-bar覆盖时间与电量显示系统界面GET/POST …/interface.json调外观、对比度、文字大小。文件、摄像头与 Deep Link 路由方法路径作用POST/simulators/:udid/files按扩展名上传文件到模拟器POST/simulators/:udid/apps安装 App 归档POST/simulators/:udid/media照片导入 Photos 图库POST/simulators/:udid/camera-source?name为摄像头准备一张图 / 一段视频POST/simulators/:udid/openurl?url打开 Deep LinkGET/simulators/:udid/schemes.json?q查询设备已注册的 URL Scheme插件与 Bakery 路由把控制能力装进服务器方法路径作用GET/plugins.json已安装插件的 manifest 清单POST/plugins/:id/commands/:cmd?udid执行一条插件贡献的命令GET/bakeries.json受信任的 bakery插件仓库与固定 commitPOST/bakeries/preview、/bakeries/install读取菜单 / 从受信来源安装插件每次调用都会拿到一个一次性能力凭据grant凭据只带 manifest 声明的能力命令结束即失效——这是它敢对网络暴露的原因。物理设备孪生与伴生屏幕预览GET /devices.json、WS /devices/:udid/…物理设备 twinvideo / motion 摄入、镜像流GET …/companion-screens.jsonCarPlay 屏 配对手表POST …/carplay-display挂载 CarPlay 平面流式通道加displaycarplay即可投到 CarPlay。安全须知只信任回环 Origin⚠️ 服务器只信任回环的Host/Origin经反向代理的请求会得到403 forbidden origin。放行代理域名子域可用通配baguette serve --allowed-hosts sim.example.com --allowed-hosts *.example.com其他跨站 Origin 一律拒绝插件则走各自的 grant 凭据不受此限制。完整路由速查表类别路由文档设备GET /simulators、/simulators.json、POST …/boot、…/shutdownboot输入POST …/inputwire.md画面GET …/screenshot.{jpg,png}、…/streamWS、…/stream.3d.*WSscreenshot、3d-rendering环境POST …/orientation、…/shake、…/location、…/motion、…/network、GET/POST …/hinge、…/status-bar各 feature README内容POST …/files、…/apps、…/media、…/camera-source、…/openurlfile-upload扩展/plugins.json、/plugins/:id/commands/:cmd、/bakeries.jsonplugins静态页/farm设备农场页、/302 →/simulators、Resources/Web/静态资源device-farm一行一格的原始表格见官方文档 docs/serve.md。延伸阅读与源码索引路由权威清单docs/serve.md手势 JSON 信封与坐标约定docs/wire.md服务器参数docs/commands.md服务器为什么是薄处理器设计docs/ARCHITECTURE.md路由实现入口Server.swift、ServeCommand.swift小结baguette serve把整个 iOS 模拟器变成了一组可预测的 HTTP/WS 资源——UDID 定设备、扩展名定格式、JSON 信封定手势。掌握上面这份清单你就能在脚本、CI 或自定义面板里像调用普通 API 一样驱动模拟器、录 60 fps 画面并注入真实的环境条件。【免费下载链接】baguetteHeadless control for Apples Simulators — 3D models, taps, swipes, multi-finger gestures, 60 fps streaming, and a multi-device farm项目地址: https://gitcode.com/gh_mirrors/baguette/baguette创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表