MAAsDocker(个人使用)
流程:crontab → 更新 MAAsDocker → Compose 启动一次性容器 → 容器更新 MAAsConfig → 更新 MAA → 重启 ReDroid → 执行任务 → 停止 ReDroid → 容器退出。
构建
开发板目录 /home/lichx/maas/MAAsDocker。修改 .env 的代理、Git 地址和 ADB 地址后:
mkdir -p ../state/{home,tmp,logs}
docker compose build
docker compose up -d
docker compose logs -f app
Dockerfile 内仍然 git clone MAAsConfig,启动时两层仓库都 git pull --ff-only。配置和脚本改完需提交、推送到对应仓库;不再靠 rsync 发布配置。pull 遇到分叉或冲突直接报错,不使用 reset --hard 覆盖本地修改。
构建下载和 maa update、maa self update 使用 .env 中的代理;拉取自己的 Git 仓库、ADB 和游戏任务不走代理。更新 MAA 失败会打印错误并继续使用已安装版本。MaaEnd 下载 latest 包,随镜像重新构建更新。
只面向当前 ARM64 开发板:用户 UID/GID 1001,Docker socket 组 996。容器通过 Docker socket 启停现有 redroid,不重建 ReDroid,也不挂载其数据。应用数据、ADB 密钥、缓存和日志都放在本项目 state/。
定时运行
由 lichx 手动替换原 crontab 条目(开发板北京时间):08:00 先运行明日方舟,再运行 MaaEnd;16:00、22:00 只运行明日方舟。不要保留原来的 8,16,22 条目,以免重复执行。
0 8 * * * GAMES="arknights maaend" /home/lichx/maas/MAAsDocker/start-docker.sh >> /home/lichx/maas/state/logs/cron.log 2>&1
0 16,22 * * * GAMES=arknights /home/lichx/maas/MAAsDocker/start-docker.sh >> /home/lichx/maas/state/logs/cron.log 2>&1
明日方舟沿用 startup → recruit → infrast → fight → mall → award。保留原来的命令重试、重开游戏重试,以及失败后继续尝试其他任务的行为;最后用退出码记录是否发生失败。
基本进度通过 MAA_LOG=info 显示,tee 同时保存到 state/logs/maa-日期-时间.log;MAA 内核调试日志另存 state/arknights/debug/asst.log。
MaaEnd
默认 .env 为 GAMES=arknights;仅早上 08:00 的 cron 条目传入 GAMES="arknights maaend",让两种游戏依次运行。环境变量优先于 Compose 的 .env,下午和晚上会切回仅明日方舟。MaaEnd 顺序为打开游戏 → 基建 → 拜访好友 → 信用购物 → 应龙关基质刷取 → 日常领奖 → 关闭游戏。基质不指定词条,不用理智药或刻写券,理智不足结束(最多 99 次)。需要交互修改配置时:
docker compose run --rm app maaend-config
保存后,把 state/maaend-版本/maafw/config/maa_pi_config.json 的内容更新到 MAAsConfig 仓库的 MaaEndConfig/maa_pi_config.json,提交并推送。两种游戏会依次运行,各自结束时停止 ReDroid。
MaaEnd 只保留必要适配:补齐 CLI 的资源路径,在 state 中生成 ADB 专用 interface,省略 CLI 不支持的 hotkey 设置导入;保留上游 interface 和默认游戏资源。用户数据随版本保存在 state 中,不自动删除旧版本数据。