让人深恶痛绝的“Adb connection Error:远程主机强迫关闭了一个现有的连接。”

“Adb connection Error:远程主机强迫关闭了一个现有的连接。”
曾数次被这句话搞到头皮发麻,所以打算整理一份相关的小笔记,以备今后再次碰到时有处可循。

本人测试机是小米4,所以如果你的也是小米手机,请确保以下设置均正确
① 更多设置–》系统安全–》未知来源–》打开
② 开发者选项:开启开发者选项–》打开
:usb调试–》打开
:usb安装–》打开
:启用MIUI优化–》关闭

确保手机设置没问题之后,我们来排除出现这个问题的各种原因:

1.进程占用
其实我目前认为这是该问题在技术层面上的根本原因(为什么这么说,后面会提到)。
因为端口号“5037”是adb默认的端口号,所以我们需要找到电脑上占用这个端口号的所有进程

打开cmd窗口,输入 netstat -ano | findstr 5037
让人深恶痛绝的“Adb connection Error:远程主机强迫关闭了一个现有的连接。”_第1张图片

在列表中我们可以看到有两个进程的端口号是“5037”,PID分别是4104和3292
有了两个PID之后,我们有两个办法去查询出PID所在的进程:
① 在cmd窗口分别输入 tasklist | findstr 4104tasklist | findstr 3292,可以看到两个PID所在的进程名字,
让人深恶痛绝的“Adb connection Error:远程主机强迫关闭了一个现有的连接。”_第2张图片

分别是adb.exe 和studio64.exe ,其中adb.exe是sdk\platform-tools下的;studio64.exe大家都知道,是开发工具自带的进程。此时说明占用5037端口号的两个进程都是“友军”
如果确认不是友军,我们可以输入
taskkill /f /pid **** ,其中 **** 是我们要干掉的进程的PID,此时,该敌人就被我们杀死了。
但该方法有可能指标不治本,因为下次他有可能还会再次开启,所以我们也可以用第二个方法。

② 当我们不知道占用5037端口号的进程是不是友军时,我们可以打开电脑的任务管理器,查看–》选择列–》PID(勾选)–》确定
设置完毕之后,我们在任务管理器页面就能看到所有进程的PID,找到那两个PID所在的进程,
这里写图片描述
这里写图片描述

这个时候我们先确认是哪些应用下的进程,然后来判断该进程是否应该被干掉。
比如今天发现的SogouCloud.exe,
为了防止它在今后继续搞事,我们需要打开搜狗输入法的设置–》高级–》云计算候选(取消勾选)。
还有如果你是腾讯管家的用户,那么上镜率最高的应该就是tadb.exe了,参考这篇博客可以帮助你彻底搞定tadb.exe。
https://www.cnblogs.com/andywenming/p/4116058.html
其他敌军可以自行查询怎么关闭自启动

2. 驱动问题:
当我们用数据线连接移动设备和电脑时,电脑一般会自动下载驱动,但是如果驱动安装失败或者安装错误,就会导致二者连接失败,出现“未能成功安装设备驱动程序”,从而影响开发调试。
打开电脑控制面板–》设备管理器–》Android Phone
如果你的驱动是带感叹号的,说明有问题,右键卸载之后使用驱动精灵之类的工具重装即可。
注:导致驱动安装失败的原因很有可能只是数据线接口处接触不良,可尝试拔掉重新接入,多试几次。

3. 各种冷门原因:
这也是最让人抓狂的原因点,包括小米手机中的MIUI优化问题也是在这一范畴之内。它不是技术层面上的,但它一旦发生,就会让你摸不着头脑,陷入抓狂之中。相信大家在开发中也会碰到类似的问题,你在那里排查了半天,到最后往往是因为一些超级低级的错误。

比如这次,我昨天换了一根新的数据线,当时接近下班时间,没有继续debug。然后今天就爆发了这个问题。
通过排除了端口占用的原因之后,我索性换回了之前的数据线,然后顺利调试成功。我怀疑原因有两种可能:
① 数据线问题;
② 测试机的usb接口问题。

后来多次试验证明了是手机usb接口处接触不良,从而出现了时灵时不灵的问题。

该笔记会持续更新,
开发虐我千百遍,我待开发如初恋!

你可能感兴趣的:(让人深恶痛绝的“Adb connection Error:远程主机强迫关闭了一个现有的连接。”)