转载请标明出处:
http://blog.csdn.net/DJY1992/article/details/72628622
本文出自:【奥特曼超人的博客】
安装apk时,出现错误:
com.Android.ddmlib.AdbCommandRejectedException:device offline
Error while Installing APK
网上百度是有三种方法:
- 可以在sdk的文件中找到plattform-tools,到这个文件夹里面去可以找到adb, 双击adb,就可以重新启动了
- cmd中,执行两步命令操作: 1、adb kill-server 2、adb start-server
- 重启电脑
不过解决无效,这里提供另外一种特殊解法,顺带 了解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撸一遍。
|| 版权声明:本文为博主杜锦阳原创文章,转载请注明出处。