本文提供在 Redroid 容器中运行 MAA(明日方舟助手)的完整配置方案,适用于无人值守自动化任务场景。
一、 适用场景
- 无人值守自动化:MAA 自动刷图、基建收菜等后台任务
- 无需实时预览:不使用 scrcpy 等实时投屏工具
- 追求极致稳定性:使用纯 CPU 软解,规避 GPU 硬件加速的潜在风险
- 共享显卡环境:多个虚拟机共用同一块物理显卡,不允许任何 GPU 复位
二、 虚拟机内核参数配置
在启动 Redroid 容器之前,需要先配置虚拟机的内核启动参数,启用 PSI(Pressure Stall Information)支持。
为什么必须启用 psi=1?
Android 12+ 的 lmkd(Low Memory Killer Daemon)完全依赖 Linux 内核的 /proc/pressure/memory 接口来判定内存压力并实施进程保护。如果内核未启用 PSI,会导致:
- 容器内
lmkd守护进程启动即挂死退出 ActivityManager每秒疯狂抛出连接失败异常- 白白耗尽 CPU 和 IPC 管道资源
配置步骤
编辑虚拟机 /etc/default/grub:
sudo nano /etc/default/grub修改启动参数(如果使用 Intel SR-IOV 显卡,保留相关参数;否则只需 psi=1):
GRUB_CMDLINE_LINUX_DEFAULT="quiet psi=1"更新引导配置并重启虚拟机:
sudo update-grubsudo update-initramfs -u -k allsudo reboot验证 PSI 是否生效
cat /proc/cmdline | grep psi应该看到输出中包含 psi=1。
三、 Docker Compose 配置
完整配置文件
在工作目录(如 /mnt/redroid)创建 docker-compose.yml:
services: redroid: image: redroid/redroid:12.0.0-latest container_name: redroid privileged: true restart: always shm_size: "1gb" ports: - "5555:5555" volumes: - ./data:/data devices: - /dev/binder:/dev/binder - /dev/hwbinder:/dev/hwbinder - /dev/vndbinder:/dev/vndbinder - /dev/dri/card0:/dev/dri/card0 - /dev/dri/renderD128:/dev/dri/renderD128 command: - androidboot.redroid_width=720 - androidboot.redroid_height=1280 - androidboot.redroid_dpi=320 - androidboot.redroid_fps=60 - androidboot.redroid_gpu_mode=guest - androidboot.use_memfd=1 - androidboot.redroid_input=touch核心参数详解
1. 显示分辨率参数
androidboot.redroid_width=720
- 虚拟屏幕宽度(像素)
- MAA 推荐使用 720×1280 标准竖屏分辨率
- 更低的分辨率可以减少渲染开销,提升图像识别速度
androidboot.redroid_height=1280
- 虚拟屏幕高度(像素)
- 与 MAA 的图像识别模板匹配
- 过高的分辨率会增加 CPU 软解负担
androidboot.redroid_dpi=320
- 屏幕像素密度,控制 Android 系统 UI 元素的缩放比例
- 320 对应标准高清屏幕,与明日方舟官方推荐一致
- 影响游戏内按钮和文字的显示大小
2. 性能参数
androidboot.redroid_fps=60
- 目标帧率上限,限制渲染刷新率为 60 FPS
- 对于 MAA 自动化场景,实际帧率通常低于此值
- 可适当降低至 30 以进一步节省 CPU 资源
3. GPU 渲染模式(核心参数)
androidboot.redroid_gpu_mode=guest
这是 MAA 配置与硬件加速配置的核心差异:
guest:纯 CPU 软件渲染模式,完全不使用 GPU 硬件加速host:宿主机 GPU 硬件加速模式
选择 guest 的原因:
- MAA 不需要高性能 3D 渲染,2D UI 软解完全够用
- 彻底规避 Intel SR-IOV 等虚拟化显卡的 GPU 复位风险
- 避免与其他虚拟机争抢 GPU 资源
- 现代 CPU(如 12 代酷睿)的软解性能足以应对明日方舟的 2D 游戏画面
- 极致稳定性:软解模式不会触发任何 GPU 相关故障
4. IPC 通信优化
androidboot.use_memfd=1
- 启用内存文件描述符(
memfd_create()系统调用) - 使用匿名内存文件替代传统 tmpfs
- 减少磁盘 I/O,提升 Binder IPC 通信效率
- Android 12+ 的推荐配置
5. 输入设备类型
androidboot.redroid_input=touch
- 模拟触摸屏输入设备(而非鼠标指针)
- MAA 必需参数:MAA 通过 ADB 发送触摸事件
- 不启用会导致 MAA 的点击、滑动操作完全失效
四、 与硬件加速配置的对比
| 配置项 | MAA 软解配置 | 硬件加速配置 | 说明 |
|---|---|---|---|
| GPU 模式 | guest(CPU 软解) | host(硬件加速) | 软解更稳定,硬件加速性能更强 |
| GPU 节点绑定 | 不需要 | androidboot.redroid_gpu_node=/dev/dri/renderD128 | 软解模式无需指定渲染节点 |
| OMX 硬编禁用 | 不需要 | ro.kernel.redroid.omx=0androidboot.redroid_omx=0 | 软解模式天然不会触发 GPU 复位 |
| DRI 设备挂载 | 可选(建议保留) | 必需 | 软解模式下挂载仅用于兼容性检测 |
| CPU 占用 | 中等(2D 软解) | 极低(GPU 卸载) | MAA 场景下 CPU 占用完全可接受 |
| GPU 复位风险 | 完全规避 | 需额外配置防护 | 共享显卡环境的最优选择 |
| 适用场景 | 自动化任务、后台挂机 | 实时投屏、高性能游戏 | 根据实际需求选择 |
五、 启动容器
cd /mnt/redroid
# 首次启动docker compose up -d
# 更新配置后重启docker compose downdocker compose up -d六、 验证配置
检查渲染模式
docker exec redroid dumpsys SurfaceFlinger | grep -E "GLES|Vendor|Renderer"预期输出(软解模式):
GLES: Google, llvmpipe (LLVM 15.0.0, 256 bits), OpenGL ES 3.0 Mesa 24.0.8输出中显示 Google 和 llvmpipe 说明正在使用 CPU 软件渲染,这正是 MAA 场景的预期配置。
检查 lmkd 状态
确认没有 ActivityManager 连接失败的报错:
docker exec redroid logcat -d | grep -i "lowmemorykiller"如果没有高频报错,说明 PSI 配置生效。
检查系统属性
docker exec redroid getprop | grep -iE "gpu|redroid"应该看到 [ro.kernel.redroid.gpu.mode]: [guest]。
七、 MAA 连接与使用
连接设备
# 从宿主机连接adb connect 127.0.0.1:5555
# 验证连接adb devices启动 MAA
在 MAA 客户端中:
- 选择设备:
127.0.0.1:5555 - 配置任务:刷图、基建、公招等
- 启动自动化任务
软解模式下,MAA 可以正常执行所有自动化操作,包括图像识别、点击、滑动等。
八、 常见问题
Q: 为什么不用硬件加速?
A: 对于 MAA 自动化场景:
- 不需要高帧率和实时投屏
- 2D 游戏画面软解性能足够
- 软解模式稳定性更高,不会触发 GPU 复位
- 避免与其他虚拟机争抢显卡资源
如果需要实时投屏或玩原神等 3D 游戏,参考硬件加速配置文档。
Q: CPU 占用高怎么办?
A: 可以降低帧率和分辨率:
- androidboot.redroid_fps=30 # 降低至 30 FPS- androidboot.redroid_width=640 # 降低分辨率- androidboot.redroid_height=1136Q: MAA 点击操作无响应?
A: 确认启动参数中包含 androidboot.redroid_input=touch,这是 MAA 必需的参数。
Q: ActivityManager 报错刷屏?
A: 检查虚拟机内核参数中是否包含 psi=1:
cat /proc/cmdline | grep psi如果没有,重新配置 GRUB 并更新引导。
九、 性能与稳定性
CPU 占用参考
在 12 代酷睿 i5 上运行明日方舟:
- 待机场景:5-10% CPU
- 战斗场景:15-25% CPU
- MAA 识图操作:10-20% CPU
对于服务器级 CPU 或多核心处理器,占用更低。
长期稳定性
软解模式下:
- 无 GPU 复位风险
- 不影响其他虚拟机
- 可 7×24 小时无人值守运行
- 容器重启后自动恢复
总结
MAA 明日方舟助手在 Redroid 中的最佳配置是使用 CPU 软解模式(gpu_mode=guest),配合 PSI 内核支持(psi=1)和 触摸输入模拟(redroid_input=touch)。
这种配置方案:
- 稳定性极高,完全规避 GPU 相关故障
- 性能充足,现代 CPU 软解 2D 游戏毫无压力
- 兼容性好,适用于各种虚拟化环境
- 资源友好,不与其他虚拟机争抢显卡
如果后续需要实时投屏或运行 3D 游戏,可以参考硬件加速配置文档,调整 gpu_mode 和相关参数。