Android AdbCommandRejectedException和cannot bind to套接字地址(协议/网络地址/端口)只允许使用一次

转载请标明出处:
http://blog.csdn.net/DJY1992/article/details/72628622
本文出自:【奥特曼超人的博客】



安装apk时,出现错误:

com.Android.ddmlib.AdbCommandRejectedException:device offline
Error while Installing APK

网上百度是有三种方法:

  1. 可以在sdk的文件中找到plattform-tools,到这个文件夹里面去可以找到adb, 双击adb,就可以重新启动了
  2. cmd中,执行两步命令操作: 1、adb kill-server 2、adb start-server
  3. 重启电脑

不过解决无效,这里提供另外一种特殊解法,顺带 了解adb 和 端口占用 的过程。

首先,这里的占用并不是连接的问题,因为androidstudio还可以识别出设备号,只是处于离线或者其它状态,说白点,可以理解为Exception了,这样的话,我们要先结束掉ADB进程和kill掉这个服务,那么当你套接字结束掉的时候,会返回adb无效的错误,如下:

java.net.ConnectException: Connection refused: connect
Error while Installing APK



到这里我们就要运行adb来尝试下是否可以执行,如下图:

奥特曼超人杜锦阳

可以看到提示:

cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)



那我们接下来要处理的就是端口问题了, 有的人说我直接重启电脑不就好了?当然也可以,只是我的电脑服务和软件比较多,启动一次很浪费我的时间,这里直接贴处理方案了。

解决步骤分为三大步:

在Terminal窗口或Cmd中输入:

1.查找占用端口

 netstat -aon|findstr 5037

奥特曼超人杜锦阳

2.看端口列表

tasklist /fi "pid eq 7936"

奥特曼超人杜锦阳

3.干掉这个端口占用

taskkill /pid 7936 /f 

奥特曼超人杜锦阳

OK,占用端口没被干掉,我们要找其它办法了,这里我们先用快捷键 《CTRL+ALT+. 》 大法,调出任务管理器,通常情况下,进程下是看不到ID的,这里要查看的话记得选择“查看”-> “选择列” -> “PID” .

一般情况下是这样的,通过PID 找到我们要的 7936 端口,直接右键“结束进程数”+“结束进程” 则可以正常运行了,如果你到这里就解决了,那恭喜你,是正常出现的问题,然而以下碰到的就是非正常的问题。

但是这里发现 7936是adb.exe 强制占用的进程,无法干掉,而 3628 进程又是 AndroidStudio , 我们先关闭 As ,看看是否能干掉它,结果发现还是不行,查找进程发现只剩下adb.exe进程了

奥特曼超人杜锦阳

猜想是底层COM或者实例挂B了。

如果遇到这种百年难得一遇的bug,那还是乖乖重启吧,除非你用WF代码把COM撸一遍。



|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页