作为前端开发者,移动端H5调试是我们日常工作的重要环节。Chrome浏览器的 chrome://inspect 是一个强大的工具,可以让我们在电脑上直接调试Android设备上的网页和WebView。然而,有时候打开 chrome://inspect 却发现设备列表空空如也,或者显示 pending、forbidden 等错误信息,让人一头雾水。
其实,这类问题绝大多数是因为 ADB (Android Debug Bridge) 连接异常 导致的。而一个最简单的命令 adb devices 往往能帮助我们快速定位并解决问题。本文将从实际场景出发,带你全面掌握ADB的安装方法、adb devices 的作用,以及如何用它解决Chrome inspect无法识别设备的难题。
1. 准备工作:安装ADB并开启手机调试模式
1.1 在不同操作系统上安装ADB
ADB是Android调试桥,安装方式主要有两种:单独下载Platform Tools,或安装完整的Android Studio。作为开发者,我们通常只需要前者即可。
Windows系统:
- 访问 Android开发者官网 下载Windows版本的Platform Tools压缩包
- 解压到方便的位置,例如
C:\adb或E:\platform-tools - 将解压后的文件夹路径添加到系统环境变量Path中:
- 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
- 在"系统变量"中找到Path,点击编辑 → 新建 → 粘贴你的platform-tools路径
- 打开命令提示符,输入
adb version验证安装成功
macOS系统:
- 同样从官网下载macOS版本的Platform Tools
- 解压到某个目录,例如
~/platform-tools - 打开终端,临时使用可以进入该目录执行命令,或将该目录添加到PATH环境变量中
Linux系统(以Ubuntu为例): 通过包管理器安装是最简单的方式:
sudo apt update
sudo apt install adb
也可以从官网下载Linux版本进行手动配置。
1.2 开启手机开发者选项和USB调试
无论使用哪种操作系统,手机端的配置都是相同的:
- 打开手机 设置 → 关于手机,连续点击 版本号 7次,直到提示"您已处于开发者模式"
- 返回设置主菜单,进入 开发者选项,找到并开启 USB调试
- 用USB数据线将手机连接到电脑,手机上会弹出"允许USB调试吗?"的提示,勾选"始终允许"并点击"确定"
小提示:建议使用手机原装数据线,部分充电线仅支持充电不支持数据传输。
2. adb devices 是什么?
adb devices 是ADB中最基础的命令之一,用于列出当前通过ADB连接到计算机的Android设备(包括真机和模拟器)。执行该命令后,会显示类似下面的输出:
List of devices attached
0123456789ABCDEF device
emulator-5554 device
每一行代表一个设备,左侧是设备的序列号,右侧是设备的当前状态。常见状态有:
- device:正常连接,可以接受ADB命令
- offline:设备离线,可能是连接不稳定或驱动问题
- unauthorized:未授权,需要在手机上允许USB调试并确认RSA密钥指纹
- no device:没有检测到任何设备
这个命令主要用于:
- 确认设备是否被电脑识别
- 查看设备连接状态是否正常
- 当连接多个设备时,获取设备序列号以便后续指定设备操作
- 故障排查的第一步
如果想获取更详细的设备信息,可以加上 -l 参数:adb devices -l。
3. Chrome inspect 与 ADB 的关系
chrome://inspect 之所以能够调试Android设备上的网页,是因为它通过ADB与设备建立通信。当你打开该页面时,Chrome会向ADB服务查询已连接的设备,然后列出所有可调试的WebView或标签页。如果ADB与设备之间的连接不通畅,Chrome自然无法获取设备信息。
常见的问题表现:
- 设备列表一直显示
pending(正在等待) - 提示
forbidden(禁止访问) - 完全看不到设备
这些问题背后往往隐藏着:ADB服务未启动、设备未授权、连接中断、驱动异常等。
4. 使用 adb devices 解决识别问题
下面通过一个实际案例,演示如何用 adb devices 命令一步步排查并解决Chrome inspect无法识别设备的问题。
4.1 第一步:检查ADB是否正常
打开终端,输入:
adb devices
观察输出结果。如果输出为空(即 List of devices attached 下面没有内容),说明ADB没有检测到任何设备。此时应检查:
- 手机是否已开启开发者选项和USB调试
- USB数据线是否良好(建议使用原装线)
- 电脑是否已安装手机对应的USB驱动程序(Windows尤其重要)
- 如果连接的是模拟器,确保模拟器已经启动
4.2 第二步:处理未授权状态
如果 adb devices 输出显示设备状态为 unauthorized,例如:
List of devices attached
0123456789ABCDEF unauthorized
这说明手机还没有授权当前电脑进行USB调试。此时请查看手机屏幕,通常会弹出一个对话框,询问"允许USB调试吗?",并显示该计算机的RSA密钥指纹。勾选"始终允许",然后点击"确定"。之后再次运行 adb devices,状态应该变为 device。
如果手机没有弹出授权框,可以尝试重新插拔USB线,或者运行以下命令重启ADB服务:
adb kill-server
adb devices
adb kill-server 会终止ADB服务进程,然后 adb devices 会重新启动服务并扫描设备,这往往能强制触发授权弹窗。
4.3 第三步:查看设备状态是否为 device
当设备状态变为 device 后,再次打开 chrome://inspect,正常情况下应该就能看到设备及其可调试的页面了。如果仍然看不到,可以尝试刷新页面,或者关闭并重新打开Chrome的inspect标签页。
4.4 第四步:处理多设备连接
如果你同时连接了多台设备(例如一台真机和一台模拟器),chrome://inspect 默认会显示所有设备。但如果你只想调试特定设备,或者遇到设备混淆的情况,可以通过 adb devices 获取所有设备的序列号,然后在ADB命令中通过 -s 参数指定设备。例如:
adb -s 0123456789ABCDEF forward tcp:9222 localabstract:chrome_devtools_remote
不过对于Chrome inspect来说,它会自动列出所有设备,一般不需要手动指定。
4.5 第五步:重启ADB服务解决顽固问题
如果上述步骤都试过了,设备状态也是 device,但Chrome仍然无法识别,可能是ADB服务卡住了。此时可以彻底重启ADB服务:
adb kill-server
adb start-server # 或者直接 adb devices 会隐式启动
然后重新插拔USB线,再次运行 adb devices 确认状态,再刷新Chrome inspect。
5. 更多可能的原因和解决方法
除了ADB连接问题,还有一些其他因素可能导致Chrome inspect无法识别设备:
- Chrome版本过低:确保电脑和手机上的Chrome浏览器都是最新版本
- WebView调试未开启:如果调试的是应用内的WebView,需要确认应用开启了WebView调试模式。在应用代码中添加
WebView.setWebContentsDebuggingEnabled(true); - 网络问题:首次使用Chrome inspect调试WebView时,需要能访问Google服务以下载调试资源,可能需要科学上网环境
- 端口占用:有时防火墙或代理软件可能阻止ADB的通信端口(通常是5037)
6. 总结
adb devices 虽然是一个基础命令,但在移动端H5调试中扮演着"连接检查器"的重要角色。当你在使用Chrome inspect时遇到设备无法识别的问题,不妨先执行一下这个命令,它能够:
- 快速告诉你设备是否被ADB识别
- 显示设备状态,让你知道是否需要授权或存在其他异常
- 通过重启ADB服务,清除潜在的连接缓存
掌握这个小技巧,可以让你在调试过程中少走很多弯路。下面是一个简单的排查流程图:
| 问题现象 | 执行 adb devices 看到的状态 | 解决方法 |
|---|---|---|
| Chrome inspect 看不到设备 | 无设备列表 | 检查USB线、驱动、USB调试是否开启 |
| Chrome inspect 一直 pending | unauthorized | 在手机上允许USB调试授权 |
| Chrome inspect 显示设备但无法调试 | device | 检查WebView调试是否开启,或重启ADB服务 |
希望本文能帮助到你,如果还有其他问题,欢迎留言讨论!
本文首发于掘金,转载请注明出处。