本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
步骤
- 查看日志,发现如下提示:
Adb connection Error:远程主机强迫关闭了一个现有的连接。
Cannot reach ADB server, attempting to reconnect.
daemon not running; starting now at tcp:5037
- 查看是谁占用了5037端口,可以的话把它终止掉
在命令行下输入:
netstat -ano | findstr 5037
我发现我的是被一个系统进程(SYS开头的)给占用了。这不好乱杀,所以我就关机重启了。
- 之后就正常了
Gradle build finished in 25 s 244 ms
Launch succeeded
设备一栏也能成功显示手机型号。
其他可能的原因及方法
也有可能是物理硬件造成的,即数据线接触不良,电脑没能识别设备。
下次遇到这种情况,可以先拔线重连,不行再从软件层面入手。
注意事项
网上有的博客可能只会告诉你让你把杀毒软件、安全卫士之类的关掉,但我觉得这种说法不够准确。每台电脑某一时刻占用某个端口的进程可能不一样,你要知道你为什么要把它关掉,并且能够准确找到它是谁才行,不能一顿瞎碰。
更新: 第二天又遇到了这个问题,不过这次识别出了设备但是下载失败,也提示:"Cannot reach ADB server, attempting to reconnect."然而这次拔线、重启电脑、invalid cache and restart 都不得,想去kill进程却发现是被TCP占用,而且每次的进程号还不一样,说明上面的方法对我来说也是治标不治本了。 - 解决方案:既然我们平时是用数据线连接调试的,那就取消adb的无线连接权限。 步骤: 依次点击 File-settings,进入如下页面:取消勾选该选项: ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1713420da0b6474c889f543dd95b239f~tplv-k3u1fbpfcp-watermark.image?) 一按ok之后再试就成功了。