云手机基本原理与构建(云手机源码怎样炼成的?)
一、什么是云手机
云手机是虚拟化技术,最终为用户/客户在云端提供的一个个安卓实例(操作系统)。用户/客户可以通过视频流的方式,远程实时控制云手机,最终实现安卓原生APP及手游的云端运行。
所有的云手机都离不开远程桌面连接协议,若没有远程桌面连接协议,要实现云手机屏幕的控制则需要自行设计远程桌面连接协议。目前较为常见的云手机连接协议,大多使用VNC方式实现云手机桌面作为视频流进行传输。
1、三种协议对比
SPICEVNCRDP
BIOS屏幕显示能能不能
全彩支持能能能
更改分辨率能能能
多显示器多显示器支持(高达4画面)只有一个屏幕多显示器支持
图像传输图像和图形传输图像传输图像和图形传输
视频播放支持GPU加速支持不能GPU加速支持
音频传输双向语音可以控制不能双向语音可以控制
鼠标控制客户端服务器都可以控制服务器端控制服务器端控制
USB传输USB可以通过网络传输不能USB可以通过网络传输
三种协议概览:
1、VNC
适用系统:windows、linux
网络流量:较小,常用100k左右
2、SPICE
适用系统:linux
网络流量:较大,正常使用10-20M
3、RDP
目前在windows上 rdp有两种,remote,remotefx
适用系统:windows、linux
网络流量:较小,正常使用100-200k左右
四、云手机的常见架构
2、基于模拟器(虚拟机)的云手机
基于模拟器的云手机大多由早期做模拟器的厂商发展而来,安卓模拟器软件有三大流派:Bluestacks和Virutalbox以及QEMU。
3、基于容器的云手机
说到容器不得不提LXC与Docker,两者都实现资源的隔离和控制,也就是对 Cgroup 和 Namespace 两个属性的控制。docker 出现之初,便是采用了 lxc 技术作为 docker 底层,对容器虚拟化的控制。后来随着 docker 的发展,它自己封装了 libcontainer (golang 的库)来实现 Cgroup 和 Namespace 控制,从而消除了对 lxc 的依赖。
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阵列经过几代架构的迭代,如地椒科技已经可以自主设计ARM阵列服务器,实现了高密度、可拔插的服务器设计。