如何在非开发环境下轻松查看安卓日志

3,202 阅读5分钟

背景

首先,要查看安卓日志,需要安装adb环境,其次通过adb指令在终端查看,开发者的ide工具终端已经很方便我们过滤筛选日志。但是在未安装ide的环境下,一般是直接用windowd的cmd终端来看,众所周知,cmd体验实在不是很好,所以这里强烈推荐使用cygwin来取代cmd。cygwin是什么?cygwin是一个在windows平台上运行的类UNIX模拟环境,也就是你安装了cygwin就可以在windows下使用linux命令,有些无法在cmd下使用的命令我们便可以在cygwin下使用,如grep、color,这票文章只讲解部分adb指令,更多相关的指令有兴趣可以自行了解。

这篇文章面向对象是QA(和懒得开ide看日志的安卓开发者),因为开发者通常会在代码中加入很多日志用于调试,如果QA能在遇到bug时观察打印出的日志(根据开发者提供的过滤条件),便能协助开发者定位问题问题出处,可以较为及时、高效地定位问题。

使用步骤

一、安装配置adb与配置环境变量

如果你的pc已经安装与配置过adb环境,则忽略此步。

非开发人员,直接到这下载adb工具,解压放在你的目录,然后将adb.exe的路径配置在系统环境变量,参考这里配置adb环境变量

二、安装cygwin

cygwin官方下载地址

根据你电脑64位还是32位,点击对应的下载地址

下载完成后,运行setup.exe程序,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示:

我们看到有三种安装模式:

  • Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
  • Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
  • Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin。

从上述三种模式中选择适合你的安装模式,这里我们选择第一种安装模式,直接从网上安装,当然在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装。选中后,接下来傻瓜式安装,选择你想要安装的路径,一直next-next,若有选项,直接选第一项即可~

安装完成后,打开cygwin Terminal,执行

$ cygcheck -c cygwin
Cygwin Package Information
Package              Version        Status
cygwin               3.1.4-1        OK

会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常

如何筛选日志?

首先准备一条数据线,连上你的手机,打开cygwin Terminal,按如下步骤:

获取设备标识

adb devices 获取设备标识
  • 效果

如上 Q5S0219527008077 就是你的设备标识,如果有显示,说明你手机连接正常,如果有多个设备都会列出来,建议调试的时候不要连接多台设备


如果你的pc上只连上这台设备,则直接通过如下过滤日志:

清除之前的日志信息

adb logcat -c //清除之前的日志信息,一般在看日志前都会执行这个命令,目的是好看日志,不然前面的日志应该会超级多

获取全部日志

adb logcat
  • 效果

这里会获取手机打印的全部日志,但是大部分情况下,我们需要过滤指定关键词的日志。

注意:执行了logcat相关指令,这里会持续获取日志信息,如果需要停止打印,按ctrl+c,如下同理。


过滤单个关键词的日志

adb logcat | grep "EXE_TAG" --color //过滤 EXE_TAG关键字的日志,且关键字彩色标识
  • 效果:

过滤多个关键词的日志

//过滤多个关键字的日志,且关键字彩色标识
//这里是过滤带有wyj或者EXE_TAG关键词的日志
//多个关键字依次在后面添加 \|关键词1\|关键词2,
adb logcat | grep "wyj\|EXE_TAG" --color  
  • 效果:

过滤错误日志

adb logcat *:E(不区分大小写)         //过滤全部错误日志(这里会吧e级别以上的都打印出来,不过一般只关注e级别)
adb logcat *:E | grep "com.xmexe.exe" //过滤com.xmexe.exe包下的错误日志(一般关注的是这个)
  • 效果


将日志保存在指定目录

adb logcat *:E >c:/error001.TXT                        //将所有错误日志保存到c:/error001.TXT 
adb logcat *:E | grep "com.xmexe.exe" ->error009.TXT   //将com.xmexe.exe包下的错误日志保存到error009.TXT 

执行这个指令,会不断收集错误日志,需要停止收集按ctrl+c退出,同时对应目录下可以看到日志文件

同样的,如下指令是将指定关键词的日志输出到文件

adb logcat | grep "wyj\|EXE_TAG" >c:/exe002.TXT

其他常用指令

clear                           //清屏
adb version                     //查看adb版本
adb logcat -t 50                //输出最近50行的日志

adb shell pm list packages      //adb命令查看列出手机装的所有 app 的包名
adb shell pm list packages -s   //列出系统应用的所有包名
adb shell pm list packages -3   //列出除了系统应用的第三方应用包名

更多adb指令可以参考 adb进阶知识,如何过滤只查看某一个app的日志