Android中adb端口被占用的有效解决方案

新增:

最近在使用中发现了新问题,AS先启动Genymotion后,再点击运行程序就会提示ADB被占用,用adb kill-server无法解决。而如果我先试着点击运行程序(不需要在模拟器中运行,只是点击运行),再打开Genymotion就不会有这种问题。

 

 

第一种方案:

Android开发经常遇到adb的端口127.0.0.1:5037,被其他程序占用的情况,老是启动不了模拟器。可是又不能杀死那个占用端口的程序,这时候怎么办呢?有一个简单的办法可以很好地解决这个问题。

5037这个端口号被占用,除了结束掉占用的程序外,还可以将adb的端口号换成一个没有其他使用的端口号,比如我用的就是9999,这个就没有被占用。接下来,就是见证奇迹的时刻。

第一步:

在环境变量中,在系统变量中配置一个新的系统变量变量名ANDROID_ADB_SERVER_PORT,变量值:9999(或者自己定义的其他的值,最大值为65535,如下图所示:

 

Android中adb端口被占用的有效解决方案_第1张图片

 

第二步:

按住Windows键+R,输入cmd打开cmd命令行程序,输入adb kill-server,Enter换行。(如果提示“不是内部或外部的命令,也不是可运行的程序或批处理文件”,先试一下文末的附录中的方法)

再输入adb start-server,Enter换行。效果如下图:

 

Android中adb端口被占用的有效解决方案_第2张图片

 

第三步:

这时应该就可以成功启动模拟器了。

 

Android中adb端口被占用的有效解决方案_第3张图片

 

另一种解决方案

就是关掉占用端口的进程。这种方案有两种办法去实现。

首先我们需要知道adb.exe指定的端口号是多少,默认的adb端口号是5037

方法一:

启动Windows的任务管理器,在服务中找到PID值为5037的进程,选中它将其关闭。

Android中adb端口被占用的有效解决方案_第4张图片

方法二:

首先打开cmd命令行窗口

查看占用端口的进程PID
C:\Users\hasee>netstat -aon|findstr 5037
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3676


通过PID查看所有进程
C:\Users\hasee>tasklist /fi "PID eq 3676"


映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
svchost.exe                   3676 Services                   0     13,800 K


杀死占用端口的进程
C:\Users\hasee>taskkill /pid 3676 /f
成功: 已终止 PID 为 3676 的进程。

 

附录

有些电脑可能还没配置ADB环境变量,所以在cmd命令行里没办法使用adb命令。这里补充一下adb配置方法

和上面创建一个新的环境变量不同,这次我们只需要在系统环境变量里,找到Path这个变量,在变量值最后加上“;D:\SDK\platform-tools;”(自己电脑上SDK下platform-tools文件夹的地址),注意两个变量值之间的分号“;”。这样就可以在cmd命令行中使用ADB命令了。(其他要在cmd中使用的命令也是同样的设置方式)

Android中adb端口被占用的有效解决方案_第5张图片

 

你可能感兴趣的:(Android,android,解决方案,cmd,adb,Android模拟器)