ADB启动报错 || 谁抢了我的ADB

最近在学习monkey在Android自动化测试中的使用,下面简单介绍一下用到的工具。一般情况下Android开发都会使用一些辅助工具比如Android Studio、Eclipse等。我从一开始的初衷是研究一个AutoMonkey For Android (这个项目是github上的大神的,我会在文章后面给出链接)工具的使用,所以仅仅安装了必须的Android SDK,里面包含需要用到的ADB(Android Debug Bridge)工具和AVD(Android Visual Device)。就因为没有安装Eclipse在我遇到ADB启动报错时,所有找到的问题答案都不得要点。

ERROR MESSAGE

error:could not install smartsocket listener:cannot bind to 127.0.0.1:5037:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。(10048)
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

很明显,大意是说,5037端口被其他进程被占用。但是刚接触ADB的小白,完全懵逼。在网上查了资料,发现不管是国内开始国外的回答都提到是genymotion的SDK配置与Android Studio或者EClipse的配置不一致,导致进程切换的问题。(网上回答样式很多,基本上离不开这个SDK配置的原因)。还有的说是因为版本太低,要升级,这个有点扯。翻看了几十多篇博客和n个人的回答之后,找到一篇非常靠谱的,文后附链接。

原因:

5037端口被其他进程占用

解决步骤:
  • netstat -ano | findstr 5037 :查找占用5037端口的进程PID


    查看端口5037.png

    可以看到进程ID(PID)为 5144

  • netstat -ano | findstr 5144:查看PID对应进程


    PID对应进程.png

    如图可以看到是PPAdbServer.exe,这是我的豌豆荚,在连接手机时使用豌豆荚查看设备,占用了5144端口,而豌豆荚中会调用系统的ADB命令,导致5037端口一直监听5144端口,造成了占用。

  • taskfill /f /im PPAdbServer.exe:杀死该进程


    kill.png

    也可以免去第三步,在第二步就根据PID杀死进程就好了。

  • adb devices : adb命令查看连接的设备


    adb.png

可以看到已经没报错了。我没有连接手机,所以设备列表是空的

链接奉上

AutoMonkey For Android 项目 github地址:

*https://github.com/wangyunshuai/monkey_android

靠谱的博客:

http://www.cnblogs.com/dazhao/p/6534128.html
这篇博客讲解了多种报错的解决方法,值得收藏!

你可能感兴趣的:(ADB启动报错 || 谁抢了我的ADB)