介绍
甲骨文Arm白嫖了一年多,一直吃灰,逛loc发现有大佬发的文章感觉对小白不怎么友好,简单梳理,尝试了一下CPU给的性能很足,挂游戏,挂免签,绰绰有余,更多的花活自己发掘,跟着本篇文章思路走,快速搭建自己的云手机!
一· 检查内核
首先查看一下你的内核版本是否>=5.0,根据介绍,如果内核在此版本之下,许多指令无法适配,为了不出错还是升级一下内核,如果不升级内核该镜像issue也给出解决方案,我懒得看,有兴趣自己研究去。
二. 安装模块
上面两个模块都是Android
运行所必须的依赖,必须启动成功,否则虚拟化失败,如果这里出错请不要下面的步骤,请自己先解决模块启动失败的问题,如果你是用的oracle 原生镜像,这里应该是没问题的,如果是已经通过网络dd系统发生的错误,这里不给出解决办法请自己查询。(oracle 自带的ubuntu 20.04正常,其他自测)
三. docker环境
本文章主要是依靠宝塔面板部署,软件商店自行安装docker即可,安装后无需操作!
四. 拉取docker镜像并启动容器
run -itd
意思是后台运行--memory-swappiness=0
禁止swap,防止I/O成为性能瓶颈,甲骨文Arm给的内存挺多的,满配24g内存,不用担心用得完--privileged
启动特权模式,使用该参数,container内的root拥有真正的root权限。防止奇奇怪怪的毛病-v /root/test/data:/data
映射目录,你可以把/root/test/data换成其他的目录,方便你备份- 没有映射adb端口,因为我们这里不需要它暴露adb端口到外网
redroid/redroid:13.0.0-latest
(底层是Android13) 使用的镜像tag,其他版本: https://hub.docker.com/r/redroid/redroid/tags (切换版本或者重置容器时,记得删除原来的映射目录或者选择其他的目录,不然会出错rm -r /root/test/data
)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
这部分是白嫖群友的,据他说是红米Note10的参数,这个是为了模拟一下手机型号,某些游戏检测到不合法的手机型号会封号,感兴趣自己抓一下build.prop参数,替换掉。方法:https://www.jianshu.com/p/098b8809d85dredroid.width=720 redroid.height=1280
这个分辨率可以适当调大,因为是web端嘛,自测redroid.gpu.mode=guest
强制选择这个容器的软解(如果不加这条参数就是硬解),区别在于:软解更占资源,奇奇怪怪的问题少;硬解性能高、资源占用率低。能用硬解就用硬解,不同版本硬解/软解问题不同,硬解不能用时再开软解,一般没多大问题。欢迎下方评论区反馈,这个就自测了--rm
最后加上stop容器时删除容器,省得手动删除,因为有目录映射出来,所以重新启动数据也会保存在那个
五.用docker运行scrcpy-ws获得web端
目前ws-scrcpy没有官方镜像,有人提了pr但是都一年多了都没有合并,看原作者的意思是不希望维护docker镜像,需要该pr的人维护,但是提该pr的人可能也觉得麻烦不想维护…..
所以我自己打包了个scrcpy-web镜像push到dockerhub上去了,支持amd64和arm64(其他架构貌似需求不大所以没加),随缘更新,保证可用就行。
-p 127.0.0.1:48000:8000/tcp
这里只映射127.0.0.1,因为我们下面需要用nginx做密码登录,所以只允许本机访问,防止有人扫描抓取,如果你有其他玩法,就改变这个映射端口。--name scrcpy-web
这里最好加个名称,因为后面连接adb要用到,比如这个名称就叫scrcpy-web
-v /root/scrcpy-web/data:/data
映射一个目录进去,方便到时候用adb install 安装本地apk,因为启动的安卓容器只能由这个scrcpy-web访问,方便以后本地向容器里传数据。--link redroid:myphone1
意思是本容器连接到其他容器,<你需要连接的容器名称>:<自定义别名>,这里这么写就是为了只需要scrcpy-web容器能连接改adb端口,其他都是拒绝,为了安全。
等待容器启动成功后,用curl访问一下127.0.0.1:48000查看是否启动成功
六. scrcpy-web容器连接adb端口
这个简单,scrcpy-web
是你给scrcpy-web
镜像启动的容器起的名称,myphone1
是安卓容器redroid
的自定义别名,如果你没有改动我上面的介绍,直接输入就行。
七.站点配置修改并增加密码登录
1.新建站点 – 绑定域名
3.站点配置 – 配置文件 – 添加如下代码
示例添加仅供参考
一台服务器创建多台云手机
–name=redroid1 容器名称不能重复,之前为redroid这里改为redroid1
-v /root/test1/data:/data \ 映射目录做了修改防止冲突
redroid/redroid:12.0.0-latest \ 改为安卓12版本 13版本不友好,很多挂机软件无法通过应用侧载功能造成无法使用
scrcpy-ws web端添加连接多个容器
–link redroid1:myphone2 别名这里我是直接简单粗暴+1 自己改什么随意啦!
scrcpy-web容器连接adb端口
myphone2 修改成容器的别名
成功出现两台云手机
这里只是简单给个思路,花活疑问自行google解决!
webview浏览器无法下载任何文件怎么办?
第二步用docker运行scrcpy-ws获得web端>里向主机映射了一个目录-v /root/scrcpy-web/data:/data
用来向容器里传数据,所以可以这么操作
如果你无法通过webview浏览器下载东西,请装一个via浏览器
下载via.apk
放到/root/scrcpy-web/data
目录下
延伸操作,如果一台机子开了多台云手机是无法用上面命令安装apk的,所有需要指定一个容器
myphone2 修改为自定义别名
这样你就离开古老的webview了
至此本篇文章结束,梳理了以下两篇文章,对小白还是很有用的,更多奇淫技巧,科技狠活,关注下边链接
转载自 私は萌いQ(˘•ω•˘) – 人生の幸せな瞬間を記録する
https://blog.imoeq.com/oracle-arm-run-android-by-docker/
https://blog.imoeq.com/scrcpy-run-a-android-web-page/
参考
https://www.cnblogs.com/bzdfxx/p/9767643.html
https://blog.csdn.net/zjt107/article/details/51354702
转载原创文章请注明,转载自: 白纸博客 » 甲骨文ARM利用docker镜像运行Android云手机 web远程桌面