前言:有时候在启动AS的时候会出现“enable to establish a connection to adb”的问题,如图:
网上关于这个问题的解决方案很多,下面主要还是和大家分享一下我的解决思路:
1.异常分析:首先,根据报错的信息提示,我们知道这个异常的主要意思是ADB连接异常,ADB 主要指的但是Android DebugerBriage,它是 Android SDK 里面的工具,其主要作用是连接 AS 与手机进行调试。但是,也有一些软件比如:360手机助手、豌豆荚等也有类似的工具,所以在adb服务启动的时候有可能5037的端口被占用,这样,就造成了adb的服务启动失败,从而在进行调试时,手机与AS连接不上,出现了如图所示的异常。
2.ok,定位到了异常的主要原因,我们相应的“对症下药”:
1)首先,cmd进入控制台,输入“adb kill-server”,将adb原来的服务杀死;
2)然后,执行“adb start-server”,尝试重新启动服务,但是,一般情况下,都会出现如图所示的问题:ADB server didn’t ACK failed to start daemon,出现这个问题,也就验证了我们在上面分析异常的原因–5037端口被占用;
3)接下来,我们需要做的是,找到占用 5037端口的程序,然后把它手动结束或者杀死:
执行“netstat –ano | findstr “5037” ,表示查找被占用的端口,如图,比如我找到的占用5073端口的程序的PID 值为6932;
4)紧接着,在任务管理器中找到占用5037端口的程序的PID,将对应的程序结束:
5)在次执行“adb start-server”,重新启动AS,问题解决。
但是,有时候,针对上面的方案进行解决的时候,会发现adb的服务还是一直启动失败,手机无法与AS正常连接,这时,我们就可以关闭电脑,重新启动,再重启AS;
如果还不行的话,干脆安装一个360手机助手,安装成功之后,插上USB线连接手机(当然,手机设置中的“开发者”权限是必须要开启的),如果能连接成功,那么AS也就能与手机连接成功了。
以上仅为个人解决问题的思路,希望可以为大家提供解决方向,不对之处,欢迎指出。