最近公司给了一项任务,APP需要手机外置一个USB摄像头,这下造成的问题就是,手机外置了其他USB设备后,手机不能与PC连接,也就不能在PC端通过Eclipse等查看Log信息,调试起来特别麻烦,因为即使程序蹦了,你看不到Log也不知道程序崩溃的原因。
正好有一个同事是搞linux底层的,他说可以通过wifi adb的方式来查看log。意思就是手机通过wifi与PC端处于同一网段内,然后用adb命令远程连接手机,然后就可以无线查看手机端的log信息了。
这种方式需要一个必要条件:
手机端要与PC端处于同一网段。
具体过程如下:
- 首先手机可以通过连接wifi,使手机与电脑处于同一网段之下。笔记本好说,可以用360免费wifi什么的,分享一个wifi供手机连接就行了。如果是台式机,且没有网卡的情况下,可以买一个小的USB外置wifi,插上后台式机也可以分享wifi了。(只要PC端能ping通手机端的IP就行了)
- 查看手机端连接PC端分享出来的wifi后分配的IP,假设是172.19.10.5,然后再PC端打开命令行。敲命令 adb connect 172.19.10.5。很多时候第一次情况下是会出现:“unable
to connect to 172.19.10.5:5555”。这是为什么呢?,因为手机默认情况下adb tcpip服务是没起来的。网上很多教程说在手机上下载“终端模拟器”等类似shell命令工具,使用下面命令:(需root权限):1)setprop service.adb.tcp.port 5555 2) stop adbd 3) start adbd
但是本人用USB线连接PC后,通过敲命令 adb tcpip 5555, adb connect 172.19.10.5,就会连接成功,把手机TCP IP服务给启动了,这时你再断开USB线,从步骤1开始重复,连接wifi后敲adb
connect 172.19.10.5就可以连接成功了。如果实在搞不定,就去应用商店下载一个wifi abd的应用程序,别人的程序帮你把这个服务给启动起来。
3. 当你adb connect命令连接成功后,可以通过adb logcat来查看log信息,但是这样会把你手机上所有log信息 全输出在控制台,
而我们大多数时候只需要自己想看到的log,这时就需要过滤。比如adb
logcat *:i ,就会把只有log级别 大于 i 的所有log信息输出。再比如 adb logcat -s tagname ,就会把所有名称是tag的log信息输出。或许你还会不习惯,因为我们调试一个app是想看到这个app所有的log信息,这里需要用到grep指令,但是这个grep指令只在linux下有,所以你要么装个ubuntu,要么装个windows下的linux指令集。这里我推荐装个ubuntu虚拟机,因为搞android的人起码得会linux系统吧?
在linux的shell终端里,可以先输入 adb shell ps,将所有类似在windows下的进程输出,看下你包名所对应的pid,就是你app运行的进程的pid,然后指令 adb logcat | grep $pid,就行了。其他过滤方式可以查google,很多的
写得不是很好,如果有不懂的就留言问我吧,希望能帮助到你。