Featured image of post ReDroid+MAA:在Linux下游玩明日方舟

ReDroid+MAA:在Linux下游玩明日方舟

介绍了ReDroid以及MAA安装配置方法,实现在Linux环境下优雅的玩方舟

最近打算将ArchLinux作为主力系统挑战一下,由于平时有用电脑挂明日方舟的习惯,于是打算安装模拟器在Linux上。相较于Windows下各种xx模拟器百花齐放,Linux下就惨不忍睹了。网上搜索到的知名模拟器中,Anbox已经被作者弃坑了,Android Studio模拟器则是面向开发者,想要使用还要安装Android Studio开发环境。

be like

在搜索中,我发现ReDroid可以满足我的需求。作为一个“云手机”的方案,自然是可以部署在本地,摸索明白了部署到服务器上也挺不错(雾。

具体的安装的教程我参考的是Ivon大佬的这篇文章,在此基础上作了一些小小的修改。

# ReDroid配置

# 安装环境

ReDroid需要Linux内核启用binderfs模块,Arch Liunx默认的linux内核并不包含此模块,需要安装linux-zen模块。

1
pacman -S linux-zen

这里我强烈建议安装官方的安装指南来,我一开始按照Ivon大佬的教程尝试在默认的Linux内核里启用该模块,结果ReDroid一直启动不了。最后更换内核后就成功运行起来了QAQ。

接着安装docker和docker-compose,用来运行ReDroid的容器

1
sudo pacman -S docker docker-compose

还要安装ADB和Scrcpy,用于连接到安卓虚拟机

1
2
sudo pacman -S android-tools
sudo pacman -S scrcpy

# [可选]配置ARM转译器

大部分安卓应用都只有ARM版,这也意味着无法在X86的电脑上运行,这时就需要安装ARM转译器了。

然而,明日方舟居然支持X86,我们可以通过压缩工具解压方舟的安装包,可以看到lib下有x86目录。这也意味着如果只是用来玩方舟的话,完全不需要配置ARM转译。

同时,根据大佬的教程配置好转译器后,方舟反而会闪退,所以完全不用做此步😥。如果需要安装arm应用,可以看上面大佬的教程来做。

我后面可能会考虑使用libhoudini来作为ReDroid的转译器。

# 启动镜像

我这里就使用不包含ARM转译器的ReDroid继续了。通过下面的命令即可部署ReDroid:

1
2
3
4
5
sudo docker run -itd --privileged \
    -v /home/luobo/redroid:/data \
    -p 5555:5555 \
    --name redroid11 \
    redroid/redroid:11.0.0-latest

然后使用adb连接,并执行Scrcpy,显示手机画面:

1
2
adb connect localhost:5555
scrcpy -s localhost:5555

对于Google服务框架,我并不是刚需,就不安装了。如果需要安装,可以查看之前提到的教程。

Scrcpy2.0版本,已经自带了声音模块,无需再安装额外的软件。

如果遇到报错Failed to initialize audio/opus, error 0xfffffffe

只需要手动指定其他的音频解析器即可,如下面所示:

1
scrcpy -s localhost:5555 --audio-codec=aac

如果不需要声音,只需要加上--no-audio,如下面所示:

1
scrcpy -s localhost:5555 --no-audio

运行截图

# 安装应用及开关机

向ReDroid安装应用,只需要使用adb即可

1
adb -s localhost:5555 install "/mnt/data/Downloads/mrfz_2.0.11_20230605_102450_87eb5.apk"

开关机也很简单,我们只需对docker容器进行操作。

1
2
sudo docker stop redroid11  #关机
sudo docker start redroid11 #开机

# MAA配置

MAA作为自动化的挂机长草神器,肯定是要安排上的。

# 安装MAA

Arch用户直接aur安装即可

1
yay -S maa-assistant-arknights

我使用yay安装时,会安装许多用不到的库,而且会因为依赖错误而无法安装。故还是去官网下载压缩包解压使用。

# 配置MAA

我们需要修改./MAA-v{版本号}-linux-{架构}/Python/ 目录下的 sample.py 文件

首先需要配置adb连接,由于我们之前已经安装过adb了,这里直接替换地址即可:

1
if asst.connect('adb', '127.0.0.1:5555'):

我们可以执行python sample.py,如果输出连接成功则配置成功

之后我们需要配置MAA的任务,这里可以参考官方的文档进行修改

这里附上我的配置

 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
    asst.append_task('StartUp')
    asst.append_task('Fight', {
        'stage': '',                        # 关卡名,可选,默认为空,识别当前/上次的关卡。
        'report_to_penguin': True,          # 是否汇报企鹅数据
        "expiring_medicine": 999,           # 最大使用 48 小时内过期理智药数量,可选,默认 0
        # 'penguin_id': '1234567'
    })
    asst.append_task('Recruit', {
        'enable': True,                     # 是否启用本任务,可选,默认为 true
        'select': [4, 5],                   # 会去点击标签的 Tag 等级,必选
        'confirm': [3, 4],
        'times': 4
    })
    asst.append_task('Infrast', {
        'facility': [
            "Mfg", "Trade", "Control", "Power", "Reception", "Office", "Dorm"
        ],
        'drones': "Money",                  # 无人机用途 "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip"
        'replenish': True,                  # 贸易站“源石碎片”是否自动补货,
        'dorm_trust_enabled': True          # 是否将宿舍剩余位置填入信赖未满干员
    })
    asst.append_task('Visit')
    asst.append_task('Mall', {
        'shopping': True,
        'buy_first': ['招聘许可', '龙门币'],
        'blacklist': ['家具', '碳'],
    })
    asst.append_task('Award')

配置好后只需要一行命令就可以执行脚本了

1
python sample.py

至此,我们终于可以愉快的挂机了,再也不用担心体力被浪费了(雾

由于ReDroid是基于Dokcer的,这也意味着可以将其配置到服务器上,就可以实现24小时自动挂机了。不过,要想流畅的运行方舟,最好还是有4G以上的内存,目前我的服务器还没有这么大的内存,之后有机会再尝试吧。