设备
逍遥模拟器 ADB 端口与连接设置(MEmu Play)
通过 21503 端口把 MEmu Play 连接到 Macro Automation Studio,找到逍遥模拟器 ADB 端口,添加为设备,修复设备离线错误,并用 MAS 宏替代录制器。
- Windows
- 模拟器
- Studio
- Python SDK
本页目录
这篇指南介绍如何通过 ADB 把 MEmu Play(逍遥模拟器)连接到 Macro Automation Studio(MAS),逍遥模拟器 ADB 端口是多少,以及 MAS 宏与 MEmu 的宏录制器有什么不同。MEmu 只有 Windows 版本,所以下面的每一步都是 Windows 上的步骤。
开始之前
- 已在 Windows 10 或 11 上安装并登录 MAS。试用期内 MAS 可免费下载;从下载页获取。
- 已从 memuplay.com 安装 MEmu 并至少启动过一次。
- 实例已完全启动到安卓主屏幕。
- 已在 BIOS 中开启虚拟化,以保证实例稳定。
1. 安装 MEmu
- 从官方网站下载 MEmu 并运行安装包。
- 启动 MEmu,等待主屏幕出现。
- 在把设备添加到 MAS 之前,先登录要自动化的应用。
2. 设定固定分辨率
MAS 逐像素匹配模板图片。打开 MEmu 的设置,选择一个固定分辨率,并保持不变。按 MAS 基准编写的宏预期竖屏 540x960、240 DPI;你自己写的宏预期的是你在 Asset Lab 中截取时的分辨率。MEmu 要求时重启实例。
3. 在 MEmu 中开启 ADB
MEmu 的官方文档没有显示 ADB 开关。运行中的实例会把安卓的 adb 端口转发到宿主机的 127.0.0.1:21503,这也是 MEmu 自己的命令行指南使用的地址。如果你的 MEmu 版本在设置中有 ADB 或开发者选项,保持开启即可。启动实例,等主屏幕出现后再继续。
4. 逍遥模拟器 ADB 端口与 MAS 的扫描方式
MEmu 的默认实例监听 21503。MAS 不用 adb devices 来发现模拟器。它扫描运行中的进程,保留符合以下规则的端口:
- 进程名包含
memuheadless或memuhyper。 - 端口不小于 21503、以 3 结尾且小于 30000。所以 21513 和 21523 这样的端口也符合。
- 套接字监听在
127.0.0.1上。
匹配的端口会出现在添加设备对话框中,标注为 MEmu,例如 21503 - MEmu。扫描在你打开设备组时以及每次点击刷新时进行。
5. 在 MAS 中通过 ADB 连接 MEmu Play
- 在侧边栏打开设备组,打开一个组,或新建一个。
- 点击添加设备。
- 输入不超过 50 个字符的设备名称。
- 在端口中选择这个实例对应的
MEmu项。列表为空时点击刷新。 - 如果 MEmu 使用的端口不符合上面的规则,选择自定义端口并输入。MAS 接受 1024 到 65535。
- 可选:选择一个启动宏。
- 点击添加设备,然后在设备卡片上点击启动。
卡片会显示连接中,然后是运行中。MAS 启动它的 adb 服务器,移除 127.0.0.1:<port> 的任何过期条目,然后对它运行 adb connect。
MEmu 上的宏
MEmu 的宏录制器按固定坐标捕获点击和滑动并重放,可以选择重复执行。它不看屏幕,所以加载缓慢、弹窗或移动了的按钮都会打断序列,而且流程只能在 MEmu 内部工作。
MAS 宏是一段在行动前先检查屏幕的 Python 脚本。它用模板匹配找到按钮,用 OCR 读取文字,用重试等待,并根据看到的内容分支。同一段脚本无需修改就能在 MEmu、其他模拟器和云设备上运行,因为 MAS 通过 adb 驱动设备。
- 要把录制的流程重建为会看屏幕的宏,按照图像识别宏操作。
- 要让它循环到满足某个条件为止,或者按计划运行,阅读循环、停止条件与定时。
- Marketplace 宏安装后就是 MAS 宏,在你指定的设备上运行。
多个 MEmu 实例
MEmu 多开管理器中的每个实例都监听自己的端口。把每个实例作为单独的设备添加到同一个设备组,按设备指定宏和设置方案,然后在组上使用全部启动和全部停止。按设备设置参数和代理,参见设备组。
故障排查
MEmu ADB 连接
设备卡片显示错误或 “Failed to start device”,或者 MAS 没有列出任何 MEmu 项。逐条排查这些原因:
- 实例还在启动。等主屏幕出现后再点击刷新并重新启动。
- 端口不符合扫描规则,MAS 跳过了它。用自定义端口填入 MEmu 使用的端口号。
- 端口属于另一个实例。在卡片上用编辑设备修正。
- 扫描报告 “Failed to scan emulator ports”。重启 MAS 并重新打开对话框。
- 设备日志里 adb 输出了 “connection refused” 或 “cannot connect”。这个端口上没有任何东西在监听;重启实例并重新核对端口号。
MEmu ADB 设备离线
当实例内的 adb 守护进程停止响应时,adb 会把设备标记为 offline,通常发生在休眠、更新或机器上出现第二个 adb 服务器之后。在卡片上点击停止,重启 MEmu 实例,关闭任何运行自带 adb 服务器的工具,然后点击启动。MAS 每次启动都会断开过期条目并重新连接。仍然离线时,重启 MAS 让它的 adb 服务器干净地启动。
MEmu 宏录制器与 MAS 的对比
在 MEmu 中录制的流程无法导入 MAS,因为 MAS 只运行 Python 宏。请重新制作:在 Asset Lab 中把按钮截成模板,用 find_object_retry 点击它们,再用停止条件循环。这样得到的宏能扛住弹窗、加载缓慢和布局变化这些会打断录制序列的情况,并且能在 MAS 控制的任何设备上运行。如果 MAS 宏卡住,打开设备卡片上的日志:ImageNotFoundError 和 TimeoutError 会指出失败的步骤。
用 Python 控制它
卡片处于运行中时,宏的 src/app.py 通过 mas 包驱动实例。端口由 MAS 选择,所以脚本从不引用它。
import mas
size = mas.get_screen_size()
mas.log(f"MEmu 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 提问