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

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

Source: https://automationmacro.com/zh-CN/docs/adb-troubleshooting (设备, updated 2026-09-05)

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 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](https://support.bluestacks.com/hc/en-us/articles/23925869130381-How-to-enable-Android-Debug-Bridge-on-BlueStacks-5)、[LDPlayer](https://www.ldplayer.net/blog/how-to-solve-locked-screen.html)、[MuMu Player](https://www.mumuplayer.com/help/win/connect-adb.html)、[MEmu](https://www.memuplay.com/blog/how-to-manipulate-memu-thru-command-line.html)、[Nox](https://www.bignox.com/blog/how-to-connect-android-studio-with-nox-app-player-for-android-development-and-debug/)。

## 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:<port>" 就说明 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 往上数。
- 给每台设备起一个和实例名一致的名字，卡片就容易区分。
- 逐个启动实例并点击**刷新**，让每个新端口出现在列表里。
- 同一个宏、不同账号：用设置方案让每台设备跟随自己的参数。参见[设备组](/docs/device-groups)。

### 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，[云设备](/cloud-devices)不需要任何本地 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](https://discord.gg/macroautomationstudio) 提问或发邮件到 [support@automationmacro.com](mailto:support@automationmacro.com)。应用本身的一般问题见[故障排查](/docs/troubleshooting)页。
