iPhone 底层自动化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_d8831e99/pymobiledevice3-iphone 技能。
技能介绍
为什么还要做一套底层方案
基于 QuickTime 投屏的旧方案把操作建立在「看到画面 → OCR → 鼠标点击」这条链路上。它的天花板由窗口位置、分辨率和 OCR 精度共同决定:截图是窗口级而非像素级,点击是屏幕坐标而非设备坐标,剪贴板和应用管理则完全不在能力范围内。一旦自动化脚本需要稳定地驱动一台 iPhone,这套间接链路的误差就会逐次累积。
本技能改为通过 USB 协议直接与设备通信,把操作下沉到系统服务层,绕开屏幕和 OCR 这两个中间环节。
核心能力
- 截图:
core-device screen-capture直接产出像素级原图,不经过窗口截取,尺寸与设备屏幕一致,单张 PNG 约 5MB。 - 剪贴板读写:直接访问设备剪贴板,脚本与 iPhone 之间可以双向传递文本。
- 应用管理:通过 bundle ID 直接启动、杀死应用,无需先找到图标再点击。常用 ID 包括微信
com.tencent.xin、飞书com.bytedance.ee.lark、DeepSeekcom.deepseek.chat等。 - HID 硬件按键:触发电源、音量等物理按键事件。
- 文件系统(AFC):读写
/DCIM、/Downloads、/Books等目录。 - 位置模拟:可注入模拟定位。
关键规则与适用边界
iOS 17+ 下所有 developer 命令必须追加 --userspace,否则会因 Tunneld 隧道方式连接失败。每次重新插拔 USB 后需要先执行 mounter auto-mount 挂载开发者镜像,否则 Failed to start service。设备必须保持 USB 连接、解锁状态,且已在「设置 → 隐私与安全性」中手动开启开发者模式。
环境侧需要注意 PEP 668 限制,必须使用独立 venv(~/.pymobiledevice3-venv/),不要直接调用系统 pip3。跨智能体协作时,命令路径统一使用完整路径,并保证挂载、参数、连接三项前置条件全部满足。
仍待验证的部分:多点触控坐标协议 API 已就绪,但坐标注入未完成深入测试;WebDriverAgent 提供的高级 UI 操作(tap/swipe/type)需要额外安装 WDA。若只需观看画面而无需精确控制,旧的投屏方案仍然可用。
使用场景
- iOS 应用回归测试时按 bundle ID 直接启动微信,验证发版后某个功能是否正常
- 测试报告需要设备屏幕原图,QuickTime 截图有压缩,用本技能拿到像素级 PNG
- 自动化脚本要与 iPhone 互传文本,通过剪贴板读写完成双向同步
- CI 环境需要知道设备上安装了哪些应用,批量导出 bundle ID 列表做兼容性配置
适合人员
- 移动端测试工程师:每次版本更新后要在真机上重复执行截图、按键、启动应用的操作
- iOS 工具链开发者:需要一条不依赖投屏和 OCR 的稳定控制通道,接入自己的自动化脚本
- 设备管理或 MDM 相关人员:需要批量获取设备信息与已装应用列表做资产登记
- 需要从 iPhone 导出照片或下载文件的运维人员:通过 AFC 文件系统直接拉取 /DCIM、/Downloads