日常测试中经常遇到电脑检测不到设备的问题,要嘛就是开发者没有开启,要嘛就是USB调试没有开启,导致执行自动化和性能测试的时候经常会因为连不上设备而执行用例失败,报下面的错误类型还有可能其他各种错误:
百度上的方案有很多,上面这种情况其实不是百度上各种所说的5037端口被其他程序给占用的情况,可就是连不上手机。我这里给出自己的经验有下面几种方案可以试试:
方案一:
把ADB包D:\android-sdk\platform-tools里面的4个文件“adb.exe fastboot.exe AdbWinApi.dll AdbWinUsbApi.dll”复制到C:Windows\SysWOW64目录下,再使用命令行执行ADB就可以了。(这是我所有方案里唯一生效的方法,所以放在第一个),也有人说把ADB下面的所有文件都复制过去,我觉得没必要。
方案二:
就是百度上各种端口被占用的情况,可以按照下面的步骤检测:
1)先检测你的5037端口被谁占用,利用命令:netstat -ano | findstr "5037" (一般情况下adb默认端口号为5037)然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字
2)打开任务管理器,点击“进程“,“查看”-“选择列”,勾选PID
3)查找第2步中看到的数字PID,然后结束相关进程,也可以用命令的形式杀掉进程,cmd下输入:tasklist | findstr “21152”:查看这个进程是由哪个程序创建的(21152就是占用5037端口的一个进程的PID); 然后执行:taskkill /f /pid 21152:将进程关掉;
4) 最后adb kill-server,然后adb start-server,即可。
还有一种可能就是电脑上安装了各种手机助手(豌豆荚、91助手、PP助手)这种软件会占用5037的端口,最好都卸载掉。很多情况这种助手都可以检测链接设备,但是adb devices就是检测不到。
另外还有一种方法解决端口被占用的问题,那就是自定义一个adb的端口号:
二、自己配置 adbserver 端口,使用一个生僻的值。(以后adb端口号就是修改后的端口号)
1、在系统环境变量中定义 ANDROID_ADB_SERVER_PORT 的值即可。最好选择一个5位数的端口号(10000 ~65535),不易重复。
2、win下需要在环境变量中增加一个ANDROID_ADB_SERVER_PORT,值填自己定义的端口。
3、linux下则要 export$ANDROID_ADB_SERVER_PORT = 自定义端口,即可。
方案三:
手机启动了USB调试,并且通过USB连接了电脑,就是没有显示出来,修改adb_usb.ini文件 的方法
找到你的模拟器存放的目录,<例如:C:\Users\wb-jnyanjiao\.android
>下找到或新建一个adb_usb.ini文件。编辑该文件,新增一行 0x12D1,(红色字体的就是上面获取的硬件id),保存
在cmd上输入adb kill-server 然后重新拔插usb线之后,就可以连接adb 了
方案四:(该方案适用于5037端口没被占用却检测不到设备的情况)
1.输入命令:adb nodaemon server,则dos页面上显示静止,表示此命令正在执行。(adb nodaemon server:检测5037端口是否被占用;)
2.再打开一个新的dos命令行窗口cmd
3.输入adb devices,成功显示目前连接的设备
方案五:
最难以想象的情况就是你的电脑里到底安装了多少个adb.exe 那就看下你的任务管理器里启动的是不是你要的那个;一台电脑只需要一个adb,不需要重复拷贝;不然就会导致执行用例的时候eclipse或者idea报以下的错误(感觉就是一会连上去一会连不上去的样子,最后执行失败:
鼠标右键-打开文件位置
于是问题又来了ADT工具,adb工具,联系,区别,作用?
ADT: 详解链接:https://www.cnblogs.com/crstyl/articles/6906571.html , ADT内含SDK管理,安卓虚拟设备管理器
安卓开发工具---Android Develop Tool,是Eclipse的插件,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。
SDK(Software Development Kit)为特定的软件包、为软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Android中,他为开发者提供了库文件以及其他开发所用到的工具。简单理解为开发工具包集合,
ADB是与仿真器和设备连接的工具。除了在EclipseADT插件中的关键功能外,还可以可以在命令行中使用它来上传和下载文件,安装和卸载软件包,或通过shell并访问设备或模拟器上的许多其他功能。
参考链接1:http://blog.csdn.net/easy_gemini/article/details/36180399
参考链接2:http://blog.csdn.net/whurs/article/details/52857647