如何解决夜神模拟器连不上adb的问题

今天要搞一个安卓的项目。由于电脑系统是年前刚刚重装的,系统里啥都没有,于是临时安装了一下android studio 2.2,然后又装了一个夜神模拟器。工程打开后,编译通过了,于是打开夜神模拟器,想要通过模拟器进行模拟时,结果AS一直提示找不到模拟器。

于是只好重启AS,重启模拟器。结果还是不行。再次重启,貌似可以了。但是,下午再次重启之后,又不行了。反反复复折腾了好几次,基本没几次能顺利连接到模拟器的,每次都要折腾很久。好不容易晚上有点空了,于是静下心来自己研究了一下,看看到底是谁在捣鬼。

1、关掉AS和模拟器,全部重新打开。打开顺序没有要求,随便都行。待二者运行稳定之后,启动cmd命令行,输入adb devices来查看,结果得到如下提示:

  1. C:\Users\leon>adb devices

  2. List of devices attached

  3. adb server version (31) doesn't match this client (36); killing...

  4. * daemon started successfully *

复制代码


看这句话的意思,大概是说目前运行服务器端的adb版本(也就是夜神模拟器的adb版本)比客户端的版本(也就是SDK目录下的adb版本)低,所以系统就把当前运行的服务给杀掉了。可是,仅仅是版本低一点而已,只要不影响使用,你没事杀它干啥?杀了我怎么用呢?这个弱智的adb……

于是,我手动验证了一下:

  1. C:\Users\leon>adb version

  2. Android Debug Bridge version 1.0.36

  3. Revision 0e9850346394-android


  4. C:\Users\leon>nox_adb version

  5. Android Debug Bridge version 1.0.31

复制代码


特别说明:在输入上述命令之前,我已经将SDK下的adb所在目录(C:\Android-SDK_R24.4.1\platform-tools)、以及夜神模拟器的adb所在目录(C:\Users\leon\AppData\Roaming\Nox\bin)加入了系统的环境变量path中。否则,上述命令将无法执行成功!

可以看出,SDK目录下的adb版本为1.0.36,夜神模拟器目录下的adb版本为1.0.31,确实是后者的版本比较低。如此小小的一个版本差异就把这个弱智的adb给整蒙圈了,无法正常运行,导致我遇到了白天的问题。

于是去百度,发现有不少人在支招,有人说是到AS的菜单栏,Tools -> Adnroid -> enable ADB integration;也有人说是,运行cmd命令,cd到夜神安装目录,执行命令”nox_adb.exe connect 127.0.0.1:62001”;还有人说是找到夜神模拟器的安装目录把nox_adb.exe改名成adb.exe,等等等等。

但是,这些问题都是治标不治本,我一个个试过去,都没能彻底解决我的问题。每次一关掉重启,就会再次出现之前的问题。看来,还是得自己动手,才能丰衣足食。

经过一番摸索,最后终于理出了一个解决办法,特记录下来:

1、关掉AS和夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉。

2、找到SDK的目录和夜神模拟器的目录,将SDK目录下的adb.exe文件,复制到夜神模拟器的目录下,因为夜神模拟器目录下原本的adb文件名字叫做nox_adb.exe,因此复制过去之后也得改名为nox_adb.exe。

3、这样就将AS目录下的adb文件和模拟器目录下的adb文件完全同步了,版本号也一致了。此时,可以使用cmd命令查验一下:

  1. C:\Users\leon>adb version

  2. Android Debug Bridge version 1.0.36


  3. C:\Users\leon>nox_adb version

  4. Android Debug Bridge version 1.0.36

复制代码


4、重新打开AS和模拟器,待二者运行稳定之后,点击AS的运行按钮,你会发现模拟器乖乖的躺在列表里等待你的选择。

至此,问题彻底搞定!打完收工!

原文地址:http://blog.csdn.net/leon1741/article/details/54896861

感谢作者:leon1741