市面上已经存在很多云手机厂商如多多云、雷电云、河马云手机等,价格从几十到上百元每月一台。价格还好说,但设备运行稳定性、可靠性、数据安全性全部依赖第三方厂商,注定不能进行敏感性操作或部署对安全可靠高要求的企业级服务。
本文介绍一种开源的 AIC (Android In Container) 解决方案 ReDroid,使用本教程可以在一台普通型服务器运行多个安卓设备环境,并可在客户机电脑连接使用该云手机。
这里我选择了腾讯云主机 x86架构 CPU(AMD/INTEL),配置至少 2c2g,推荐 2c4g,带宽设置为 10M
本文以 2c2g 低配云主机为例
系统是腾讯云公共镜像 Ubuntu18.04 注意系统如果使用 Centos 按照 github 的说明操作会下载不到依赖 建议优先使用 Ubuntu18.04 系统
开启Root账户登陆:
根据 Docker 官方文档安装Docker
https://docs.docker.com/engine/install/ubuntu/
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 或者从仓库下载都可
# sudo apt-get install -y docker.io
# systemctl start docker
# systemctl enable docker
根据 ReDroid 官方文档执行以下操作
https://github.com/remote-android/redroid-modules
# Ubuntu 16.04 / 18.04 / 20.04
sudo apt-get install -y git kmod make gcc linux-headers-`uname -r`
sudo make # build kernel modules
sudo make install # build and install *unsigned* kernel modules
# Ubuntu 20.04+ (kernel 5.0+)
sudo modprobe ashmem_linux
sudo modprobe binder_linux devices=binder,hwbinder,vndbinder`
根据 ReDroid 官方文档执行以下操作
这里我选择手机系统版本是 AOSP8.1 amd架构
注:AOSP8.1 即谷歌原版的纯净系统 Android8.1
https://github.com/remote-android/redroid-doc
docker run -itd --rm --memory-swappiness=0 --privileged \
-v ~/data:/data \
-p 5555:5555 \
redroid/redroid:8.1.0-amd64
根据 Scrcpy 官方文档下载安卓投屏软件源码包到客户机,解压使用
https://github.com/Genymobile/scrcpy
打开windows powershell, CD 解压目录
.\adb connect ip:5555
# adb devices 可查看连接设备列表
.\scrcpy --serial ip:5555
至此云手机运行成功并可以投屏操作使用,如果想再开一台手机只需要将容器启动命令里的 “-p 5555:5555” 里前面的 5555 替换个新端口号即可,如 “-p 5556:5555”,再使用 “adb connect ip:5556” 就连上第二台云手机了
测试结果
- 使用 ARM CPU(SR1) + Ubuntu20.04 AOSP11或8.1 arm架构 连接出现设备 offline 异常
- 使用 x86 CPU + Ubuntu20.04 AOSP11或8.1 amd64架构 连接正常 投屏出现闪屏
- 使用 x86 CPU + Ubuntu18.04 AOSP11或8.1 amd64架构 连接正常 投屏正常
强烈建议一开始就使用 Ubuntu18.04 系统,避免不必要的麻烦!
开启一台云手机时,占用CPU 20%,内存不到1G,所以 2c2g 的 x86 CPU 服务器也可以同时运行两三台云手机,具体还要视手机实际使用情况而定