记录一下使用adb 过程中遇到的问题
question 1:运行adb shell 出现"adb server version (31) doesn't match this client (36); killing..."
List of devices attachedhttp://write.blog.youkuaiyun.com/postedit
adb server version (31) doesn't match this client (36); killing...
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:
通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
原因:
此socket 的端口被占用
一般是360手机助手或者金山毒霸手机助手占用了次端口,所以其他的就不能用了。
解决方法:
启动任务管理器
关掉360手机助手相关进程,先关闭360MobileMgr.exe ,再关闭 360MobileLink.exe
关掉金山毒霸手机助手相关进程
question 2:adb logcat的过滤
参考文章:http://blog.youkuaiyun.com/xxxsz/article/details/7315481
1.只显示需要的输出,白名单
通过管道使用 grep 过滤字符串
adb logcat | grep myapp
adb logcat | grep -i myapp #忽略大小写。
adb logcat | grep --color=auto -i myapp #设置匹配字符串颜色。
2.显示同一个进程的所有输出
有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;
仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。
还是通过 grep 实现。
思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的Java包名(如 com.android.myapp)。
#!/bin/bash
packageName=$1
pid=`adb shell
ps
|
grep
$packageName |
awk
'{print $2}'
`
adb logcat |
grep
--color=auto $pid
logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的。
adb logcat -c && adb logcat