在使用 ADB 调试时,执行 `adb connect :<端口>` 出现“10061 错误:连接被拒”,通常是由于目标设备未开启网络调试或 ADB 服务未监听 TCP 端口。常见原因是设备未执行 `adb tcpip <端口>` 命令,或 USB 调试未启用。此外,设备与电脑不在同一网络、防火墙拦截、ADB 版本不兼容也可能导致该问题。需确保设备已正确连接并授权,重启 ADB 服务(`adb kill-server` 后 `adb start-server`)亦可有效恢复连接。
1条回答 默认 最新
张牛顿 2025-12-10 18:11关注一、ADB网络调试基础概念解析
Android Debug Bridge(ADB)是开发者与Android设备通信的核心工具。当使用
adb connect :<端口>命令尝试通过Wi-Fi连接设备时,若返回“10061 错误:连接被拒”,通常意味着TCP连接无法建立。该错误在Windows系统中对应WSAECONNREFUSED,表示目标主机主动拒绝了连接请求。最常见原因是目标设备未开启ADB over TCP/IP模式。默认情况下,ADB仅监听USB接口。需先通过USB执行
adb tcpip <端口>命令,强制ADB守护进程切换至指定TCP端口监听状态。典型触发场景包括:
- 未启用开发者选项中的“USB调试”功能
- 未执行
adb tcpip 5555等命令启动TCP监听 - 设备重启后未重新激活tcpip模式
- ADB服务崩溃或处于异常状态
二、分层排查流程设计
为系统性解决此问题,建议采用自底向上的排查策略,从物理层逐步上升至应用层:
层级 检查项 验证方法 物理层 设备与PC是否在同一局域网 ping 设备IP地址 传输层 TCP端口是否开放 telnet IP 端口 或 netstat检测 应用层 ADB守护进程是否运行 adb devices 查看状态 权限层 USB调试授权是否完成 检查设备上是否弹出授权对话框 三、核心解决方案集合
以下是针对不同成因的标准化处理流程:
- 确保设备已开启“开发者选项”和“USB调试”
- 通过USB线连接设备并执行:
adb devices—— 验证设备可见性 - 启用TCP监听:
adb tcpip 5555 - 获取设备IP地址(设置 → 关于手机 → 状态信息 或 使用
adb shell ip addr show wlan0) - 断开USB,执行连接:
adb connect <设备IP>:5555 - 如失败,重启ADB服务:
adb kill-serveradb start-server - 检查防火墙设置,允许5037及自定义端口入站
- 确认ADB版本兼容性,推荐使用最新Platform Tools
- 部分定制ROM需额外开启“无线调试”开关
- 企业环境中可能存在网络隔离策略,需联系IT部门放行ADB流量
四、高级诊断手段与自动化脚本
对于频繁调试场景,可编写批处理脚本提升效率:
#!/bin/bash # auto_adb_connect.sh DEVICE_IP="192.168.1.100" PORT=5555 adb kill-server sleep 2 adb start-server adb connect $DEVICE_IP:$PORT if [ $? -eq 0 ]; then echo "✅ 成功连接到 $DEVICE_IP:$PORT" else echo "❌ 连接失败,请检查设备状态" fi结合日志分析:
adb logcat | grep adbd可查看ADB守护进程运行状态,判断是否监听失败或认证异常。五、可视化流程图指导操作路径
以下Mermaid流程图展示了完整的故障排除逻辑:
graph TD A[开始] --> B{设备已连接USB?} B -- 是 --> C[执行 adb devices] B -- 否 --> H[检查物理连接] C --> D{显示设备?} D -- 否 --> I[启用USB调试/授权] D -- 是 --> E[执行 adb tcpip 5555] E --> F[获取设备IP] F --> G[adb connect IP:5555] G --> J{连接成功?} J -- 是 --> K[完成] J -- 否 --> L[重启adb服务/检查防火墙] L --> M[重试连接] M --> J六、长期运维建议与最佳实践
在团队协作或CI/CD流水线中,应制定如下规范:
- 统一使用最新版ADB工具链,避免协议不兼容
- 对测试设备固化配置:开机自动启用adb tcpip模式
- 部署专用调试子网段,规避IP冲突与安全组限制
- 使用脚本化方式管理多设备连接,降低人为失误
- 记录每台设备的MAC-IP-序列号映射表,便于追踪
- 定期清理过期授权密钥(~/.android/adbkey*)防止认证失败
- 监控adbd进程资源占用,防止内存泄漏导致无响应
- 在嵌入式设备上考虑编译时启用永久tcpip支持
- 利用Wireshark抓包分析TCP三次握手是否完成
- 结合Secure Shell (SSH) 实现远程ADB隧道穿透NAT环境
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报