adb unauthorized 设备未授权、device busy、找不到设备怎么解决
adb devices 显示 unauthorized 设备未授权、offline、device busy,或者列表为空?本文用现象对照表逐个说明原因和解决方法,涵盖授权弹窗、数据线、驱动、udev 规则、华为和小米的额外开关以及 WebUSB。
大多数 ADB 连接错误的原因都很集中:另一个程序占用了 USB 接口、手机还没有授权这台电脑,或者数据线和 USB 模式不对。先运行 adb devices,看序列号后面的状态,再按下面对应的现象处理。每一项一般一两分钟就能解决。
快速对照表
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| device busy / claim interface 失败 | 其他程序占用了 USB 连接 | 关闭 Android Studio、scrcpy 和其他标签页,运行 adb kill-server |
unauthorized | 手机没有允许这台电脑 | 解锁手机,在弹窗中勾选「一律允许」并允许 |
offline | 连接卡住或半开 | 重新插线,关开 USB 调试,adb kill-server |
| 列表为空 | 只能充电的线或 USB 模式不对 | 换数据线,USB 模式选「传输文件」 |
| Windows 上列表为空 | 缺少驱动 | 安装手机厂商的 USB 驱动 |
| Linux 上列表为空 | 缺少 udev 规则 | 为厂商添加 udev 规则并重新加载 |
| 浏览器 USB 窗口里没有设备 | WebUSB 权限或设备被占用 | 关闭其他程序,重新连接,再选一次设备 |
unauthorized:手机还没授权这台电脑
手机没有接受电脑的 RSA 密钥时,adb devices 会显示:
List of devices attached
8A2X1234 unauthorized按顺序尝试:
- 解锁手机,找到 允许 USB 调试吗? 弹窗,勾选 一律允许使用这台计算机进行调试,点 允许。
- 没有弹窗时,保持屏幕解锁,拔掉数据线再插上。
- 进入 开发者选项,点 撤消 USB 调试授权,重新连接,在新弹窗里允许。
- 把 USB 调试 关掉再打开。
- 运行
adb kill-server,再运行adb devices。
还没打开开发者选项的话,见 如何打开 USB 调试。
提示: 弹窗可能被锁屏或通知栏挡住。先点亮并解锁屏幕,再判断它是不是没弹出来。
国产手机的额外开关
- 华为 / 荣耀: 开发人员选项里除了 USB 调试,还要打开 「仅充电」模式下允许 ADB 调试,否则在仅充电模式下可能一直不弹授权窗口。
- 小米 / 红米 / POCO: 能连上但点击、安装失败,是因为没开 USB 调试(安全设置) 和 USB 安装,见 小米 USB 调试(安全设置)。
- OPPO、vivo: 打开开发者选项或 USB 调试时可能要求验证锁屏密码,USB 连接后选择 传输文件 模式更容易弹出授权。
device busy:USB 接口被别的程序占着
同一时间只有一个程序能占用手机的 USB 连接。第二个程序再去连,就会报 busy 或 claim interface 错误。常见的占用者:
- 正在运行 adb server 的 Android Studio 或其他 IDE。
- scrcpy 等投屏工具。
- 已经连接同一部手机的另一个浏览器标签页。
- 先一步抢到设备的后台
adb服务。
关掉这些工具和标签页,然后停止后台服务:
adb kill-server如果使用 ADBKit 网页工作台 这类浏览器工具,浏览器需要独占设备,连接期间不要启动 adb server。之后可以用 adb start-server 再启动,下次运行任何 adb 命令时它也会自动启动。
offline:能看到但不响应
offline 表示设备可见但无法通信,通常是连接卡住了。拔线、关开 USB 调试、重新插上,再运行 adb kill-server。也要确认 platform-tools 是较新的版本,太旧的 adb 在新版 Android 上可能出问题。详见 adb device offline 的解决方法。
列表为空:什么都没有
先检查物理连接:
- 数据线: 很多线只能充电。换一根确定能传数据的线,直接插电脑上的接口,不要接扩展坞。
- USB 模式: 下拉通知栏,点 USB 通知,选择 传输文件(MTP)。部分手机在仅充电模式下不开放 ADB。
- Windows: 可能需要安装厂商的 USB 驱动,或者设备管理器里设备带着黄色感叹号。
- Linux: 普通用户没有 udev 规则时往往打不开设备。为手机厂商的 vendor ID 添加规则,运行
sudo udevadm control --reload-rules后重新插线。 - 开发者选项: 确认 USB 调试仍然开着,有些手机重启或更新后会自动关闭。
更多排查见 adb devices 找不到设备。
WebUSB 和浏览器权限
浏览器里的 ADB 使用 WebUSB,只在 HTTPS 下的 Chrome、Edge 等 Chromium 桌面浏览器中可用,Firefox 和 Safari 不支持。点击 Connect device 后,浏览器会弹出自己的 USB 选择窗口。窗口里没有你的手机,几乎都是被别的程序占用了,或者是数据线和模式的问题。如果关掉了窗口或拒绝了访问,刷新页面再点一次 Connect device。
ADBKit 可以自动重新连接之前允许过的设备,记住多台设备时可以在设备菜单里切换。原理见 WebADB 和 WebUSB 是什么。有线连接一直不稳定的话,可以改用 ADB 无线连接。
能投屏但点击无效
画面正常但点击、按键没反应,和连接本身是两回事。有些手机需要额外的开发者设置才接受注入的输入(例如小米的 USB 调试(安全设置))。scrcpy 项目的 FAQ 里整理了这些情况:<https://github.com/Genymobile/scrcpy/blob/master/FAQ.md>,同样适用于基于 scrcpy 的其他工具。