关于ios:干货一款实用iOS云真机的技术架构是如何搭建的

2次阅读

共计 2029 个字符,预计需要花费 6 分钟才能阅读完成。

​目前,市场上有很多 App 反对 iOS9、iOS10,一旦在这些低版本的机器呈现兼容性问题时,想找一台手机来 debug 就是一件十分难的事,而且 iOS 零碎的分辨率也越来越多,无论是自动化还是日常的兼容性,都须要有更全面的机型去做兼容性测试。

对挪动开发者来说,无论是开发、调试、测试、还是上线前后测验成果,都离不开测试机,甚至是产品、经营和客服,也时不时须要应用真机进行产品体验、产品经营。传统渠道上,开发者只能通过洽购设施满足各部门测试需要。然而随着业务的倒退,这种形式的缺点越来越凸显:稀缺机型热门、设施数量有余、费用高企、资源利用率不低等。

咱们在调研了业界的诸多云真机解决方案后,发现大家尤其是对 iOS 端反对得不好,并且免费也绝对较高。历经数个版本的迭代后,友盟 + 推出了搭载在 U -APM 利用性能监控平台上的云真机服务,为挪动开发者提供了灵便地测试操作界面,反对 ADB 调试、WEB 近程调试、扫码、抓包、虚构定位等测试性能,并提供了测试报告供开发者后续查看。尤其是在 iOS 反对上做的十分粗疏和用心。

在屏幕画面方面,友盟 + 云真机高端机能有 15 帧左右的比拟晦涩的高画质屏幕传输,并且是秒开、超级省流量。

在用户体验方面,一系列快捷设置如装置 ipa、键盘输入、从电脑间接粘贴内容到手机、一键 web 调试等急速应用

在 Mac 主机方面,一台 i5 的 mac mini 能反对同时接入 20 台手机

云真机背地的技术架构揭秘

根本和 openSTF 相似,mini 作为 provider,provider 去治理手机和解决与云端服务器之间的音讯,连贯到云端服务器,云端服务器可能反对 N 个 provider 接入,并且本身能很容易地去做扩大,而云端服务器则负责散发音讯,与做一些 websocket 服务的代理转发,前端则间接对接云端服务器。

云真机外围驱动

这部分基于阿里巴巴弱小的技术能力齐全自研,不基于 WDA,也不基于开源产品,当初市面上很多 iOS 云真机都会基于 WDA 或者其余的开源自动化测试框架去做的,可是这些框架的设计初衷并不是做云真机,会引入了很多开发不须要的功能模块。咱们心愿云真机外围驱动局部,能尽量轻量,而且稳固。整个外围驱动局部,最次要分为屏幕捕捉、模仿管制、辅助性能接口。

屏幕捕捉

苦于苹果的限度,这一点是最难冲破,咱们也有尝试过很多计划。例如:idevicescreenshot,帧率太低了,而且通过逆向发现 iOS 零碎中的 ScreenShorter 不承受任何宽高、图片品质、图片格式的参数,这个办法在 iPhoneX 之类的高分辨率的机器,截图会更慢,只有 1 - 2 帧。

而比拟风行的 iOS-minicap 计划,这个计划尽管能十分十分高效地实时获取到屏幕内容,但这个计划最大的毛病就是 1 个 mac 只能提供到 1 台 iPhone 的实时屏幕流,老本切实太高,咱们也有尝试过破解 Mac 中 CoreMediaIO。

framework 的 iOSScreenCapture 协定 (iOS-minicap 就是调用了零碎提供的 iPhone 录屏接口,由 AVFoundation 与 CoreMediaIO 提供的),咱们还有尝试过把整个 Mac 虚拟化去做隔离,让同一个物理机应用多个 iOS-minicap,但这些种种计划,最终都以失败告终。

最终计划是,在 XCUITest 中是应用公有 API 去截图,这个公有 API 能最高能达到 15 帧左右,根本能满足咱们的需要了,再把每一帧编码成视频流,从而节俭流量。能够感受一下 jpg 截图与视频流的流量大小比照:

以 XS Max 为例,每一帧都均匀在 90K 左右,每一帧的数据传输截图:

与图片比照,肉眼可见的等同画质下的,当编码成视频流后,一样的机型,用雷同的操作和雷同的画面去比照,视频流所需的带宽十分小。

最重要的是,视频流能节俭的不仅仅是服务器进口的流量,还能加重 usbmuxd 的 cpu 资源占用。usbmuxd 以后是单过程的,只能应用单个 cpu 的外围,很容易达到瓶颈,对此咱们还有一个革新就是把 usbmuxd 改成能充沛应用 cpu 的每一个外围,进步整个 mac 的硬件使用率,这部分,咱们当前在独自写文章介绍。

模仿管制

绝对于屏幕获取,点击事件倒是简略很多,能够参考 WDA,间接应用 XCUITest 的公有 API 触发就能够。而音讯格局则是沿用回 openSTF 的格局,provider 收到之后间接转发给 XCUITest。这里的重点是应用长连贯去与 provider 做数据交互,而不是 HTTP,从而进步整个链路的响应速度。

开发者利用场景

谬误排查:复现用户谬误进行排查修复,测试报告涵盖谬误捕捉信息

网络抓包:对手机的网络行为进行监控测试,排查网络、平安相干等问题

页面调试:一键调试,操作体验能够与 Chrome Devtools 相媲美

虚构定位:反对寰球高精度虚构定位,实时模仿设施地理位置验证问题

ADB 近程:连贯 ADB,应用 IDE 或者命令行的形式进行 Android 近程调试

更多请点击链接,点击收费应用友盟 + 云真机服务

扫一扫退出友盟 + 技术社群

正文完
 0