sonic-ios-bridge
本文为跨平台iOS调试工具sonic-ios-bridge(sib)的介绍与原理简述。 👉Github地址
本仓库贡献者
介绍
sonic-ios-bridge 是基于 gidevice 作为底层iOS通信协议,在此基础上丰富了周边辅助功能,如自动挂载开发者镜像、wda安装检测、iOS型号映射、命令行直接使用等等。 以打造跨平台执行xctest、WebDriverAgentRunner、性能监听等等特色功能的命令行iOS调试工具。
关于gidevice共建
Sonic组织也在持续将iOS通信的探索 共建 到gidevice上,Sonic会先在 sonic-gidevice 建设,等feat稳定之后通过 feat/contribute_to_repo 分支提交到原gidevice仓库,以下是Sonic组织目前参与建设的提交:
- 新增DiagnosticsRelay实现设备关机与重启。feat: [DiagnosticsRelay] new functions Reboot Shutdown
- 新增SpringBoardServices与App图标获取。feat: [SpringBoard] support get the app's icon
- 扩展SpringBoardServices获取屏幕旋转方向。feat: [SpringBoard] support get the orientation of the interface
- 增加性能数据方法。feat: 增加性能数据方法
所以您可以使用sib脱离Mac进行 跨端iOS自动化 、iOS设备通信、iOS设备测试 。
无论是 gidevice 还是 tidevice ,主要原理是与usbmux通信。 usbmux的作用是实现跨平台与iOS设备服务的通信。 在Mac上usbmuxd是苹果的一个服务,主要用于在USB协议上实现TCP连接。iTunes、Xcode都有用到了这个服务,所以Windows系统需要安装iTunes。
注意事项
已知设备部分功能需要 挂载开发者镜像,又因为执行xctest(包括wda)时检查挂载镜像会造成阻塞问题,所以sib在 1.3.7版本开始 不再自动检查挂载状态与自动挂载。因此部分功能单独使用前需要手动挂载开发者镜像,可以使用 这个指令 自行挂载。
目前已知挂载状态变更如下:
- 设备 首次使用 或 重启 后,挂载状态会被重置。
- 挂载状态被重置前只要挂载一次,就不再需要挂载。
✨当然如果您有更好的方法解决这个问题,欢迎发起pr请求一同建设✨
快速使用
- 选择下方 PC对应的平台压缩包 下载并解压到任意目录。如 加速链接失效 或 想查找旧版本,请前往 这里 下载
- 执行指令(Windows不需要,但是Windows需要安装iTunes)。
bash
sudo chmod 777 sib
- 执行指令有输出版本号即可(Windows不需要./)。
bash
./sib version
- 🎉恭喜!您已经可以开始使用了!请移步到功能列表,如果Mac弹出安全弹窗,可以查看下方常见问题。
- (附)如果想任意目录下都可以使用sib,需要将sib路径添加到系统环境变量PATH中。
名词解释
- flags 意为当前指令可用的子命令,例:
bash
sib devices listen
那么 listen 就是 devices 命令的子命令。
- option 意为当前指令可用选项,例如:
bash
sib devcies -d
那么 -d 就是 devices 命令的选项。
常见问题(Q&A)
Q1: 为什么有的版本的Agent的plugins目录下的是sonic-ios-bridge.exe而不是sib.exe?
A1: 其实是同一个东西,只是Agent的我方便用户辨认,更改了文件名,实际上作用是一样的。
Q2: Windows上使用为什么报超时问题?
A2: Windows没有自带usbmuxd,需要安装iTunes哦。
Q3: Mac上使用会有安全弹窗?
A3: Mac:系统偏好设置 -> 安全性与隐私 -> 通用,点击信任或仍要打开。
Q4: 执行时报错 receive packet: InvalidService 之类的字样
A4: 设备在首次使用或者重启后部分功能需要先挂载开发者镜像(除了运行xctest或wda会自动挂载外),可执行sib mount解决。
TIP
更多疑问可前往 👉社区👈 交流