一.前期基础知识储备
traces.txt系统自动生成的记录anr等异常的文件,只记录java代码产生的异常。
如果是旧版本(Android Studio3以下的版本)的AS,可以直接通过DDMS的File Explorer直接导出来:
之上的AS由于移除了DDMS,所以需要其他的方法获取该文件。
二.上实例分析
笔者在项目中出现了一个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.)
具体表现为停在应用首页一段时间后,点击首页按钮,卡顿然后会弹出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目录下
具体操作如下图:
然后再打开traces.txt文件,找到里面WelcomeActivity相关的地方,也就是自己代码相关的地方。如下:
由上图,我们知道是由于WelcomeActivity内的动画操作不当引起的ANR错误。