Android的程序调试主要使用Logcat进行,本节主要介绍Logcat的使用。
- 开启调试模式
使用Android Studio进行程序调试,首先需要连接虚拟Android设备或真实Android设备,设备上需要启用调试功能。
虚拟Android设备默认情况下会启用调试功能。对于真实Android设备,需要在设备开发者选项中启用调试功能。Android设备的开发者选项一般在设置App里可以找到,在该界面中可以配置一些系统行为来帮助分析和调试应用性能,例如,可以启用 USB 调试、捕获 bug 报告、启用点按的视觉反馈、在窗口 surface 更新时刷写 surface、使用 GPU 渲染 2D 图形等等。
不同版本的Android启用开发者选项的方法不同,在 Android 4.1 及更低版本上,开发者选项界面在默认情况下处于启用状态。在 Android 4.2 及更高版本上,必须手动启用此界面。
大部分Android设备启动开发者选项的方法是找到“设置”中的“关于手机”,再找到“版本号”,连续点按版本号选项七次,直到看到 “您已处于开发者模式,无需进行此操作。” 或类似消息。
注意在某些设备上,开发者选项界面所在的位置或所用的名称可能有所不同,具体请搜索各自品牌手机开发使用说明。
在开发者选项界面需要启用 USB 调试,以便 Android Studio 和其他 SDK 工具能够通过 USB 连接时识别设备,然后才能使用调试工具和其他工具,如图1所示。
图1 开启开发者选项和USB调试
Android 11及以上系统还支持无线调式,无需使用数据线即可进行程序调试,无线调试开启方法与USB调试类似,具体使用步骤读者可查阅相关资料。
2.使用 Logcat 查看日志
Android Studio中的 Logcat 窗口会实时显示设备日志,日志有来自在 Android 上运行的服务的消息或系统消息、当前调试应用的消息。
如需查看应用的日志消息,执行以下操作。
1)在 Android Studio中,在实体设备或模拟器上构建并运行应用。
2)从菜单栏中依次选择 View → Tool Windows → Logcat。
3)默认情况下,Logcat 会滚动到末尾。单击 Logcat 视图或使用鼠标滚轮向上滚动即可关闭此功能。如需重新开启,请单击工具栏中的“Scroll to the End”图标,还可以使用工具栏清除、暂停或重启 Logcat。
如果应用抛出异常,Logcat 会显示一条消息,后跟相关联的堆栈轨迹,其中包含指向相应代码行的链接,如图2图中蓝色字“MainActivty.java:19”即表示错误出现在MainActivty.java文件的第19行,单击该蓝色字即可跳转到出错代码处。
图2 Logcat示例
3.搜索查询日志
在 Android Studio中,可以直接从主查询字段生成键值对搜索所需日志。以下是可以在查询中使用的键:
- tag:与日志条目的 tag 字段匹配。
- package:与日志记录应用的软件包名称匹配。
- process:与日志记录应用的进程名称匹配。
- message:与日志条目的消息部分匹配。
- level:与指定或更高严重级别的日志匹配,例如 DEBUG。
- age:如果条目时间戳是最近的,则匹配。值要指定为数字,后跟表示时间单位的字母:s 表示秒,m 表示分钟,h 表示小时,d 表示天。例如,age: 5m 只会过滤过去 5 分钟内记录的消息。
如图3所示,在日志搜索框中输入tag,可以看到支持的tag匹配模式,包括精确匹配、包含、正则表达式匹配、不包含等。
图3 Logcat tag键值匹配模式
图4 Logcat message键值匹配模式
图5 Logcat package:mine匹配模式
大部分其他键同样有这些匹配模式,如图4所示是message键的匹配模式,除此之外,还有个特殊查询: package:mine,表示当前包名下的所有日志信息,如图5所示。
level 查询与 Logcat 消息的日志级别匹配,其中日志条目的级别大于或等于查询级别。例如,level:INFO 匹配日志级别为 INFO、WARN、ERROR 或 ASSERT 的任何日志条目,级别不区分大小写,如图6所示。有效级别包括:VERBOSE、DEBUG、INFO、WARN、ERROR 和 ASSERT。
图6 Logcat level:INFO匹配模式