设备
adb 连接不上模拟器怎么办:设备离线与找不到设备
解决 Macro Automation Studio 中 BlueStacks、LDPlayer、MuMu、MEmu 和 Nox 的 adb 连接不上模拟器、找不到设备和设备离线问题,附可自行检查的 adb 命令。
- Windows
- Mac
- 模拟器
- 手机
- Studio
本页目录
Macro Automation Studio(MAS)中的每台本地设备都是一条到 127.0.0.1:<port> 的 adb 连接。当 adb 连接不上模拟器、设备无法启动时,原因几乎总是少数几个问题之一,而且同样的修复方法适用于 BlueStacks、LDPlayer、MuMu Player、MEmu 和 Nox。这一页列出这些问题,以及你可以自己运行的命令。
MAS 如何使用 adb
了解这个顺序,错误信息就能看懂了。当你在设备上点击启动时,MAS 会:
- 用自带的 adb 运行
adb start-server。 - 用
adb devices -l列出设备。如果你的端口已经在列表里,先断开它。 - 运行
adb connect 127.0.0.1:<port>并读取输出。出现 “cannot connect”、“failed to connect”、“unable to connect”、“connection refused” 或 “bad port” 中的任意一个,设备就会失败并提示 “unable to connect to device”。 - 之后的每条命令都以
adb -s 127.0.0.1:<port> shell ...发送:点击、滑动、截图用的screencap、屏幕尺寸用的wm size。 - 应用关闭时运行
adb kill-server。
在 Windows 上,MAS 自带的 adb 位于 C:\ProgramData\MacroAutomationStudio\3rdparty\platform-tools。在 Mac 上,adb 在应用包内,你的 PATH 和 Homebrew 作为后备。
自己检查连接
打开终端,运行 MAS 运行的同样步骤。端口用模拟器设置中显示的那个。
adb devices
adb connect 127.0.0.1:5555
adb -s 127.0.0.1:5555 shell wm size健康的模拟器会对最后一行回复 Physical size: 540x960 或类似内容。输出看起来不对时,重置服务器再试一次:
adb kill-server
adb start-server
adb connect 127.0.0.1:5555去哪里找 adb:各模拟器都自带一份(Nox 在它的 bin 文件夹中叫 nox_adb.exe;MuMu Player 把 adb_server.exe 放在安装目录下),MAS 在 Windows 上自带一份,在 Mac 上 brew install android-platform-tools 会给你标准版本。
ADB 设置在哪里
| 模拟器 | 开启 ADB | 第一个实例的端口 | 更多实例 |
|---|---|---|---|
| BlueStacks 5 | 设置,高级标签页,打开 Android Debug Bridge | 5555,5555 被占用时为其他端口 | 每个实例有自己的端口;MAS 接受 5555 到 8500 |
| LDPlayer | 设置,其他设置,把 ADB 调试设为开启本地连接,点击保存设置,重启实例 | 5555 | 5557、5559 等等;MAS 接受到 5599 为止的奇数端口 |
| MuMu Player | 端口显示在设置、ADB 端口下,或问题诊断中 | 16384(旧版本:7555) | 每个实例加 32:16416、16448 等等 |
| MEmu | 默认开启;宿主机端口映射到安卓端口 5555 | 21503 | 21513、21523 等等 |
| Nox | 默认开启;在 bin 文件夹中用 nox_adb.exe connect 127.0.0.1:62001 连接 | 62001 | 62001 以上到 63000 的端口 |
官方页面:BlueStacks、LDPlayer、MuMu Player、MEmu、Nox。
adb 连接不上模拟器以及其他模拟器错误
ADB 无法连接
什么都连不上:MAS 中的端口列表为空,adb connect 返回 “cannot connect” 或 “connection refused”。
原因:模拟器中 ADB 是关闭的,或者实例还没启动完成。BlueStacks 和 LDPlayer 出厂时 ADB 都是关闭的。
- 按上表开启 ADB,在官方要求的情况下重启实例。
- 等安卓主屏幕出现,然后在添加新设备中点击刷新。
- 在终端运行
adb connect 127.0.0.1:<port>。返回 “connected to 127.0.0.1:” 就说明 MAS 也能连上。 - 如果安全软件拦截了本地连接,把 adb 和模拟器加入放行。
ADB 找不到设备
设备卡片以错误结束,日志写着 “unable to connect to device”,或者脚本在第一次调用时抛出 DeviceNotConnectedError。
原因:端口上没有任何东西、模拟器关闭了,或者运行开始后连接断开了。
- 把设备卡片上的端口和模拟器设置中的端口对比。用编辑设备修正。
- 运行
adb devices。如果条目缺失,运行adb connect 127.0.0.1:<port>并阅读回复。 - 重启模拟器实例,然后再点击启动。MAS 每次启动都会从头重新连接。
- 如果你先启动了 MAS 再启动模拟器,点击刷新让端口列表更新。
设备显示 offline
adb devices 列出 127.0.0.1:<port> offline,命令卡住或没有返回。
原因:adb 服务器持有过期条目、两个不同版本的 adb 在争夺服务器,或者模拟器还在启动。
- 运行
adb kill-server,然后再次adb connect 127.0.0.1:<port>。 - MAS 运行期间,关闭其他会启动自己 adb 服务器的工具(Android Studio、另一个模拟器的控制台)。
- 重启模拟器实例。Nox 官方对 “null or offline” 的建议也是一样:重启 Nox 再连接。
- 等启动完成;还在加载的实例会回复
offline。
ADB 端口错误或已变化
昨天还能用的设备,今天同样的设置却失败了。
原因:模拟器在实例启动时分配端口,创建、克隆或删除实例会让端口移位。BlueStacks 在 5555 被占用时会换到其他端口。
- 实例启动后,从模拟器设置或
adb devices读取当前端口。 - 在 MAS 中打开设备卡片,点击编辑设备,设置新端口并保存。
- 为了稳定,在模拟器的多开管理器中保持实例顺序不变,并避免删除第一个实例。
多个实例
只有第一个实例能连上,或者 MAS 提示 “Port is already in use”。
原因:每个实例需要自己的端口和自己的设备条目;一个端口只能添加一次。
- 每个实例添加一台设备,各用实例自己的端口。范围见上表:LDPlayer 和 MuMu Player 使用奇数端口 5555、5557、5559;MuMu Player 12 每个实例加 32;MEmu 加 10;Nox 从 62001 往上数。
- 给每台设备起一个和实例名一致的名字,卡片就容易区分。
- 逐个启动实例并点击刷新,让每个新端口出现在列表里。
- 同一个宏、不同账号:用设置方案让每台设备跟随自己的参数。参见设备组。
Mac 上的 adb
MAS 提示 “ADB executable not found. Please install ADB using your package manager”。
原因:应用包内的 adb 无法运行,而且你的 PATH 和 /opt/homebrew 下也没有找到。
- 用
brew install android-platform-tools安装标准版本,然后重启 MAS。 - 在终端用
which adb和adb version检查。MAS 依次查找应用包、PATH、/opt/homebrew/bin和/usr/local/bin。 - 在 Mac 上,模拟器也必须运行在这台 Mac 上;MAS 始终连接
127.0.0.1。 - 如果你的 Mac 模拟器版本完全没有 ADB,云设备不需要任何本地 adb 就能运行。
MAS 扫描哪些模拟器 ADB 端口
MAS 从运行中的进程构建端口列表,而不是从 adb devices。只有进程名和端口范围都匹配时才保留端口:
| 模拟器 | 进程名 | 保留的端口 |
|---|---|---|
| BlueStacks | HD-Player、BlueStacks | 5555 到 8500 |
| LDPlayer | LdVBoxHeadless、Ld9BoxHeadless、dnplayer、LDPlayer、VBoxNetNAT | 5555 到 5599 的奇数端口 |
| Nox | NoxVMHandle | 62001 到 63000 |
| MEmu | MEmuHeadless、MEmuHyper | 21503 及以 3 结尾、最高到 29993 的所有端口 |
| MuMu Player | NemuHeadless、MuMu | 5555 到 5599 的奇数端口、7555、16384 到 16576、26624 到 27264 |
只考虑绑定到 127.0.0.1、0.0.0.0 或所有网卡的端口。规则之外的端口不会出现在列表里,但自定义端口接受 1024 到 65535 的任何值,所以 MAS 不认识的模拟器仍然可以手动添加。
仍然卡住
收集设备卡片的日志(保存按钮会写入文件)、adb devices 的输出,以及模拟器的名称和版本,然后到 Discord 提问或发邮件到 support@automationmacro.com。应用本身的一般问题见故障排查页。
下一步
相关页面
谢谢。如果有哪里不对,请在 Discord 告诉我们。
有疑问? 在 Discord 提问