背景

前期基于sonic部署搭建了在线云真机系统,基于成本考虑,想通过linux系统承载ios手机,也就是ios手机需要挂载在linux上,并通信,那需要用到usbmuxd,这是USB协议上实现多路TCP连接,将USB通信抽象为TCP通信媒介。

实操

系统:ubuntu20.04LTS、iPhone11
思路:确保宿主机中usbmuxd运行,并通过容器映射后获取信息,然后通过苹果电脑安装在iPhone上的wda操作(iPhone装完wda后就可以脱机了)

1、安装所需环境:确保宿主机安装好usbmuxd,并确认usbmuxd运行
先安装

apt install usbmuxd

如果安装后ps -ef | grep usbmuxd无法获取到运行情况,可以usbmuxd运行或直接重启sudo reboot,一般重启后就能发现服务已启动,见下

####@####-CR160:~/sonic-agent$ ps -ef | grep usbmuxd
usbmux      4444       1  0 10:38 ?        00:00:00 /usr/sbin/usbmuxd --user usbmux --systemd
iottest    15086    1896  0 10:52 pts/0    00:00:00 grep --color=auto usbmuxd

2、接入苹果手机:通过数据线接入苹果手机(linux–usb集线器–数据线–苹果手机),
过程可能手机会弹出是否信任窗口,点击信任即可

3、确认是否接入成功:以上操作后,可以发现拔插苹果手机,linux系统已经有显示挂载后的图标,见下则挂载进去了

sonic系统接入真机

思路:确保agent节点ios配置开启,WDA_BUNDLE_ID对应手机wda
系统相关:
sonic:1.5.0-release,docker部署

JAVA_HOME: /root/jdk-15.0.2+7
java version: 15.0.2
ANDROID_HOME: /root
ADB path: /root/platform-tools/adb
ADB version: Android Debug Bridge version 1.0.41
Version 33.0.3-8952118
Installed as /root/platform-tools/adb
chromeDriver path: /usr/bin/chromedriver
chromeDriver version: ChromeDriver 105.0.5195.52 (412c95e518836d8a7d97250d62b29c2ae6a26a85-refs/branch-heads/5195@{#853})
Node path: /usr/bin/node
Node version: v12.22.12
npm path: /usr/bin/npm
npm version: 6.14.16
adbkit path: /usr/bin/adbkit
adbkit version: 2.11.1
Appium path: /usr/bin/appium
Appium version: 1.22.0
System: linux

启动节点后观察节点上手机情况:

sudo docker logs -f sonic-agent_sonic-agent_1

检测agent日志中ios启动情况:

2022-09-18 02:41:32.522 - INFO 1 --- [main] o.cloud.sonic.agent.bridge.ios.SibTool   : iOS devices listening...
2022-09-18 02:41:32.522 - INFO 1 --- [main] o.cloud.sonic.agent.bridge.ios.SibTool   : Enable iOS Module
2022-09-18 02:41:32.787 - INFO 1 --- [pool-3-thread-1] o.cloud.sonic.agent.bridge.ios.SibTool   : iOS Devices: 00008030-####### ONLINE!
巴拉巴拉......



此时进入容器,可以发现

root@####-CR160:~# cd plugins/
root@####-CR160:~/plugins# ls
sonic-android-apk.apk  sonic-android-scrcpy.jar  sonic-go-mitmproxy  sonic-go-mitmproxy-ca-cert.cer  sonic-go-mitmproxy-ca-cert.pem  sonic-go-mitmproxy-ca.pem  sonic-ios-bridge  yadb
root@iottest-CR160:~/plugins# ./sonic-ios-bridge devices
00008030-#### online

如果usbmuxd配置有问题,则会显示

Error:failed connecting to [usbMux], you can use 巴拉巴巴等......

可以在确保宿主机运行usbmuxd情况下,重启agent即可,如果重启存在问题,可以参考以下解决:

可能会冲突的问题:
1、如果一直运行着的容器中是已经映射了usbmuxd,会引发以下挂载冲突的映射问题

####@####-CR160:~/sonic-agent$ sudo docker-compose restart
Restarting sonic-agent_sonic-agent_1 ... errorERROR: for sonic-agent_sonic-agent_1  Cannot restart container c479ad7995c0dea6189daa249322e4929be89a82cefd46caf787e97c37f9187f: failed to create shim: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/var/run/usbmuxd" to rootfs at "/var/run/usbmuxd": mount /var/run/usbmuxd:/var/run/usbmuxd (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

可以先vim docker-compose.yml,先把usbmuxd映射相关的注释后,启动sonic-agent_sonic-agent_1,确认容器启动正常后,查看日志无误,再次加上usbmuxd映射后启动

sudo docker-compose up -d

2、苹果连接上了,但是投屏只转圈,然后日志显示WDA_BUNDLE_ID not in your devices,这个标识wda的标识配置有误,核对后修改agent中的WDA_BUNDLE_ID后重启即可

3、有个奇怪的现象,就是usbmuxd这个当一台苹果手机都没连接时,容器中默认无法读取到拔插后的苹果设备。
当确保ps -ef | grep usbmuxd进程存在时,可以发现,只有一台苹果接入时,拔插后,设备变成不在线,必须要至少保证拔插后存在一台设备是连接中的状态(即至少2台苹果接入)才能使得拔插后,usbmuxd不会挂掉!!!

4、如果其他都操作都正常,还是获取不到设备信息,则kill -9 进程号再reboot一下看看效果。

sonic云真机通过linux系统接入苹果手机相关推荐

  1. sonic云真机5 - ios设备接入总结

    mac上下载Xcode软件,appstore中下载了2个小时 桌面新建目录wda,命令行切换到wda目录下执行: xcode-select --install git clone https://gi ...

  2. sonic云真机分布式部署-ios真机接入

    一.现状 目前ios真机官方进度反馈,仍是远程操作比较卡顿,待后期继续优化解决: 部署到个人mac节点上,可以发现,还是比较难满足日常使用的(主要是太卡了),待持续优化中. 如果对sonic云真机不是 ...

  3. sonic云真机linux单机版部署

    一.关于sonic云真机 Sonic,一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试(代码永久免费.开源). 个人其实21年年底时已经关注,但当时觉得不太稳定及后期可能会收费什 ...

  4. Sonic 云真机平台部署经验

    工作中遇到了这样的场景,一名测试人员需要对多台移动设备进行回归测试,如何提高测试效率呢? 那肯定离不开自动化啦,那有没有现成的开源工具可以支持移动端的自动化呢? 有,sonic! 下面阿常就来和大家分 ...

  5. 如何用Sonic云真机打王者

    使用Sonic进行跨网段部署,助力海外业务的公司进行专项检测.提供定时任务充分利用无人值守时间回归UI测试,省时省力.自研随机事件测试与UI遍历测试,支持打通Jenkins的DevOps流程,Soni ...

  6. stf、atx、sonic云真机平台使用与对比

    stf STF是一个可以通过网页管理和使用移动设备的平台,支持远程调试.远程使用手机浏览器打开链接.远程执行shell脚本.远程拖拽安装App.远程查看日志.远程截屏等功能 Ubuntu安装服务端,要 ...

  7. 软件测试 | 测试开发 | 如何用Sonic云真机打王者

    使用Sonic进行跨网段部署,助力海外业务的公司进行专项检测.提供定时任务充分利用无人值守时间回归UI测试,省时省力.自研随机事件测试与UI遍历测试,支持打通Jenkins的DevOps流程,Soni ...

  8. Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解

    Sonic 开源移动端云真机测试平台 - Agent端服务部署与安卓设备接入演示 一加8手机连接效果图展示 第一章:环境准备 ① agent-sources 资源包下载 ② Android SDK安装 ...

  9. Sonic 开源移动端云真机测试平台 - windows系统下的sonic快速部署演示

    Sonic 开源移动端云真机测试平台快速部署演示 第一章:Sonic 平台的准备工作与快速部署 ① Docker 的安装 ② MySQL 的安装 ③ docker-compose.yml 文件配置 ④ ...

最新文章

  1. 吴恩达教你如何使用“锤子”?机器学习新书免费领
  2. 字符串对比 (STl强制转换字符串)
  3. boost的chrono模块周期计数延迟的测试程序
  4. php算法学习,php算法学习之动态规划
  5. java mysql乱码_41、java与mysql乱码的问题
  6. 牛客网-数据结构笔试题目(一)-猫咪特征提取思路解析(附源码)
  7. 怎樣制作线段动画_OPPO又开发布会!这两个PPT动画太炫了,荣获网友清一色好评...
  8. 敏捷转型谁先动:老总,项目经理or团队
  9. Github开源之旅启程:GitHub 上部署网页
  10. 使用 Nginx 部署静态页面
  11. ZOJ4104 Sequence in the Pocket
  12. 产品设计体会(2002)产品设计的五个层次
  13. python小工具脚本批量处理_压缩文件批量处理(附Python脚本代码)
  14. AirServer投屏轻松地将iPhone、iPad投屏到Mac上面教程
  15. 跑跑卡丁车Bingo喜当托儿纪念,2022/04/30,23:38:56
  16. vue3 script setup写法
  17. oracle 行转列后列名,Oracle 多行转多列,列值转为列名
  18. PHP学习文档——基础篇
  19. 给windows电脑重装系统
  20. 安装驱动显卡重启计算机,win7系统安装显卡驱动后电脑一直重启的解决方法

热门文章

  1. iOS中 扫描二维码/生成二维码详解
  2. js动画——图片轮播
  3. 基于匹配点集对单应性矩阵进行估计
  4. 跑团中看到的组织关系
  5. linux 程序结构,Objective-C 基本的程序结构
  6. caj在线阅读_2个免费CAJ转PDF的方法,而且不限页数和大小
  7. r语言plotmds_科学网—在R中运行metaMDS - 梅卫平的博文
  8. 快速创建React Native App
  9. oracle10G安装与配置
  10. 网易有道词典——截屏翻译时候跳转桌面的一种解决办法