vpsvps搭建云手机
冰糖呼噜AI摘要
正在生成中……
先安装一个测试容器,确保你的系统可以运行redroid
首先先检查你的内核版本:
1 2
| uname -r #查看内核命令 #内核最好是大于5.0的
|
然后输入以下命令:
1 2 3 4
| apt install linux-modules-extra-`uname -r` modprobe binder_linux devices="binder,hwbinder,vndbinder" modprobe ashmem_linux #这几条命令,都不能报错,否则后面会出问题,不过最后一条在高版本内核好像是可选的,具体可以看redroid的官方文档
|
如果你这里出现了问题,那么你最好更换一个内核,我现在自己使用的内核是5.4.0-169-generic,你也可以尝试其他内核或者自己编译一个,这一方面自行谷歌。如果你实在是找不到符合的内核,或者说不会换内核,那么你可以尝试dd一个新的系统,我使用这个项目的脚本重装至ubuntu20.04系统,默认的内核就可以直接搭建,反而是更新后的不支持。
解决内核问题后你就可以开始安装了,首先你先安装一个docker
静待一会以后自动安装成功,首先你先安装一个最普通的,确保你的系统真的可以安装并使用安卓虚拟机
1 2 3
| docker run -itd --memory-swappiness=0 --rm --privileged --pull always \ -v /home/ubuntu/redroid/data:/data -p 55555:5555 \ --name test redroid/redroid:11.0.0-latest androidboot.redroid_gpu_mode=guest
|
这里我使用的是安卓11,足够使用了,而且后续装magisk的教程也是基于安卓11的镜像来做的。
当这个容器部署完成以后你可以在你本地使用adb进行连接
如果出现connected to 你的ip:55555,那就说明成功了,那么你可以直接使用scrcpy将画面投至你的电脑上了
如果你的电脑出现了Android窗口,那么恭喜你成功了。如果没有出现,那你可以把报错信息复制到redroid项目的issues进行搜索,一般都会有解答。
如果你成功了,那么你可以关闭这个容器了,因为这只是一个测试容器,将adb端口直接暴露在公网上是很不安全的,而且这个安卓系统不能为某一个应用程序分配root权限,所以我们需要再修改以下。
1
| docker stop test #删除这个容器
|
接下来就是为我们的容器安装magisk
先创建并且进入一个文件夹:
1 2
| mkdir ~/MagiskOnRedroid cd ~/MagiskOnRedroid
|
下面这段可以写成一个脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/bin/bash
find -maxdepth 1 -iname "magisk*" -not -name "*.apk" -exec rm -r {} \;
magisk_file="app-debug.apk"
if [ ! -f $magisk_file ]; then wget "https://cdn.jsdelivr.net/gh/topjohnwu/magisk-files@1cea72840fbf690f9a95512d03721f6a710fe02e/app-debug.apk" fi
unzip -j $magisk_file "lib/amd64-v8a/libmagisk64.so" -d magisk unzip -j $magisk_file "lib/amd64-v8a/libbusybox.so" -d magisk
mv -v magisk/libmagisk64.so magisk/magisk mv -v magisk/libbusybox.so magisk/busybox
|
给予权限然后运行
1 2
| chmod u+x a.sh bash a.sh
|
运行完毕以后再运行一下打包命令将magisk压缩
1
| tar --transform 's/.*\///g' -cf ~/magisk.tar --absolute-names $( find ~/MagiskOnRedroid | grep -E "magisk/|app-debug.apk$" )
|
再写一个脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
on early-init export PATH /sbin:/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin chmod 0700 /magisk.tar chown root root /magisk.tar chmod 0700 /setup.sh chown root root /setup.sh exec root root -- /setup.sh service magisk-d /sbin/magisk --daemon user root oneshot on boot start magisk-d on post-fs-data start logd rm /dev/.magisk-unblock start s1 wait /dev/.magisk-unblock 5 rm /dev/.magisk-unblock service s1 /sbin/magisk --post-fs-data user root oneshot service s2 /sbin/magisk --service class late_start user root oneshot on property:sys.boot_completed=1 exec /sbin/magisk --boot-complete on property:init.svc.zygote=restarting exec /sbin/magisk --zygote-restart on property:init.svc.zygote=stopped exec /sbin/magisk --zygote-restart
|
还是给予权限
1 2
| sudo chmod 644 ~/remove.rc sudo chown root:root ~/remove.rc
|
最后再写一个脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #!/system/bin/sh
tmpPushed=/magisk rm -rf $tmpPushed mkdir $tmpPushed tar -xvf /magisk.tar --no-same-owner -C $tmpPushed umount /magisk.tar ; rm -v /magisk.tar mkdir /sbin chown root:root /sbin
chmod 0751 /sbin cp $tmpPushed/magisk /sbin/ cp $tmpPushed/app-debug.apk /sbin/stub.apk find /sbin -type f -exec chmod 0755 {} \; find /sbin -type f -exec chown root:root {} \;
ln -f -s /sbin/magisk /system/xbin/su mkdir /product/bin chmod 751 /product/bin ln -f -s /sbin/magisk /product/bin/su
mkdir -p /data/adb/magisk chmod 700 /data/adb mv $tmpPushed/busybox /data/adb/magisk/ chmod -R 755 /data/adb/magisk chmod -R root:root /data/adb/magisk
|
还是给予权限
1 2
| sudo chmod 700 ~/setup.sh sudo chown root:root ~/setup.sh
|
结束了,再启动一个测试容器试试
1 2 3 4 5 6 7 8 9
| sudo docker run -itd --privileged \ --name a11 \ -p 55555:5555 \ -v ~/data:/data \ -v ~/remove.rc:/vendor/etc/init/remove.rc \ -v ~/setup.sh:/setup.sh \ -v ~/magisk.tar:/magisk.tar \ redroid/redroid:11.0.0-latest \ ro.secure=0 androidboot.redroid_gpu_mode=guest
|
安装magisk部分全部都是来自这里,我只是用我自己的话又说了一遍而已。
再次使用adb连接,然后使用scrcpy投影,不过这次要打开安装的magisk,看看到底安装成功没有,如果成功,那么就可以删除进行下一步了
设置成用浏览器访问
1 2 3 4 5 6 7 8 9
| sudo docker run -itd --privileged \ --name a11 \ -p 127.0.0.1:55555:5555 \ -v /root/apk/data:/data \ -v /root/apk/remove.rc:/vendor/etc/init/remove.rc \ -v /root/apk/setup.sh:/setup.sh \ -v /root/apk/magisk.tar:/magisk.tar \ redroid/redroid:11.0.0-latest \ ro.secure=0 androidboot.redroid_gpu_mode=guest androidboot.hardware=mt6891 ro.secure=0 ro.boot.hwc=GLOBAL ro.ril.oem.imei=861503068361145 ro.ril.oem.imei1=861503068361145 ro.ril.oem.imei2=861503068361148 ro.ril.miui.imei0=861503068361148 ro.product.manufacturer=Xiaomi ro.build.product=chopin
|
1 2 3 4 5 6
| docker run -itd --privileged \ -v /root/apk/scrcpy-web/data:/data \ --name scrcpy-web \ -p 127.0.0.1:48000:8000/tcp \ --link a11:myphone1 \ emptysuns/scrcpy-web:v0.1
|
进入容器手动adb连接
1 2 3 4 5 6 7 8
| docker exec -it scrcpy-web sh
env
adb connect 172.17.0.2:5555
adb devices
|
最后域名反代127.0.0.1:48000
, 设置密码访问