重磅!全新 sib remote 功能上线,iOS 远程调试的福音!

random 测试交流7334字数 844阅读2分48秒阅读模式

官网链接

https://sonic-cloud.gitee.io/#/SIB

背景

有时在团队里,想远程触发设备的 wda 或者 fastbot 一类 xctest 的时候,有非常多的限制,因为设备只能在本地。而在 sonic 团队开发时,我们设备比较缺少,每次开发 sib 的新功能时,经常出现团队内有人有对应设备了,但是主程没有对应设备,只能盲打然后再让有设备的成员帮忙验证,非常耗费时间。做移动端的人多多少少都用过,stf 的 adbkit 里面的 usb-device-to-tcp 功能,它可以将连接的设备在局域网中分享出来,提供给其他的 adb client 连接,这个功能可以很方便的给 adb cli 开发人员调试。研究过源码的话,其实可以发现当前市面上的 iOS DTX 工具和 adb 的架构是很类似的,那为什么 sonic 不能做出类似 adbkit usb-device-to-tcp 效果的功能呢?文章源自玩技e族-https://www.playezu.com/504924.html

现状

目前主流的平台大多数暴露的 iOS 远程连接调试,都是暴露 wda 的远程 url,可以让 client 端利用 Appium 一类的工具连接这个 url 进行自动化操作。虽说这样能满足大部分需求,但是对于走协议层进行更多操作的用户来说,wda 提供的功能很少,而且前提要远程设备先开启 wda 服务。于是我们计划是往下走一层,从协议层提供远端连接。文章源自玩技e族-https://www.playezu.com/504924.html

大体思路

sib 依赖于 gidevice,而 gidevice 依赖于 usbmux,而每次进行设备连接时,都会进行一次 usbmux 的连接,然后往里面发送相关的 DTX 数据,如果研究过相关文章,就会知道 usbmux 本质上是一个本地的 tcp 服务。基于这些特性,于是我们在 sonic-gidevice 中对 gidevice 进行二次开发,设计思路:对外暴露一个 remote tcp server,可以让其他客户端往这个 remote tcp server 里发送 DTX,然后 server 端将这些 DTX 数据转发到本地的 usbmux tcp server,当 usbmux tcp server 产生回报信息后,remote tcp server 转发这些信息给对应的客户端。
在这里非常感谢组织成员 aoliaoaoaojiao 的辛勤付出文章源自玩技e族-https://www.playezu.com/504924.html

使用

在电脑 A 分享设备:

sib remote share -u <you device udid> -p <share port>

在电脑 B 连接:

执行文章源自玩技e族-https://www.playezu.com/504924.html

sib remote connect --host <you share device pc ip> -p <share port>

之后就可以通过通过 devices 获取到这个远程设备的信息文章源自玩技e族-https://www.playezu.com/504924.html

sib devices

类似如下文章源自玩技e族-https://www.playezu.com/504924.html

文章源自玩技e族-https://www.playezu.com/504924.html

重磅!全新 sib remote 功能上线,iOS 远程调试的福音!插图

文章源自玩技e族-https://www.playezu.com/504924.html

之后使用 sib 时的其他功能时,指定远程设备的 uuid,即可正常使用这些功能,就像手机连接在本地一样使用。文章源自玩技e族-https://www.playezu.com/504924.html

触发远程设备启动 wda:文章源自玩技e族-https://www.playezu.com/504924.html

sib run wda -b xxxxx

监控远程设备性能信息:

sib perfmon

或者其他所有 sib 的功能都可以直接使用了!

电脑 B 断开连接:

sib remote disconnect --host <you share device pc ip> -p <share port>

或者电脑 A 直接停止 share 进程

结语

目前 sib 已经更新了,sonic 平台的话也将在 12 月的 2.1.0 版本正式引入这个功能,届时可以直接在前端页面获取设备远程调试的链接,然后用户可以自己本地 sib remote connect 就可以像本地链接一样使用啦!

 最后更新:2022-12-20
评论  7  访客  7
    • Eason
      Eason 9

      目前只有 sib 能看的,我们组织这边落地效果不错,打通了很多流程。安卓 ios 能共用一套逻辑了。

      本质 tidevice、xcode、idb 都是 usbmuxd 的 client,要做到其他 client 工具都能出现的话,估计得二开魔改 usbmuxd,事情就不是这么简单了

      • 陈恒捷
        陈恒捷 9

        @ZhouYixun 远程连接上后,除了 sib,设备是否也会出现在其他调试工具的设备列表里?比如 tidevice、xcode 等。

        之前有调研过这个方向,facebook 的 idb 也有提供类似的功能,但连接上的设备只能使用 idb 提供的功能,无法类似 adb 那样所有调试工具都可以连接上。

        • Eason
          Eason 9

          可能年底大家都忙吧

          • cc
            cc 9

            这么牛的技术居然没人关注!

            • Eason
              Eason 9

              不过也就平时用惯 adbkit 的才能感受到 ios 出了同类工具的那种感觉

              • 皮大大的豆花皮
                皮大大的豆花皮 9

                看起来很牛逼的样子

                • Eason
                  Eason 9

                  @Lihuazhang 申精~

                匿名

                发表评论

                匿名网友
                确定

                拖动滑块以完成验证