实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

一.前期基础知识储备

traces.txt系统自动生成的记录anr等异常的文件,只记录java代码产生的异常。

如果是旧版本(Android Studio3以下的版本)的AS,可以直接通过DDMS的File Explorer直接导出来:

之上的AS由于移除了DDMS,所以需要其他的方法获取该文件。

实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

二.上实例分析

笔者在项目中出现了一个ANR,信息如下:

06-01 14:55:29.473 973-1030/? E/ActivityManager: ANR in com.znv.linkup (com.znv.linkup/.WelcomeActivity)

PID: 9306

Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 2. Wait queue head age: 17784.3ms.)

实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

具体表现为停在应用首页一段时间后,点击首页按钮,卡顿然后会弹出ANR的提示。可以看到出问题的是WelcomeActivity,接着导出traces.txt文件具体定位到出问题的地方。

1)我们先跳转到Android/SDK/platform-tools的所在目录下,crtl + shift + 左键 选择在这里打开cmd窗口

2)然后输入 adb shell

3)输入 cd data/anr 跳转到anr目录

4)输入 ls 查看所有文件

5)Ctrl+D 先退出

6)最后输入 adb pull /data/anr/traces.txt 将文件保存到tools目录下

具体操作如下图:

实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

然后再打开traces.txt文件,找到里面WelcomeActivity相关的地方,也就是自己代码相关的地方。如下:

实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题

由上图,我们知道是由于WelcomeActivity内的动画操作不当引起的ANR错误。