用过云真机的同学应该都有这种体验:浏览器里点一下,机房里的真机就跟着动,你点哪里它点哪里。

这既不是模拟器,也不是远程桌面,操作的是实实在在的物理设备。

不少人第一次接触时以为是"远程控制软件"或者"摄像头直播",实际这套系统比想象中复杂。最近拆了一下无缺灵触™云真机的技术架构,觉得有些设计思路值得聊聊。

一、三层架构:前端 / 后端 / 控制端

把真机搬到云端,绕不开三个问题:画面怎么传、操作怎么回、设备怎么管。它的做法是分给三层:

层级 干什么的
前端 你看到的界面,画面渲染、操作映射、权限控制
后端 平台大脑,认证、调度、会话管理
控制端 连着真机的手和眼,画面采集、操作执行、状态上报

控制端放机房里,和真机 USB 直连。远程调试画面跟不跟手,就看这层稳不稳。

有个设计我觉得值得单独说:浏览器不绕后端,直接跟控制端建 WebSocket 连接传画面和操作。后端只管调度,控制端只管干活——数据面和控制面分离,传输路径最短,延迟最低。

这个思路其实挺经典的,跟网络里的数据面/控制面分离是一个道理。后端如果也参与数据中转,就多一跳延迟。

二、画面传输:H.264 vs MJPEG

真机画面怎么实时传到浏览器?按平台分两种:

H.264 的好处:延迟低(帧到即显)、画质清晰(同等带宽更细腻)、带宽小(弱网也流畅)、浏览器原生兼容(不用装插件)。

iOS 为什么用 MJPEG?大概率是 iOS 底层屏幕采集能力的限制,没法像 Android 那样走系统级视频流编码。有没有做过 iOS 画面采集的同学来聊聊,还有别的方案吗?

三、驱动层:一套架构三端通吃

Android 用 ADB,iOS 有自己的工具链,鸿蒙用 HDC。三端通信协议完全不同。

它的做法是把差异收进驱动层,向上暴露统一接口。对上层来说,不管什么平台,都只是一台"能截图、能点击、能装应用"的设备。

好处:

  1. 跨平台操作一致——三端测试操作完全统一
  2. 可扩展——加新平台加个驱动插件就行

鸿蒙 NEXT 支持

这点我觉得对测试同学比较有价值:已支持鸿蒙 NEXT 最新版真机远程调试,开发者可以像调试安卓一样远程连接鸿蒙设备——查看日志、抓性能数据、联调验证。

同时支持 Android、iOS、鸿蒙 NEXT 三端远程调试的方案,当前市场确实不多见。 做鸿蒙适配测试的同学可以关注一下。

四、设备管理:状态机兜底

平台管着几百上千台设备,每台维护一套状态机:

规模化能不能撑住,主要看这些细节。 管过真机集群的同学应该懂,设备状态管理比远程调试本身更头疼。

五、企业级能力

能力 说明
信创兼容 支持国产数据库,金融政务信创环境直接部署
双部署模式 微服务适合大规模云端,融合部署适合算力受限边缘
可观测性 链路追踪、结构化日志、实时指标监控
多机调试 最多 10 台同屏,主控模式一键同步操作,批量效率翻倍

几个想和大家讨论的问题

  1. 你们团队用云真机吗?远程操控的延迟体验怎么样? 有没有测过延迟在什么量级?
  2. 数据面/控制面分离 vs 后端中转,这两种架构你们怎么看? 直连延迟低但调度复杂度上来了,这个 trade-off 怎么权衡?
  3. iOS 画面采集除了 MJPEG 还有什么方案? 有没有用过其他低延迟方案的来聊聊。
  4. 设备状态机设计,管过真机集群的同学来聊聊? 热插拔、自动恢复、告警这些,你们是怎么做的?踩过什么坑?
  5. 鸿蒙 HDC 用起来跟 ADB 比体验如何? 做鸿蒙适配测试的同学,HDC 有没有什么"坑"?

这个方案来自无缺智测团队(无缺灵触™企业级私有云真机),但我更想聊的是云真机架构设计本身——毕竟做过远程调试方案的同学,对这些技术选型都有自己的判断。

欢迎评论区交流,尤其是自己搭过云真机/远程调试方案的,你们的架构是怎么设计的?


↙↙↙阅读原文可查看相关链接,并与作者交流