阅读 162

揭密岩鼠云真机黑科技,如何服务好全球十亿用户

UC云真机诞生的背景

对移动开发者来说,无论是开发,调试,测试,还是上线前后检验效果,都离不开移动设备,除了开发者之外,产品及运营、客服同学,也时不时遇到需要使用真机进行产品体验、产品运营的时候。

对UC这样面向全球用户的移动端APP来说更是如此。早期UC是通过采购设备给各部门来满足开发需求。然而随着业务的发展,这种方式的缺陷越来越凸显。

image.png

云真机,能完美解决以上所有问题,将设备接入云平台,通过资源集中管理,合理调度分配,提升资源利用率,平衡成本与需求,提升研发效率。

image.png

岩鼠云真机概述

云真机聚焦在研发、测试、调试、定位问题这个链条上,提供完整的功能给用户。

image.png

技术架构

云真机就是能够支持用户远程操作云真机并且看到真机图像,所以核心功能主要是解决两个问题:真机图像传输、真机控制响应,解决这两个问题,就能完成一个初级云真机系统。

image.png

但由于UC业务的特性,要满足业务的需求,除了以上基础能力之外,还要解决更多问题: 必须支持海外部署,才能解决出海业务的痛点

必须同时支持Android和iOS真机(当前业界对iOS真机的支持并不友好)

要解决音频输入输出问题,才能满足需要音频交互的产品的需求,例如游戏语音链接,视频通信等

要保证稳定性,才能更大程度的让云真机替代真实机器

还需要保证扩展性,满足更长远的业务需求,例如更多终端的接入

......

云真机黑科技非常的多,本文介绍其中两个最具代表性的——海外云真机及iOS云真机,其他黑科技后续我们会陆续为大家介绍。

海外云真机

UC业务面临很多海外问题排查和复现问题,研发同学经常出差去海外解决各种疑难问题,为解决这一痛点,我们开始研究如何部署海外云真机。而海外云真机部署之后,我们发现很多之前没有出现的问题爆发了,主要集中在两个方面:

  1. 云真机图像传输速率

  2. 云真机操作响应延时

通过不断的摸索和优化,我们彻底解决了上述两个问题,为国际业务团队提供最优质的服务。

image.png

第一阶段:图片传输真机图像

云真机采用图片传输是现在最流行的,把屏幕每一帧截图, 通过websocket传输到前端, 前端收到后, 通过canvas绘制出来,就能实现实时呈现真机画面的效果。这种方案消耗带宽多,传输慢。

解决这个问题,第一个想法就是图片降低分辨率、图片压缩比、降低帧率。图片分辨率降低到 X*400 以下,同时图片质量降低到50,从0到1,海外云真机达到基本可用。

image.png

第二阶段:视频传输真机图像

在第一阶段我们满足了基本的温饱,但事实上流畅度可用性还是欠缺,用起来相对痛苦,并且当时我们面临一些出海的短视频业务,对流量需求更大,如何能支持这类业务呢,所以我们萌生想法采用视频流进行云真机图像传输。

首先安卓的编码器天生支持GPU加速, 编码视频的时候不会消耗很大量的CPU, 编码器支持同一种格式(H264), 其次在500KB/s带宽左右, 视频出来的清晰度体验非常好, 而且能通过控制视频的码率, 去控制带宽. 经过调研,我们选择了进行视频传输方案的深入研究。

image.png

安卓手机端的画面采集与编码方案, 我们选择了在手机上使用安卓系统的编码器去做编码, 通过Surface提供的createInputSurface, 使用MediaCodec编码成H264视频, 获取到每一帧, 把一个一个NALU, 通过websocket发送出去. WEB端直接采用video标签进行播放,一切都很流畅。

image.png

其他:网络优化

因海外云真机的访问实际链路是非常长的,所以在整个传输链路的过程中非常容易出现问题,并且海外的基础建设也比较差,这样就更容易出现卡顿等问题。好在我们当时发现了tcp拥塞控制算法,在海外部署的节点开启此算法,能够保证海外节点发送数据的到达率,从而使网络传输的稳定性提高。

iOS云真机

解决海外业务团队遇到的问题之后,其实我们还有大量的iOS业务,而大部分云真机对于iOS设备支持的效果都不是特别理想,我们自研云真机采用XCUITest解决图片采集的问题和真机控制的问题,能够达到秒开即用、动态帧率,使我们的iOS云真机能够达到比较好的用户体验。

iOS图像采集方案对比:

image.png

iOS设备控制方案对比:

image.png

iOS云真机更具体的内容,我们也写过文章介绍,想了解更多请戳:

这可能是市面上最好用的iOS云真机

#疫情期间,岩鼠免费开放 当前岩鼠云真机对企业免费开放 岩鼠云设备平台

免费试用指南↓↓↓↓ 岩鼠云真机免费向企业开放,助力企业高效远程办公