赞
踩
最近在使用中发现了新问题,AS先启动Genymotion后,再点击运行程序就会提示ADB被占用,用adb kill-server无法解决。而如果我先试着点击运行程序(不需要在模拟器中运行,只是点击运行),再打开Genymotion就不会有这种问题。
Android开发经常遇到adb的端口127.0.0.1:5037,被其他程序占用的情况,老是启动不了模拟器。可是又不能杀死那个占用端口的程序,这时候怎么办呢?有一个简单的办法可以很好地解决这个问题。
5037这个端口号被占用,除了结束掉占用的程序外,还可以将adb的端口号换成一个没有其他使用的端口号,比如我用的就是9999,这个就没有被占用。接下来,就是见证奇迹的时刻。
在环境变量中,在系统变量中配置一个新的系统变量变量名:ANDROID_ADB_SERVER_PORT,变量值:9999(或者自己定义的其他的值,最大值为65535),如下图所示:
按住Windows键+R,输入cmd打开cmd命令行程序,输入adb kill-server,Enter换行。(如果提示“不是内部或外部的命令,也不是可运行的程序或批处理文件”,先试一下文末的附录中的方法)
再输入adb start-server,Enter换行。效果如下图:
这时应该就可以成功启动模拟器了。
就是关掉占用端口的进程。这种方案有两种办法去实现。
首先我们需要知道adb.exe指定的端口号是多少,默认的adb端口号是5037。
启动Windows的任务管理器,在服务中找到PID值为5037的进程,选中它将其关闭。
首先打开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中使用的命令也是同样的设置方式)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。