使用 redroid 玩耍 Arknights
至今为止我们已经尝试过 anbox, waydroid 等优秀的安卓模拟器了,但是实际上我还是感觉不太方便。之后我尝试了一下 redroid,并觉得这才是我希望的解决方案。
本文将会介绍在 Arch Linux 上使用 redroid 运行明日方舟国服、日服的教程,以及配置 MAA 进行自动化玩游戏的相关内容。
准备工作
首先你需要切换到 linux-zen
内核,或者使用其他带有 binderfs
和 memfd
模块的内核。
其次你需要安装 docker,如果有必要可以配置使用 sjtu 的镜像。
启动模拟器容器
首先随便找个地方创建一个文件夹(例如 ~/vms/redroid11
),当作安卓模拟器的 /data
目录。
接下来直接使用 docker 创建并运行一个安卓模拟器。
docker run -d --privileged \
-v ~/vms/redroid11:/data \
-p 5555:5555 \
--name redroid11 \
redroid/redroid:11.0.0-latest \
androidboot.redroid_width=1280 \
androidboot.redroid_height=720 \
androidboot.redroid_gpu_mode=host \
androidboot.use_memfd=1
容器启动之后就会直接开启模拟器,可以使用 adb connect localhost:5555
连接到模拟器。连接完成之后直接使用 scrcpy -s localhost:5555
就可以看到模拟器的界面。声音可能由于编解码器的问题传不过来,如果想要打开声音需要给 scrcpy
添加 --audio-codec=raw
参数。如果一切正常就可以看到如下界面。
之后如果要关闭模拟器,可以使用 docker stop redroid11
;如果想要再次开启模拟器,就使用 docker start redroid11
。
如果你不小心配置崩了,可以用 docker rm redroid11
删除容器,并使用 sudo rm -rf ~/vms/redroid11
清空整个目录,然后从头开始重新来一遍。
安装国服
直接去 ak.hypergryph.com 上下载 apk,然后使用 adb install arknights-xxx.apk
安装。
安装完成之后直接启动即可,不会有任何运行的问题。
安装日服
去 apkpure 或者 uptodown 等网站下载 apk,然后使用 adb install xxx.apk
安装到模拟器中。
这还没完,你还需要一个 .obb
文件才可以正常运行,不知道为什么上面的网站都没抓这个 .obb
,所以你需要自己找到这个 .obb
文件然后放到合适的位置。一般来说,你可以从一个已经通过 Google Play 安装完成的设备上拷贝下来,然后复制到 redroid 上面。
这个 .obb
文件位于 /storage/emulated/0/Android/obb/com.YoStarJP.Arknights/main.2000094.com.YoStarJP.Arknights.obb
,大概有 1.7G 大小。
放好之后直接启动就可以了,实际上并不需要使用代理或者 Play Service 就可以运行,帮我们省去了很多麻烦事。就是跑起来有点卡
配置 MAA
安装 maa-assistant-arknights-bin
(AUR),安装完成之后可以使用 maa --help
查看帮助。
根据 MAA 惨不忍睹的文档,我们进行如下的配置工作。
编辑 ~/.config/maa/asst.toml
,写入如下内容。
[connection]
type = "ADB"
adb_path = "adb"
device = "localhost:5556"
config = "CompatPOSIXShell"
[instance_options]
touch_mode = "MAATouch"
deployment_with_pause = false
adb_lite_enabled = false
kill_adb_on_exit = false
注意 device 一行写入 adb devices
连接到的设备名称,一般就是你 connect 的时候的地址。如果你可能同时跑多个模拟器,那么这里必须要留空(注释掉)。
之后创建目录 ~/.config/maa/tasks
,里面就可以开始写你的各个任务了。
本人的配置文件如下(具体每个字段可以参考写的稀烂的集成文档):
# 国服每日任务
# cn_daily.yaml
tasks:
- type: StartUp
params:
client_type: Official
start_game_enabled: true
- type: Recruit
params:
refresh: true
select: [4, 5, 6]
confirm: [4, 5]
times: 4
- type: Infrast
params:
mode: 0
facility:
- Mfg
- Trade
- Power
- Control
- Reception
- Office
- Dorm
dorm_notstationed_enabled: true
dorm_trust_enabled: true
drones: CombatRecord
- type: Mall
params:
shopping: true
buy_first: ["招聘许可"]
blacklist: ["加急许可", "家具零件", "碳"]
- type: Award
# 清体力
# cn_fight.yaml
tasks:
- type: StartUp
params:
client_type: Official
start_game_enabled: true
- type: Fight
params:
stage:
default: ""
description: 哪一关
medicine:
default: 0
description: 吃多少药
expiring_medicine: 0
stone:
default: 0
description: 吃多少石头
report_to_penguin: true
server: CN
client_type: Official
# 肉鸽刷到死
# cn_roguelike.yaml
tasks:
- type: StartUp
params:
client_type: Official
start_game_enabled: true
- type: Roguelike
params:
theme: Mizuki
core_char: 焰影苇草
use_support: false
refresh_trader_with_dice: true
日服的相关配置和国服区别不大,主要是 client_type
设置成 YoStarJP
,以及汇报企鹅物流的 server
写成 JP
。
之后使用 maa run <task_name>
运行即可,例如 maa run cn_daily
。
如果上面没有填写 device 参数的话,就在前面加一个 -a <device>
参数指定 adb
设备,例如 maa run -a localhost:5555 cn_daily
。
全部配置完成之后你就可以开始挂机了,甚至可以同时挂两个号。
あとがき
因为图像是通过视频流传过来的,所以画质可能不会很清楚,这一点上面大概比不过 Waydroid 之类的模拟器,貌似也没有什么很好的解决办法。
如果想要调整分辨率可以使用 adb shell wm size 1920x1080
。
如果想要调整 DPI 可以使用 adb shell wm density 240
。
如果你想尝试装上 Google Play,你可以尝试参考这篇 ReDroid 教學:用 Docker 跑 Android 系統,在 x86 電腦玩 ARM 手機遊戲。经过我的尝试,确实可以装上 Google Play,但是每次安装/更新 arm 架构的 app 都会失败,然后到头来还不如 Aurora Store 好使。顺便一提 Aurora Store 4.3.5 版本在 redroid 里面会直接崩溃,我也不知道为什么,但是回退到 4.2.5 版本就可以正常运行了。
顺便一提,如果跑日服比较卡顿的话,可以将 /opt/maa/resource/config.json
复制到 /opt/maa/resource/global/YoStarJP/resource/config.json
,然后编辑其中的 taskDelay
属性,让 MAA 操作的慢一点,这样可以减少 MAA 识别失败的几率。
Good Luck & Have Fun!
评论
少女祈祷中...