Android Studio 的 Monitor 是很好用的一个模块,但是有时候会莫名出现一些问题导致和手机连接不上,比如出现No Debuggable Processes ,又比如Android Studio 无法进入debug调试模式,今天我们就来汇总一下这些问题的解决方法。
前言
首先我们得知道,这个Android Monitor到底是个啥,它里面有两个选项,一个是logcat,一个是Monitors。其实他们的原理都是用Android SDK中的工具来实现的,logcat是依靠SDK中platform-tools文件夹中的adb程序来执行的,我们打开命令行,输入adb logcat也可以打印出和Studio中一样的内容,具体的命令参数可以输入adb logcat -help来查看。当然你得把SDK的路径配置到环境变量中(如何配置可以搜一下)。
adb:Android Debug Bridge,Android调试桥,是连接设备和电脑上软件的桥梁,没有他我们就不能实现Studio和手机的数据交换
而Monitors是调用SDK下的tools文件夹中的Monitor.bat这个程序来实现,我们打开这个软件看到的内容就是Studio中看到的。
Monitor找不到手机问题
第一种可能就是adb程序没有启动,我们可以在命令行输入adb devices 回车,然后会看到连接到手机的列表,如果没看到,那么我们可以输入 adb kill-server 回车,然后adb start-server,回车,来重新启动adb程序。如果成功会显示下图的文字。
??然而有的时候输入adb start-server会报错,比如 daemon not running. starting it now on port 5037 ,这个时候一般就是有其他的程序占用了5037端口,导致adb程序不能启动,我们的解决方法就是结束那个占用5037端口的那个进程。
我们先查看是哪个进程占用5037端口,我们可以在 命令行中输入 netstat -ano ,这里的netstat是显示当前网络状态的命令,-ano则是后面的参数,a n o代表的含义不同,比如-a就是显示所有的连接。具体参数的含义可以输入netstat -help来查看。
这时我们看到打印了了很多IP地址,然后IP后面是端口号,找到后面有5037的那一行,看到PID(Process ID)的那一列,然后记下这个进程的ID。
打开任务管理器,切换到“进程”的选项,然后看有没有PID这一列,如果没有我们点击菜单栏的 “查看”->“选择列”->“将PID勾上”,然后我们找到那个PID,右键,结束进程,OK,这时候占用5037端口的进程就被结束了。
最后我们再次执行adb start-server ,就可以启动了,也可以看到Studio已经连接到手机上了。
Monitor找不到程序的问题:No Debuggable Processes
这个时候手机连接上了,但是依然看不到咱们运行的程序,我们先看看Studio是不是已经开启了 允许adb集成,在菜单栏上有个“Tools”->“Android”->“Enable ADB Integration”这个前面要有个对勾才行,没有的点击就可以选上了。
看看这个时候能不能连接上运行的程序,如果不行就先把各大手机助手先关掉,然后在重复上面的操作:“adb kill-server” ->“adb start-server” ,以上的方法可以解决大部分Android Studio 连接不上手机的问题。
Studio不能Debug:Attach Debugger to Android Process无程序列表
就是说Select a pricess to attach to 下面没有程序列表,这个先看看有没有显示手机名称,如果没显示说明adb没有连接到手机,这个时候我们用上面的方法即可解决。
如果有手机名称,但是没有程序名称,那么就说明到Debugger程序没有依附到程序上,这个时候要确保程序是运行状态才可以,可以重新“Run”一下程序到手机上,点击菜单栏的“Run”按钮即可。
如果还是不行,那么在确保没有手机助手运行的情况下(DDMS也不能处在运行中),那么尝试重启adb进行重新连接即可。
最后,所有解决方法的原理就是让adb将手机和Studio连接起来,这样Monitors才能正常的工作,adb的问题一般是没启动,或者adb端口被手机助手占用,我们把根源找到也就好解决问题了。