问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

云手机基本原理与构建:从技术实现到应用场景解析

创作时间:
作者:
@小白创作中心

云手机基本原理与构建:从技术实现到应用场景解析

引用
CSDN
1.
https://m.blog.csdn.net/harryhuang2020/article/details/143534082

一、什么是云手机

云手机是虚拟化技术,最终为用户/客户在云端提供的一个个安卓实例(操作系统)。用户/客户可以通过视频流的方式,远程实时控制云手机,最终实现安卓原生APP及手游的云端运行。

二、云手机实现原理

三、远程连接协议VNC/SPICE/RDP

所有的云手机都离不开远程桌面连接协议,若没有远程桌面连接协议,要实现云手机屏幕的控制则需要自行设计远程桌面连接协议。目前较为常见的云手机连接协议,大多使用VNC方式实现云手机桌面作为视频流进行传输。

1、三种协议对比

协议
BIOS屏幕显示
全彩支持
更改分辨率
多显示器支持
图像传输
视频播放
音频传输
鼠标控制
USB传输
SPICE
多显示器支持(高达4画面)
图像和图形传输
支持GPU加速
双向语音可以控制
客户端服务器都可以控制
USB可以通过网络传输
VNC
只有一个屏幕
图像传输
不能GPU加速
不能
服务器端控制
不能
RDP
多显示器支持
图像和图形传输
支持GPU加速
双向语音可以控制
服务器端控制
USB可以通过网络传输

三种协议概览:

1、VNC

适用系统:windows、linux

网络流量:较小,常用100k左右

2、SPICE

适用系统:linux

网络流量:较大,正常使用10-20M

3、RDP

目前在windows上 rdp有两种,remote,remotefx

适用系统:windows、linux

网络流量:较小,正常使用100-200k左右

四、云手机的常见架构

1、基于实体手机的云手机

基于实现手机的远程传输应该是云手机实现的最原始方式。通常的实现方式,通过USB连接线将实体手机与电脑相连接,通过安卓控制器或安卓调试器将手机画面传输到远程,从而实现对实体手机的云端控制,此种实现模式是最早的云手机实现方式。此种方式由于强依赖于手机设备,手机设备一旦损坏,数据丢失将是灾难性。另外大多数连接控制软件都是针对某一手机型号适配,若手机设备停止生产,则无法扩展。此外,还存在网络带宽问题,由于都是实体手机,无法存放于大型机房,不具备可扩展性以及可维护性,因此逐渐被市场淘汰。

2、基于模拟器(虚拟机)的云手机

基于模拟器的云手机大多由早期做模拟器的厂商发展而来,安卓模拟器软件有三大流派:Bluestacks和Virutalbox以及QEMU。

Bluestacks的历史可以追溯到2011年,是最早在PC上实现流畅运行安卓系统的方案。Bluestacks的原理是把Android底层API接口翻译成Windows API,对PC硬件本身没有要求,在硬件兼容性方面有一定的优势。但Bluestacks需要翻译的Android接口数量巨大,很难面面俱到,而且存在软件翻译的开销,在性能和游戏兼容性方面欠佳。

Virtualbox是数据库巨头Oracle旗下的开源项目,通过在Windows内核底层直接插入驱动模块,创建一个完整虚拟的电脑环境运行安卓系统,加上CPU VT硬件加速,性能和兼容性都更好,但是对于电脑CPU有一定要求,超过五年以上的电脑使用起来比较吃力。

QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。由于QEMU的性能问题,才初夏了KQEMU这个加速模块(闭源收费),不过后来QEMU取消了KQEMU的支持,转而使用KVM模块来进行加速。因为 KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰。

3、基于容器的云手机

说到容器不得不提LXC与Docker,两者都实现资源的隔离和控制,也就是对 Cgroup 和 Namespace 两个属性的控制。docker 出现之初,便是采用了 lxc 技术作为 docker 底层,对容器虚拟化的控制。后来随着 docker 的发展,它自己封装了 libcontainer (golang 的库)来实现 Cgroup 和 Namespace 控制,从而消除了对 lxc 的依赖。

为什么会提这个昵?因为模拟器(虚拟机)可能占用主机的大量系统资源,模拟器(虚拟机)的大小为数GB。在虚拟服务器上运行单个应用程序意味着还要运行Guest OS以及Guest OS运行所需的所有硬件的虚拟副本。这样很快就增加了很多RAM和CPU资源消耗。迁移模拟器(虚拟机)上运行的应用程序的过程也可能很复杂,因为它始终附加在操作系统上。因此,必须同时迁移应用程序和操作系统。容器的出现,在一定程度上解决了这些问题。

目前使用容器实现云手机主要有以下几个项目:

1、anbox:使用 Linux 命名空间(user, pid, uts, net, mount, ipc)在容器中运行完整的 Android 系统,并在任何基于 GNU Linux 的平台上提供 Android 应用程序。:https://github.com/anbox/anbox

2、robox :基于anbox出来的一个分支 https://github.com/lag-linaro/robox

3、openvmi:基于anbox与robox创建 https://github.com/DockDroid/openvmi

4、华为公有云monbox: https://hdcwebinars.huaweicloud.com/watch/bmb084d7

容器仍无法提供与模拟器(虚拟机)相同的安全性和稳定性。由于它们共享主机的内核,因此不能像模拟器(虚拟机)一样完全隔离。容器是进程级的隔离,一个容器可以通过影响宿主机内核的稳定性来影响其他容器。

4、基于ARM阵列的云手机

ARM阵列服务器经过了几代发展,从早期的插板方式到之后的可拔插方式设计。ARM阵列由于高度还原手机硬件,因而对应用与游戏的兼容性更趋向于真实手机。ARM阵列经过几代架构的迭代,可以实现了高密度、可拔插的服务器设计。

5、现在云手机可以做什么

以verybots(Verybots-tk矩阵工具)团队的云手机、云手机管理系统功能测试和验证,大致云手机能实现下列能力(供参考):

1)云手游

2)移动办公

3)内容监测

4)仿真测试

5)互动直播

6)试玩广告

7)云游戏

8)矩阵短视频号管理

9)多账号隔离

10)数据采集等

6、结语

如果说2G到3G实现了文字到图片的转变,3G到4G实现了图片到视频的转变,那么4G到5G将会带来本地应用到云端应用的转化。端云协同,将会随着时间推移被更多的人接受。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号