故障排除发布于: 更新于: 阅读约 4 分钟

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

按顺序尝试:

  1. 解锁手机,找到 允许 USB 调试吗? 弹窗,勾选 一律允许使用这台计算机进行调试,点 允许。
  2. 没有弹窗时,保持屏幕解锁,拔掉数据线再插上。
  3. 进入 开发者选项,点 撤消 USB 调试授权,重新连接,在新弹窗里允许。
  4. 把 USB 调试 关掉再打开。
  5. 运行 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 的其他工具。