使用Archlinux轻松部署明日方舟MAA
在Archlinux愉快使用MAA
首先确保你的linux内核是linux-zen,我不清楚其他内核能否正常运行,大家可以在评论区留言其他内核的情况。
使用podman启动redroid,我们使用redroid运行安卓模拟器
podman的安装
sudo pacman -S podman
我将模拟器的data目录对应到~/Softwares/Arknights文件夹,你可以选择其他的地方
sudo podman run -itd --privileged \
-v ~/Softwares/Arknights:/data \
-p 5555:5555 \
--name arknights \
docker.io/redroid/redroid:11.0.0-latest
注意podman前面一定要加sudo,加sudo和不加sudo的podman是两个不同的podman,前者是现在运行podman的用户的rootless实例,后者是root用户的podman。
运行这个命令,等待系统从docker.io拉取redroid image即可。
这里和docker不同的是,我们一定需要加上docker.io/这个前缀,因为podman默认不会从docker.io拉取镜像,所以我们需要手动指明。
当我们运行完上面的命令时,使用sudo podman ps -a查看容器的状态:

注意看STATUS这一列,确保我们的arknights容器的STATUS是Up状态,这代表我们的容器正常运行。
然后使用adb连接。在使用adb之前,我们需要先安装adb:
sudo pacman -S android-tools
然后运行adb version可以查看状态

然后运行adb connect localhost:5555连接到我们的明日方舟模拟器:

注意看运行完命令后,输出connected to localhost:5555,同时运行adb devices还会输出localhost:5555 device,这就代表我们的模拟器启动成功了
现在,我们可以使用scrcpy控制模拟器的屏幕了:
首先安装scrcpy。
sudo pacman -S scrcpy
然后运行scrcpy -s localhost:5555即可打开图形化控制界面

因为我已经安装了明日方舟,所以桌面上直接显示了出来,在使用MAA之前,我们应该先在模拟器里安装好明日方舟
前往明日方舟官网下载apk文件(注意在本机下载即可,在虚拟机里下载不太方便)

然后使用adb进行安装:
adb -s localhost:5555 install ~/Downloads/arknights-hg-2671.apk
安装完成后,鼠标在scrcpy里面上划即可找到明日方舟。

然后我们现在手动进去更新,登录一下。完成之后模拟器这块就弄好了。
Archlinux使用MAA,推荐使用maa-cli,你可以查看官方的说明安装maa-cli,并查看maa-cli的使用文档。
Archlinux可以直接使用yay -S maa-cli安装maa-cli,如果没有配置aur的yay,可以去官方论坛查看安装教程
安装好maa-cli之后,我们可以使用 maa install 安装 MaaCore 及资源,并使用 maa update 更新 MaaCore 及资源,使用 maa self update 可以更新maa-cli本身。
一旦完成了 MaaCore 的安装,通常情况下,你无需额外配置就可以直接运行任务。默认配置可能不适用于所有用户,因此你可以通过以下命令来初始化配置:
maa init
通过这个命令,你可以交互式地配置 MaaCore 的相关配置。
这一块我以后再慢慢更新,接下来我们研究一下如何配置定时启动。
最开始,我打算使用systemd和bash脚本来进行自动化配置,但是完成之后,又想添加很多其他功能,于是我打算直接使用Rust开发一个软件,来自动化的定时运行maa。
我们先实现简单功能,开发二进制文件,让它可以自动启动podman的安卓模拟器,然后运行maa,然后自动的关闭。
现在的二进制文件的基本功能已经有了,我暂时起名为easy_maa,简单介绍一下。
重新梳理一下运行的思路,我们使用podman部署redroid容器,在这个容器里面运行明日方舟。同时我们可以使用外部的adb来连接这个容器,maa控制明日方舟客户端仅仅需要一个adb地址就可以了,所以这里的连接其实相当简单。maa-init的定时运行其实完全可以使用systemd来做到,但是我为了能够在其中添加一些额外的功能,也包括未来给archlinux适配好用的maa的GUI界面,所以选择创建一个新的二进制文件专门运行maa-cli。
通过这个二进制文件调用外部的maa-cli的功能,我们可以方便的自动运行maa了。
从github克隆源代码,并安装rust开发工具链,在项目目录中调用cargo build --release即可编译成功二进制文件。之后创建.env文件,在里面填写适用于自己的配置信息即可。

最后,把二进制文件从target/release文件夹移动到一个你喜欢的位置,就可以运行了。
不过因为我最开始开发的时候没有考虑那么多用户,sudo的问题,导致现在问题很多。现在的podman必须在sudo环境下运行,但是maa又安装在普通用户目录下,在这个场景下运行,就需要指定很多东西,这很麻烦,中间还出现了maa_core找不到的问题,不过后面一番探索也是勉强解决了这个问题。
目前的代码很糟糕,可拓展性很差,还需要手动修改源代码编译才能运行。
现在把打包好的二进制文件放到/usr/bin目录下,也就是二进制文件路径为/usr/bin/easy_maa,然后在控制台执行sudo ./easy_maa,即可运行。现在要手动创建.env文件(在用户的~/.config文件夹下创建~/.config/easy_maa/.env文件,并在里面配置相应的环境变量),我知道这个操作非常的恶心,但是现在就是写成这样了,后面再慢慢调整。
sudo和普通用户之间的差别太大了,我在想后面或许可以单独创建进程跑模拟器,然后我们的二进制文件就是普通用户权限执行。到时候用一个单独的脚本来完成吧。
现在的运行效果如下:

