设备
MuMu 模拟器 ADB 端口与连接设置(MuMu Player 12)
查看 MuMu 模拟器 ADB 端口,把 Macro Automation Studio 连接到 MuMu Player 12,把每个多开实例添加为设备,并用 MAS 宏替代操作录制。
- Windows
- Mac
- 模拟器
- Studio
- Python SDK
本页目录
这篇指南介绍如何查看 MuMu 模拟器 ADB 端口并把 MuMu Player 12 的实例连接到 Macro Automation Studio(MAS),并解释 MAS 宏与 MuMu 的操作录制有什么不同。步骤以 Windows 为主;末尾有一小节介绍 Mac 版本。
开始之前
- 已在 Windows 10 或 11,或 Apple Silicon Mac 上安装并登录 MAS。试用期内 MAS 可免费下载;从下载页获取。
- 已从 mumuplayer.com 安装 MuMu Player 12 并至少启动过一次。
- 实例已完全启动到安卓主屏幕。
- 要自动化的应用已在 MuMu Player 中安装并登录。
1. 安装 MuMu Player 12
- 从官方网站下载 MuMu Player 12 并运行安装包。
- 启动 MuMu Player,等待主屏幕出现。
- 在把设备添加到 MAS 之前,先安装并登录要自动化的应用。
2. 设定固定分辨率
MAS 逐像素匹配模板图片,所以分辨率选定一次就不要再改。
- 点击 MuMu Player 窗口右上角的设置。
- 打开显示,选择自定义分辨率。
- 输入宽 540、高 960、DPI 240。这是 MAS 基准;你自己写的宏预期的是你在 Asset Lab 中截取时的分辨率。
- 保存,MuMu Player 要求时重启实例。
3. 在 MuMu Player 12 中开启 ADB
官方 ADB 指南显示 MuMu Player 12 没有开关。运行中的实例不需要任何设置就会在它的端口上响应 adb,所以你需要的只是端口号:
- 单个实例:打开窗口右上角的菜单,选择问题诊断。ADB 调试端口列在那里。
- 多个实例:打开 MuMu 多开器 12,点击运行中实例上的 ADB 图标查看它的端口。
4. MuMu 模拟器 ADB 端口与 MAS 的扫描方式
MuMu Player 12 给主实例的端口是 16384,之后每个实例加 32:16416、16448 等等。端口被占用时,MuMu 会加 1,所以可能出现 16385。MAS 不用 adb devices 来发现模拟器。它扫描运行中的进程,只有满足以下全部条件时才保留端口:
- 进程名包含
nemuheadless或mumu。 - 端口在 16384 到 16576 之间、26624 到 27264 之间、恰好是 7555,或者是 5555 到 5599 之间的奇数。
- 套接字监听在
127.0.0.1、0.0.0.0或所有网卡上。
16384 到 16576 的范围覆盖主实例和后面六个;7555 和 5555 范围来自较旧的 MuMu 版本。匹配的端口会出现在添加新设备对话框中,标注为 MuMu,例如 16384 - MuMu。MAS 在你打开设备组时以及每次点击刷新时扫描。
5. 在 MAS 中通过 ADB 连接 MuMu Player
- 在侧边栏打开设备组,打开一个组,或新建一个。
- 点击添加设备。
- 输入不超过 50 个字符的设备名称。
- 在端口中选择这个实例对应的
MuMu项。列表为空时点击刷新。 - 如果问题诊断中显示的端口不符合上面的规则,选择自定义端口并输入。MAS 接受 1024 到 65535。
- 可选:选择一个启动宏。
- 点击添加设备,然后在设备卡片上点击启动。
卡片会显示连接中,然后是运行中。MAS 启动自己的 adb 服务器,移除 127.0.0.1:<port> 的任何过期条目,然后对它运行 adb connect。
MuMu Player 上的宏
MuMu 的操作录制记录点击并从文件重放,提供三种停止条件(执行 x 次后停止、执行 xx 时间后停止和无限循环直到手动停止)和一个循环间隔。官方提醒回放时的分辨率必须与录制时一致。文件按固定坐标重放,不看屏幕,所以加载缓慢、弹窗或移动了的按钮都会打断序列,而且它只能在 MuMu Player 内部运行。
MAS 宏是一段在行动前先检查屏幕的 Python 脚本:它用模板匹配找到按钮,用 OCR 读取文字,用重试等待,并根据看到的内容分支。同一段脚本无需修改就能在 MuMu Player、其他模拟器和云设备上运行,因为 MAS 通过 adb 驱动每一台设备。
- 要把录制重建为会看屏幕的宏,按照图像识别宏操作。
- 要让它循环到满足某个条件为止,或者按计划运行,阅读循环、停止条件与定时。
多个 MuMu 实例
从右上角的工具箱图标打开 MuMu 多开器 12。+新建创建一个实例,设备设置设定它的性能和显示,所以请给每个实例相同的分辨率。每个实例监听自己的端口,比前一个大 32。把每个实例作为单独的设备添加到同一个设备组,按设备指定宏和设置方案,然后在组上使用全部启动和全部停止。从第八个实例开始,端口超过 16576,MAS 不再列出它;用自定义端口添加。按设备设置参数和代理,参见设备组。
Mac 上的 MuMu Player
MuMu 也提供面向 Apple Silicon Mac 的版本。官方指南把 ADB 放在菜单栏里:设备运行时,打开工具,选择打开 ADB(设备端口号)。这一项会显示端口;默认同样是 16384。如果 MAS 的扫描没有列出它,用自定义端口添加。
Mac 上的 MAS 需要一个 adb 可执行文件:它先在应用包内查找,然后是你的 PATH,最后是 Homebrew 的目录。如果 MAS 提示 “ADB executable not found. Please install ADB using your package manager”,用 Homebrew 安装 adb 后重启 MAS:
brew install android-platform-toolsMAS 始终连接 127.0.0.1,所以 MuMu Player 必须运行在同一台 Mac 上。
故障排查
MuMu ADB 端口
MAS 没有列出 MuMu 项,或者列出的项属于另一个实例。
- 从问题诊断或 MuMu 多开器 12 中的 ADB 图标读取端口,和设备卡片上的对比;用编辑设备修正。
- 从 16384 起按每个实例 32 递增计算,端口被占用时再加 1(16385 而不是 16384)。
- 实例还在启动,端口还没打开。等主屏幕出现后点击刷新。
- 端口超过 16576 或不在扫描规则之内。选择自定义端口并输入。
MuMu ADB 连接失败
设备卡片显示错误并提示 “Failed to start device”,日志写着 “unable to connect to device”,或者 adb 输出 “cannot connect” 或 “connection refused”。
- 这个端口上没有任何东西在监听。按上面的方法核对端口号,并确认实例正在运行。
- 第二个 adb 服务器持有过期条目。关闭其他运行自带 adb 服务器的工具,点击停止,重启实例,然后点击启动;MAS 会从头重新连接。
adb devices把端口显示为offline。重启实例;仍然离线时重启 MAS,让它的 adb 服务器干净地启动。- 扫描报告 “Failed to scan emulator ports”。重启 MAS 并重新打开对话框。
要查看 adb 的原始回复,在终端运行 adb connect 127.0.0.1:16384。更多修复方法见 ADB 故障排查。
MuMu 上的脚本循环
设为无限循环直到手动停止的录制无法判断循环是否应该继续,所以达到目标或出现弹窗后它仍然会一直点。MAS 宏在 Python 中带停止条件循环:一个出现的模板、一个 OCR 读到的数字,或者一个轮次计数。循环、停止条件与定时展示了这些模式。如果 MAS 循环卡住,打开设备卡片上的日志:ImageNotFoundError 和 TimeoutError 会指出失败的步骤,最常见的原因是分辨率与模板不再匹配。
用 Python 控制它
卡片处于运行中时,宏的 src/app.py 通过 mas 包驱动实例。端口由 MAS 选择,所以脚本从不引用它。
import mas
size = mas.get_screen_size()
mas.log(f"MuMu screen is {size.width}x{size.height}")
match = mas.find_object_retry(1234, total_tries=3, time_sleep=2.0)
if match:
mas.click(match.x, match.y)各命名空间见 SDK 概览;完整的第一个脚本见用 Python 控制安卓模拟器。
下一步
相关页面
谢谢。如果有哪里不对,请在 Discord 告诉我们。
有疑问? 在 Discord 提问