出现 error: cannot connect to daemon
错误通常是由于 ADB 服务未正常启动或端口冲突导致的。解决的方案:
1. 检查端口占用(关键步骤)
ADB 默认使用 5037 端口,如果该端口被其他程序占用,会导致守护进程启动失败。
Windows 用户:
netstat -ano | findstr "5037"
- 如果有进程占用端口 5037,会显示类似:
TCP 0.0.0.0:5037 0.0.0.0:0 LISTENING 12345
- 记下进程 ID(如
12345
),然后强制结束该进程:taskkill /PID 12345 /F
macOS/Linux 用户:
sudo lsof -i :5037
- 结束占用进程:
sudo kill -9 <进程ID>
2. 重启 ADB 服务
# 完全停止并重启 ADB 服务
adb kill-server
adb start-server
3. 以管理员权限运行命令提示符/终端
- Windows:右键点击
CMD/Powershell
→ 选择 “以管理员身份运行”。 - macOS/Linux:使用
sudo
前缀执行命令:sudo adb devices
4. 检查驱动和 USB 连接
- 确保设备已启用 USB 调试模式:
- 进入
设置 → 关于手机 → 连续点击“版本号”7次
启用开发者选项。 - 返回设置,打开
开发者选项 → USB 调试
。
- 进入
- 尝试更换 USB 线或 USB 接口,排除硬件问题。
5. 重新安装 Android SDK Platform Tools
- 下载最新版 Platform Tools。
- 解压并覆盖原有文件(路径通常为
C:\Users\<用户名>\AppData\Local\Android\Sdk\platform-tools
)。 - 重新启动 ADB:
cd C:\path\to\platform-tools adb devices
6. 检查防火墙/安全软件
- 临时关闭防火墙或杀毒软件,排除其拦截 ADB 进程的可能性。
7. 完整排查流程
# 1. 终止现有 ADB 进程
adb kill-server
# 2. 检查端口占用并清理
netstat -ano | findstr "5037"
taskkill /PID <进程ID> /F # 如果有占用
# 3. 重启 ADB
adb start-server
# 4. 验证设备连接
adb devices
常见错误场景及解决方案
-
端口被占用且无法结束进程:
- 修改 ADB 端口号(需在环境变量或启动命令中指定新端口):
set ANDROID_ADB_SERVER_PORT=5038 adb start-server
- 修改 ADB 端口号(需在环境变量或启动命令中指定新端口):
-
设备未授权:
- 在设备上点击 “允许 USB 调试”(弹窗提示时)。
-
驱动问题(Windows):
- 安装 Google USB Driver 或厂商官方驱动。
通过以上步骤,大多数情况下可以解决 cannot connect to daemon
错误。如果问题依旧存在,建议尝试重启电脑或更换设备测试。