自己做一个云手机,开源的 Android In Container 解决方案

前言

市面上已经存在很多云手机厂商如多多云、雷电云、河马云手机等,价格从几十到上百元每月一台。价格还好说,但设备运行稳定性、可靠性、数据安全性全部依赖第三方厂商,注定不能进行敏感性操作或部署对安全可靠高要求的企业级服务。
本文介绍一种开源的 AIC (Android In Container) 解决方案 ReDroid,使用本教程可以在一台普通型服务器运行多个安卓设备环境,并可在客户机电脑连接使用该云手机。
之前写过一篇云服务器搭建 ReDroid 的方案(点击这里查看),但当时基于 x86 架构 CPU 是无法安装 arm 专用APP的,所以本文再提供一种接入转译的方法,测试结果也会放在文章最后。

前提

win10 + intel cpu 使用虚拟机搭建redroid云手机平台

  1. 使用Vmware Pro开启虚拟机
镜像:ubuntu20.04_x86.iso
网络使用桥接模式
安装Vmware Tool
  1. ubuntu初始配置
## install required kernel modules
apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux

# grep binder /proc/filesystems
nodev	binder
# grep ashmem /proc/misc
122 ashmem
#如果显示是空的就是有问题,和上面类似返回 nodev binder 和 xxx ashmem 的话就算配置正确。系统重启后可能需要再次检查
  1. 启动云手机

正文

  1. 生成native-bridge.tar
sudo pacman -S sleuthkit p7zip binwalk git

cd ~
git clone https://github.com/sickcodes/Droid-NDK-Extractor.git
cd Droid-NDK-Extractor
chmod +x android-extract-ndk.sh
./android-extract-ndk.sh x86_64

cd ~/Droid-NDK-Extractor/working/extracted/
mkdir native-bridge
cd native-bridge
sudo tar -xpf ../native-bridge.tar
sudo chmod 0644 system/etc/init/ndk_translation_arm64.rc
sudo chmod 0755 system/bin/arm
sudo chmod 0755 system/bin/arm64
sudo chmod 0755 system/lib/arm
sudo chmod 0755 system/lib64/arm64
sudo chmod 0644 system/etc/binfmt_misc/*
sudo tar -cpf native-bridge.tar system
mv native-bridge.tar ..
cd ..
rm -r native-bridge
  1. 构建镜像
FROM redroid/redroid:11.0.0-amd64

ADD native-bridge.tar /

sudo docker build . -t redroid-11-libndk
  1. 启动
docker run -itd --rm --privileged -p 5555:5555 redroid-11-libndk \
	ro.product.cpu.abilist=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi     \
	ro.product.cpu.abilist64=x86_64,arm64-v8a     \
	ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi     \
	ro.dalvik.vm.isa.arm=x86     \
	ro.dalvik.vm.isa.arm64=x86_64     \
	ro.enable.native.bridge.exec=1     \
	ro.dalvik.vm.native.bridge=libndk_translation.so     \
	ro.ndk_translation.version=0.2.2
  1. 参考文章
    ReDroid教學:用Docker跑Android系統,在x86電腦玩ARM手機遊戲 | Ivon的部落格

测试结果:
安装完转译后绝大部分APP可以安装,一部分应用可以成功打开,但微信、企微、抖音测试都较长时间卡在logo页后退出(个别尝试进入到应用首页后自动退出),可能还是存在兼容性或其他系统问题。只能说是基本无法满足使用需求。后面还是尝试使用 arm CPU 进行部署测试。

对了,腾讯云主机又又又又活动了,戳这里查看

总结

打造自己的云手机既可以用来做测试开发使用,也可以保证安全隐私的情况下执行敏感操作,还可以用 WorkTool 等 APP 制作微信企微机器人,后续我会继续测试 arm CPU 进行安卓容器化测试。喜欢本文可以关注我~有问题可以留言或私信我。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐