第一章 工欲善其事 必先利其器—Android SDK工具(6)

1.6 Log打印—Log输出工具(logcat)

1.6.1 启动logcat

不仅仅是Android开发,对于所有的软件开发来说,Log的地位都是非常重要的,它是一位我们在开发和调试过程当中不可避免都会接触到的朋友,因此,怎么和这位朋友搞好关系,是我们必须要掌握好的。

在Android当中,Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用。

我们可以使用adb logcat命令来运行logcat:

图1-32 运行logcat

1.6.2 过滤日志输出

在开发和调试中,我们经常需要打印Log出来进行查看。但是有时候在大量的日志中寻找我们需要的信息是一件很头疼的事情,这里就需要我们在日志的海洋中过滤出我们需要的信息。

每一个输出的Android日志信息都有一个标签和它的优先级。

日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统的标签)。

按照从低到高顺序来排列,优先级有以下几种:

V — Verbose (lowest priority)

D — Debug

I — Info

W — Warning

E — Error

F — Fatal

S — Silent (highest priority, on whichnothing is ever printed)

在运行logcat的时候在前两列的信息中你就可以看到logcat的标签列表和优先级别,它是这样标出的:<priority>/<tag> ,如图1-33所示。

图1-33 logcat的组成

在这里我们可以看到,它的优先级是D,标签是dalvikvm。

为了让日志输出能体现管理的级别,你还可以用过滤器来控制日志输出,过滤器可以帮助你描述系统的标签等级。

过滤器语句按照下面的格式描tag:priority … , tag 表示是标签,priority 是表示标签的报告的最低等级。 从上面的tag的中可以得到日志的优先级。你可以在过滤器中多次写tag:priority,它们之间用空格来表示。

下面的过滤语句指显示优先级为Info或更高的日志信息:
adb logcat *:I

效果如图1-34所示。

图1-34 logcat过滤

这样之前优先级为D的log信息就被过滤了,只显示I等级以上的log信息。

1.6.3控制日志输出格式

日志信息包括了许多元数据域。我们可以修改日志的输出格式,以显示出特定的元数据域。

Logcat提供了以下几种格式:

1) brief-默认格式,log是按“优先级/标签 (原进程的PID)”的格式来显示的;

2) process-log是按“优先级 (原进程的PID)”的格式来显示的;

3) tag-log是按“优先级/标签”的格式来显示的;

4) thread-log是按“优先级 (进程号:线程号)”的格式来显示的;

5) raw-显示原始的log信息,不再有其他的元数据域;

6) time-log是按“时间优先级/标签”的格式来显示的;

7) long-显示所有的元数据域,并且信息之间以空白行来间隔。

当启动了logcat ,我们可以通过-v 选项来指定输出格式:

[adb] logcat [-v <format>]

下面是用 thread 来产生的日志格式:
adb logcat -v thread

效果图如图1-35所示。

图1-35 控制logcat输出格式

1.6.4查看可用日志缓冲区

Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到日志信息,你需要通过-b选项来启动logcat。如果要使用循环缓冲区,你需要查看剩余的循环缓冲区:

radio — 查看缓冲区的相关的信息。

events — 查看和事件相关的的缓冲区。

main — 查看主要的日志缓冲区

-b 选项使用方法:

[adb] logcat [-b <buffer>]

下面的例子表示怎么查看日志缓冲区包含radio 和 telephony信息:

adb logcat -b radio

效果图如图1-36所示。

图1-36 查看缓冲区


经验分享:

Android中由系统启动的进程,默认STDOUT和STDERR(System.out和System.err )是被定向到/dev/null中去的,所以,从adb shell是看不到程序的输出的,只能通过LOGW等打印,然后通过logcat查看。

时间: 2024-08-28 09:36:58

第一章 工欲善其事 必先利其器—Android SDK工具(6)的相关文章

第一章 工欲善其事 必先利其器—Android SDK工具(2)

1.2设备管理工具-调试桥(ADB) 1.2.1ADB简介 ADB全称是Android Debug Bridge,是Android SDK里自带的一个工具,用这个工具可以直接操作管理Android 模拟器(Emulator)或者是真实的Android设备. ADB的功能很多,我们主要用到的功能有: 1)运行设备的shell命令行: 2)管理模拟器或设备的端口映射: 3)计算机和设备之间上传/下载文件: 4)将本地apk软件安装至模拟器或Android设备. ADB是一个客户端-服务器端程序,其中

第一章 工欲善其事 必先利其器—Android SDK工具(5)

1.5 UI布局分析工具-视图工具(Hierarchy Viewer) 在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫Hierachy Viewer的可视化调试工具,可以很方便地在开发者设计.调试和调整界面时,提高用户的开发效率,达到事半功倍的效果.它主要有以下两个功能: 1)从可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计: 2) 结合debug帮助观察特定的UI对象进行in

第一章 工欲善其事 必先利其器—Android SDK工具(3)

1.3没有真机一样开发--Android模拟器 有些时候,我们手头上可能并没有符合要求的Android设备.那么这时候我们是不是对调试或者开发就一筹莫展了呢?当然不是.由于我们有Android模拟器. 在这里.我们先来介绍一下Android SDK自带的模拟器. Android模拟器是Android SDK自带的一个移动设备模拟器,它是一个能够执行在你电脑上的一个虚拟设备,它能够模拟除了接听和拨打电话外的全部移动设备上的典型功能和行为. 它能够让你不须要使用物理设备就能够简单地预览.开发和測试A

第一章 工欲善其事 必先利其器—Android SDK工具(4)

1.4 Android调试-调试工具( DDMS) DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供了许多有用的服务,例如:可以为设备截屏:针对特定的进程查看正在运行的线程以及堆信息:Logcat信息:广播状态信息:模拟电话呼叫:接收SMS:虚拟地理坐标等等,是我们在开发过程当中十分重要的工具之一. DDMS 工具存放在Android-sdk/tools/路径下,直接双击ddms.bat运行DDMS,如果是在eclipse中,则通过Window->Open

第一章 工欲善其事 必先利其器—Android SDK工具(7)

1.7图片拉伸不失真-九宫格绘制工具(Draw 9-Patch) 1.7.1什么是"点九"文件 有的时候,我们需要拉伸图片来满足我们的需求,但是有的图片一旦拉伸,就会产生一个很严重的问题-图片失真.那么怎么样既可以拉伸图片而又不失真呢?Android平台上的.9.png格式的图片就是为了解决这一问题而产生的.为了方便,这里我们将.9.png格式的图片称作"点九"文件. 那么,我们先来了解一下什么是点九文件. 1)点九格式的图片是Android平台上新创的一种被拉伸却

Xamarin.Forms教程Android SDK工具下载安装

Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. Xamarin.Form下载Android SDK 下载Android SDK具体的步骤如下. (1)打开浏览器,在地址栏中输入Android SDK官网地址http://developer.android.com/sdk/installing/ index.html,打开官网首页. (2)选项D

工欲善其事必先利其器---Android开发环境搭建

很早之前在developer.android.com/没被墙的时候,下载过集成好的adt,无需配置即可进行开发,也做出了简单的hello world,然后好久没有动过Android.最近想重新学习下Android,却纠结于要用eclipse还是android studio.as作为谷歌自己的主推产品,从功能完善性和后续的发展性来说肯定要比eclipse要好,但是8g的内存推荐配置,把好多小白挡之门外,装上后我的小x220内存马上逼近100%,吓得我赶紧卸载了,还是老老实实的用eclipse吧,毕

android深度探索第一章

Android深度探索HAL与驱动开发的第一章学习了android系统移植与系统开发详述. 正如书上的导言所说,,android已经成为当前智能手机操作系统的老大.所以其重要性可想而知,其学习的意义非比寻常.其发展的迅速,很大程度上取决于任何人都可以利用android的源代码定制完全属于自己的嵌入式系统,而不需要向Google交钱.而由于android原生的代码支持的设备不多,因此,要想在自己的设备(包括手机.智能电视.平板等)上完美运行android,就需要另外一些开发程序,使得android

Android深度探索第一章总结

Android深度探索第一章主要是Android系统移植与驱动开发概述.要想进行系统移植就必须先了解Android的系统架构,Android的系统架构主要是:第一层,Linux内核,主要包括驱动程序以及管理内存.进程.电源等资源的程序:第二层,C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码:第三层,Android SDK API,直接面向应用程序的Java APK:第四层,应用程序,直接面向最终用户的Java应用程序(APK程序).接下来是Android移植的