测试系统为Ubuntu20.04 ARM64
总体思路:Docker+ReDroid搭建云手机,然后设置IP白名单用scrcpy控制。
https://github.com/remote-android/redroid-doc
https://github.com/Genymobile/scrcpy
上命令,先安装Docker
curl -sSL https://get.docker.com/ | sh
然后配置ReDroid需要的环境
apt install linux-modules-extra-`uname -r` modprobe binder_linux devices="binder,hwbinder,vndbinder" modprobe ashmem_linux cat > /etc/modules-load.d/redroid.conf <<EOF binder_linux ashmem_linux EOF cat > /etc/modprobe.d/redroid.conf <<EOF options binder_linux devices="binder,hwbinder,vndbinder" EOF chmod +x /etc/modules-load.d/redroid.conf chmod +x /etc/modprobe.d/redroid.conf
然后只需要拉取运行ReDroid的Docker镜像
docker run --name moniqi1 \ -itd \ --memory-swappiness=0 \ --privileged --pull always \ -v /root/test/data1:/data \ -p 55550:5555 \ redroid/redroid:13.0.0-arm64 \ ro.secure=0 \ ro.product.model=Xiaomi \ ro.product.brand=Xiaomi \ ro.product.name=Xiaomi \ ro.product.device=Xiaomi \ ro.product.board=Xiaomi \ androidboot.hardware=mt6891 ro.boot.hwc=GLOBAL ro.ril.oem.imei=8615888888888 ro.ril.oem.imei1=8615888888888 ro.ril.oem.imei2=8613888888888 ro.ril.miui.imei0=8613888888888 ro.product.manufacturer=Xiaomi ro.build.product=chopin \ redroid.width=720 redroid.height=1280 \ redroid.gpu.mode=guest \ --rm
docker ps #查看正在运行的容器信息
docker stop moniqi1 #关闭容器
docker start moniqi1 #开启容器
docker restart moniqi1 #重启容器
docker rm moniqi1 #删除容器
rm -rf /root/test/data1 #删除容器的文件,从而彻底删除
用iptables实现仅白名单IP可连接此云手机
iptables -I DOCKER-USER -i enp0s3 -p tcp -m conntrack --ctorigdstport 55550 ! -s <你的IP> -j DROP netfilter-persistent save
最后用scrcpy来连接控制,打开scrcpy自带的open_a_terminal_here.bat输入以下
adb connect <你的ip:端口>
ADB连接成功后即可控制
scrcpy.exe -s <你的ip:端口> --max-size 768 --bit-rate 892K --max-fps 15 --window-title '模拟器1'
使用中遇到的问题以及解决方案
- 无法使用v2rayng等等网络代理软件
进入adb shell,输入mv /dev/net/tun /dev/ 就可以使用了,但是不要全局代理,否则会掉线。
- 创建多个ReDroid容器后,之前创建的容器都无法管理文件
使用docker cp命令将容器内的/vendor/etc/init/redroid.common.rc文件复制出来,然后在文件末尾添加以下代码:
on late-init umount /sys/fs/fuse/connections
再使用docker cp命令把该文件替换回去,然后重启所有容器(如果不想重启,得在创建容器的时候使用create而不是run命令,只创建不运行,等修改完/vendor/etc/init/redroid.common.rc再用docker start启动)
近期评论