iWay

  • ChatGPT Prompt Templates
  • ChatGPT
  • AI IMAGE
  • AI 人工智能
  • 虚拟技术
  • 账号共享
  • 科学上网
  • Account

云手机搭建

Published by Chris on January 8, 2023January 8, 2023

5 1 vote
Article Rating

引言

最近找app远程调试环境,最后选择了docker启动容器的比较方便,支持ADB远程连接。使用scrcpy连接可以提供桌面环境,突然发现这个镜像的架构支持Arm64,我还有好几个吃灰的甲骨文,遂试了试体验良好,可以当成一个云手机来挂机。

Arm64架构并不是必须的,就像我如上说明,该镜像支持Amd64,如果你认为你的机器性能不错就可以试试。

介绍

甲骨文Arm使用的CPU给的性能很足,4c的geekbench5跑分有足足3400分左右,参考当前最流行的手机处理器芯片骁龙870 geekbench5 3100分来说是非常良心的了。使用它来虚拟一个云手机来说性能充足。

我在这里选择的是Redroid,ReDroid(Re mote an Droid)是一个 GPU 加速的 AIC(Android In Container)解决方案。Docker您可以在 Linux 主机(Docker, podman, k8s etc.)中启动许多实例。ReDroid同时支持arm64和amd64架构。 ReDroid适用于云游戏、VMI(虚拟移动设备)、自动化测试等。

根据该镜像描述,对云游戏有很好的支持,符合我们的需求,所以这里直接使用它启动容器。

你也可以用来配置python selenium做自动化,因为有root权限,也能用于app开发调试,并不一定拿来挂机游戏,说到底这是我的需求。

接下来配置过程中,最麻烦的不是让容器启动,而是为了你连接桌面过程中更加安全可靠而做的努力,如果你仔细阅读完是没有问题的。

性能/资源占用率参考

看不清图中文字,右键标签打开放大看

总体来说还可以,能不用软解就不用,硬解性能测试着比软解更好,1080p60能维持这个占用率,跑些非大型游戏挂机脚本挺不错的,白嫖还想要什么飞机?(这个测试的是redroid13,如果是8.1占用率应该更低)

云手机,搭建

使用

下方测试系统是oracle 原生 ubuntu 20.04,其他系统我没有一一测试,没什么区别。

一· 检查内核

首先查看一下你的内核版本是否>=5.0,根据介绍,如果内核在此版本之下,许多指令无法适配,为了不出错还是升级一下内核,如果不升级内核该镜像issue也给出解决方案,我懒得看,有兴趣自己研究去。

uname -r
5.15.0–1013-oracle #这里最好>=5.0

二. 安装模块

apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices=“binder,hwbinder,vndbinder” #进程通信模块
modprobe ashmem_linux #内存共享模块
#后两条命令不提示错误 / Enter后没有任何反应说明启动成功

上面两个模块都是Android运行所必须的依赖,必须启动成功,否则虚拟化失败,如果这里出错请不要下面的步骤,请自己先解决模块启动失败的问题,如果你是用的oracle 原生镜像,这里应该是没问题的,如果是已经通过网络dd系统发生的错误,这里不给出解决办法请自己查询。(oracle 自带的ubuntu 20.04正常,其他自测)

三. 安装docker环境

怕有些人连docker是什么东东都不知道,这里用docker提供的脚本一键安装环境

curl -fsSL https://get.docker.com | bash

四. 拉取docker镜像并启动容器

docker run -itd \
–memory-swappiness=0 \
–privileged –pull always \
-v /root/test/data:/data \
-p 55555:5555 \
redroid/redroid:13.0.0-latest \
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 \
redroid.width=720 redroid.height=1280 \
redroid.gpu.mode=guest \
–rm

解释这条命令:

  • run -itd 意思是后台运行
  • --memory-swappiness=0 禁止swap,防止I/O成为性能瓶颈,甲骨文Arm给的内存挺多的,满配24g内存,不用担心用得完
  • --privileged 启动特权模式,使用该参数,container内的root拥有真正的root权限。防止奇奇怪怪的毛病
  • -v /root/test/data:/data 映射目录,你可以把/root/test/data换成其他的目录,方便你备份
  • -p 55555:5555 映射ADB端口,这个我选择是55555,你可以选择其他端口,最好修改一个,防止扫描器扫描
  • redroid/redroid:13.0.0-latest(底层是Android13) 使用的镜像tag,这里我选择这个tag,群友说redroid:8.1.0-arm64(底层是Android8)这个资源占用最少,性能最好,出问题概率最低。你可以替换成这个我没试过。其他版本: 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/098b8809d85d
  • redroid.width=720 redroid.height=1280 这个是设置分辨率,对于这种远程ADB来说,这个参数是最好的,如果非常卡可以适当调小
  • redroid.gpu.mode=guest 强制选择这个容器的软解(如果不加这条参数就是硬解),区别在于:软解更占资源,奇奇怪怪的问题少;硬解性能高、资源占用率低。能用硬解就用硬解,不同版本硬解/软解问题不同,硬解不能用时再开软解,一般没多大问题。欢迎下方评论区反馈,这个就自测了
  • --rm 最后加上stop容器时删除容器,省得手动删除,因为有目录映射出来,所以重新启动数据也会保存在那个映射目录里

五. 输入如上命令后查看运行状态

root@ucbro:~/a# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85ce1da669c5 redroid/redroid:13.0.0-latest “/init qemu=1 androi…” 53 minutes ago Up 53 minutes 0.0.0.0:55555->5555/tcp, :::55555->5555/tcp suspicious_panini
#查看是否如上启动成功

六. 通过adb连接到容器,才能使用scrcpy使用桌面环境:

D:\tools\scrcpy-win64>adb connect 1.2.3.4:55555
connected to 1.2.3.4:55555
#出现这个说明连接成功,根据上面防火墙规则,这里只能通过你的梯子连接,也就保障安全性

下面通过scrcpy.exe连接桌面

如果觉得桌面不流畅,说明延迟高。可选参数:

  • -b384k :比特率 384kbps。严重影响画质
  • -m960 :将屏幕大小调整为正常大小的一半(假如你分辨率为1920)。极大地影响延迟

例如这样用scrcpy.exe -b384k -m960

D:\tools\scrcpy-win64>scrcpy.exe
scrcpy 1.24
D:\tools\scrcpy-win64\scrcpy-server: 1 file pushed, 0 skipped. 43.6 MB/s (41159 bytes in 0.001s)
[server] INFO: Device: Xiaomi redroid13_arm64 (Android 13)
INFO: Renderer: direct3d
INFO: Initial texture: 720×1280
#adb连接成功后,直接cmd窗口运行,这个程序就会打开一个安卓的窗口

7. 停止

#client
D:\tools\scrcpy-win64>adb disconnect
disconnected everything
#server
docker stop <CONTAINER ID>#因为加了rm,所以停止即删除,数据在映射目录里

结语说明

如果你单单运行一个容器不挂游戏的话,基本是不吃资源的,这也与这个镜像优化好有关,最好使用4gb以上的Arm运行,防止内存不够,这点内存对甲骨文来说是很简单的啦。

但这里也有不足的地方,比如这个容器无法加密,无法对adb连接进行授权,需要通过iptables等防火墙进行限制只有你本地的ip进行访问,或者使用VPN的形式,设置这个容器只能内网访问,通过VPN登入内网,这就靠大家自行发挥了,不然被扫到就是纯纯肉鸡。

参考

https://hub.docker.com/r/redroid/redroid

 

Categories: 手机虚拟技术有用的文章收集虚拟技术
Tags: 云手机搭建

Chris

Chris

Just me, need more info?

5 1 vote
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

文章分类

  • Artificial Intelligence 人工智能 AI
  • Blog
  • ChatGPT
  • CMS Content Management System
  • Database
  • Features
  • Frontend
  • Good Deals
  • Javascript
  • Linux 相关文章
  • MariaDB
  • MySQL
  • OpenAI
  • Programming
  • Saved
  • Shared
  • Stable Diffusion
  • Style CSS
  • Web Server
  • Wordpress
  • 个人随想
  • 保健知识
  • 加密币
  • 区块链
  • 奈飞 Netflix
  • 手机卡相关
  • 手机虚拟技术
  • 有用的文章收集
  • 油管 Youtube Premium
  • 流媒体账号
  • 电子钱包
  • 礼品卡
  • 科学上网
  • 虚拟技术
  • 谷歌 Google Drive
  • 账号共享

最新文章

  • AI的大模型训练和应用开发的几个主要领域
  • Install Ubuntu 25.04 and llama.cpp on Dell G5 SE 5505
  • Proxmox VE 服务器集群
  • BLAS and BLIS
  • 什么是GEMM

最新留言

  1. Claudia on Set Up Nginx FastCGI Cache to Reduce WordPress Server Response Time
  2. zheyu tian on 爱沙尼亚 Data only eSIM卡,可接短信,永不过期
  3. canadian viagra generic pharmacy on ChatGPT
  4. drover sointeru on ChatGPT
  5. drover sointeru on ChatGPT

Related Posts

Wordpress

Wordpress Localization

0 0 votes Article Rating wp i18n make-pot . languages/domain.pot (这个domain很重要,不是plugin的名字) copy my-plugin.pot to domain-zh_CN.po msgfmt -o domain-zh_CN.mo domain-zh_CN.po copy po和mo文件到 wp-content/languages/plugins/ 目录 change wp-config.php: define (‘WPLANG’, ‘zh_CN’); Go to wp-admin/options-general.php or “Settings” -> “General” Read more…

云手机,搭建
有用的文章收集

加密中不同文件格式的区别

0 0 votes Article Rating SSL SSL – Secure Sockets Layer,现在应该叫”TLS”,但由于习惯问题,我们还是叫”SSL”比较多.http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样在干嘛,不用动,这个加密对用户和开发者来说都是透明的.[维基百科] OpenSSL – 简单地说,OpenSSL是SSL的一个实现,SSL只是一种规范.理论上来说,SSL这种规范是安全的,目前的技术水平很难破解,但SSL的实现就可能有些漏洞,如著名的”心脏出血”.OpenSSL还提供了一大堆强大的工具软件,强大到90%我们都用不到. 证书标准 X.509 – 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. 编码格式 同样的X.509证书,可能有不同的编码格式,目前有以下两种编码格式. PEM – Privacy Enhanced Mail,打开看文本格式,以”—–BEGIN…”开头, “—–END…”结尾,内容是BASE64编码.查看PEM格式证书的信息: openssl x509 -in certificate.pem -text -nooutApache和*NIX服务器偏向于使用这种编码格式. DER – Distinguished Encoding Rules,打开看是二进制格式,不可读.查看DER格式证书的信息: openssl x509 -in Read more…

USPS Firstclass fee for letter
有用的文章收集

How Much Does an Envelope Weight?

5 1 vote Article Rating A standard #10 envelope 4.5″ x 9.75″ weighs 0.238 ounces (6.75 grams), on average. There are a bunch of different types of envelopes the #10 is the most common commercial Read more…

  • Account
  • AI IMAGE
  • ChatGPT
  • ChatGPT Prompt Templates
  • Login
  • Logout
  • Members
  • Password Reset
  • Register
  • User
wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply