搜索

设备

adb 连接不上模拟器怎么办:设备离线与找不到设备

解决 Macro Automation Studio 中 BlueStacks、LDPlayer、MuMu、MEmu 和 Nox 的 adb 连接不上模拟器、找不到设备和设备离线问题,附可自行检查的 adb 命令。

  • Windows
  • Mac
  • 模拟器
  • 手机
  • Studio
进阶 更新于 阅读约 9 分钟
本页目录
  1. MAS 如何使用 adb
  2. 自己检查连接
  3. ADB 设置在哪里
  4. adb 连接不上模拟器以及其他模拟器错误
  5. ADB 无法连接
  6. ADB 找不到设备
  7. 设备显示 offline
  8. ADB 端口错误或已变化
  9. 多个实例
  10. Mac 上的 adb
  11. MAS 扫描哪些模拟器 ADB 端口
  12. 仍然卡住

Macro Automation Studio(MAS)中的每台本地设备都是一条到 127.0.0.1:<port> 的 adb 连接。当 adb 连接不上模拟器、设备无法启动时,原因几乎总是少数几个问题之一,而且同样的修复方法适用于 BlueStacks、LDPlayer、MuMu Player、MEmu 和 Nox。这一页列出这些问题,以及你可以自己运行的命令。

MAS 如何使用 adb

了解这个顺序,错误信息就能看懂了。当你在设备上点击启动时,MAS 会:

  1. 用自带的 adb 运行 adb start-server
  2. adb devices -l 列出设备。如果你的端口已经在列表里,先断开它。
  3. 运行 adb connect 127.0.0.1:<port> 并读取输出。出现 “cannot connect”、“failed to connect”、“unable to connect”、“connection refused” 或 “bad port” 中的任意一个,设备就会失败并提示 “unable to connect to device”。
  4. 之后的每条命令都以 adb -s 127.0.0.1:<port> shell ... 发送:点击、滑动、截图用的 screencap、屏幕尺寸用的 wm size
  5. 应用关闭时运行 adb kill-server

在 Windows 上,MAS 自带的 adb 位于 C:\ProgramData\MacroAutomationStudio\3rdparty\platform-tools。在 Mac 上,adb 在应用包内,你的 PATH 和 Homebrew 作为后备。

自己检查连接

打开终端,运行 MAS 运行的同样步骤。端口用模拟器设置中显示的那个。

bash
adb devices
adb connect 127.0.0.1:5555
adb -s 127.0.0.1:5555 shell wm size

健康的模拟器会对最后一行回复 Physical size: 540x960 或类似内容。输出看起来不对时,重置服务器再试一次:

bash
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 Bridge5555,5555 被占用时为其他端口每个实例有自己的端口;MAS 接受 5555 到 8500
LDPlayer设置其他设置,把 ADB 调试设为开启本地连接,点击保存设置,重启实例55555557、5559 等等;MAS 接受到 5599 为止的奇数端口
MuMu Player端口显示在设置ADB 端口下,或问题诊断16384(旧版本:7555)每个实例加 32:16416、16448 等等
MEmu默认开启;宿主机端口映射到安卓端口 55552150321513、21523 等等
Nox默认开启;在 bin 文件夹中用 nox_adb.exe connect 127.0.0.1:62001 连接6200162001 以上到 63000 的端口

官方页面:BlueStacksLDPlayerMuMu PlayerMEmuNox

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 adbadb version 检查。MAS 依次查找应用包、PATH、/opt/homebrew/bin/usr/local/bin
  • 在 Mac 上,模拟器也必须运行在这台 Mac 上;MAS 始终连接 127.0.0.1
  • 如果你的 Mac 模拟器版本完全没有 ADB,云设备不需要任何本地 adb 就能运行。

MAS 扫描哪些模拟器 ADB 端口

MAS 从运行中的进程构建端口列表,而不是从 adb devices。只有进程名和端口范围都匹配时才保留端口:

模拟器进程名保留的端口
BlueStacksHD-PlayerBlueStacks5555 到 8500
LDPlayerLdVBoxHeadlessLd9BoxHeadlessdnplayerLDPlayerVBoxNetNAT5555 到 5599 的奇数端口
NoxNoxVMHandle62001 到 63000
MEmuMEmuHeadlessMEmuHyper21503 及以 3 结尾、最高到 29993 的所有端口
MuMu PlayerNemuHeadlessMuMu5555 到 5599 的奇数端口、7555、16384 到 16576、26624 到 27264

只考虑绑定到 127.0.0.10.0.0.0 或所有网卡的端口。规则之外的端口不会出现在列表里,但自定义端口接受 1024 到 65535 的任何值,所以 MAS 不认识的模拟器仍然可以手动添加。

仍然卡住

收集设备卡片的日志保存按钮会写入文件)、adb devices 的输出,以及模拟器的名称和版本,然后到 Discord 提问或发邮件到 support@automationmacro.com。应用本身的一般问题见故障排查页。

下一步

相关页面

这个页面有帮助吗?

有疑问? 在 Discord 提问