ReDroid打造自己的云手机
自己做一个云手机,开源的 Android In Container 解决方案
前言
市面上已经存在很多云手机厂商如多多云、雷电云、河马云手机等,价格从几十到上百元每月一台。价格还好说,但设备运行稳定性、可靠性、数据安全性全部依赖第三方厂商,注定不能进行敏感性操作或部署对安全可靠高要求的企业级服务。
本文介绍一种开源的 AIC (Android In Container) 解决方案 ReDroid,使用本教程可以在一台普通型服务器运行多个安卓设备环境,并可在客户机电脑连接使用该云手机。
正文
这里我选择了腾讯云主机 x86架构 CPU(AMD/INTEL),配置至少 2c2g,推荐 2c4g,带宽设置为 10M
本文以 2c2g 低配云主机为例
系统是腾讯云公共镜像 Ubuntu18.04 注意系统如果使用 Centos 按照 github 的说明操作会下载不到依赖 建议优先使用 Ubuntu18.04 系统
注意 Ubuntu 系统使用 ssh 登录时默认不允许 root 用户直接登录,可以在配置开启也可以使用普通账户登录,以普通账户登录为例
ssh ubuntu@ip
#输入密码
sudo su
#进入root
Install Docker Engine on Ubuntu
根据 Docker 官方文档安装Docker
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 Kernel Modules
根据 ReDroid 官方文档执行以下操作
# Ubuntu 16.04 / 18.04 / 20.04
sudo apt-get install -y git kmod make gcc linux-headers-`uname -r`
# 本环境即 linux-headers-4.15.0-159-generic
# 解压项目 master 分支代码到服务器任意位置
sudo make # build kernel modules
sudo make install # build and install *unsigned* kernel modules
ReDroid-Doc
根据 ReDroid 官方文档执行以下操作
这里我选择手机系统版本是 AOSP8.1 amd架构
注:AOSP8.1 即谷歌原版的纯净系统 Android8.1
docker run -itd --rm --memory-swappiness=0 --privileged \
-v ~/data:/data \
-p 5555:5555 \
redroid/redroid:8.1.0-amd64
Scrcpy
根据 Scrcpy 官方文档下载安卓投屏软件源码包到客户机,解压使用
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 服务器也可以同时运行两三台云手机,具体还要视手机实际使用情况而定
总结
打造自己的云手机既可以用来做测试开发使用,也可以保证安全隐私的情况下执行敏感操作,还可以用来做模拟操作RPA机器人,或执行挂机任务,值得一试。
甲骨文ARM利用docker镜像运行安卓云手机:https://blog.imoeq.com/oracle-arm-run-android-by-docker/
使用Docker运行ws-scrcpy,实现Android web远程桌面:https://blog.imoeq.com/scrcpy-run-a-android-web-page/
Docker Hub:https://hub.docker.com/r/redroid/redroid