https://blog.csdn.net/xjz696/article/details/97958441
解決方案:做Android研發(fā)的大家應(yīng)該都知道adb有個命令叫bugreport,至于這個命令是干嘛的大家可以自己去百度去Google,今天主要講怎么用這個命令去拿到ANR的trace信息。
Step1: 將發(fā)生ANR的手機打開"開發(fā)者選項"并啟動"調(diào)試模式"(不會的自行百度)
Step2:將手機連接到電腦上
Step3:在電腦的命令行里面執(zhí)行命令 "adb bugreport anrlog.zip" (anrlog.zip是生成文件的名字,自己可以隨便寫),這里有個前提是你的電腦裝了adb,沒裝的自行百度如何安裝。
Step4:解壓生成好的anrlog.zip文件,大概是下圖的結(jié)構(gòu),打開第一個文件,也就是體積最大的那個文件。

image.png
Step5:文件打開一看亂七八糟啥都有,其實這就對了,那么我們開始分析這個文件,找出trace信息。
搜索關(guān)鍵字: "VM TRACES AT LAST ANR",一般就能定位到下圖的位置,你看看進程名和時間跟你的進程對上不,對上那就OK了,順著往下翻就是這次ANR的trace信息了。

image.png
Step6:至于分析ANR到底是啥原因引起,那就學問大了去了,我一般也就是分析下主線程卡在哪里了,就跟下圖一樣。如果一眼看不出來,那就繼續(xù)去搜索前人的經(jīng)驗吧,怎么根據(jù)trace信息分析ANR。
如果分析不出來需要查看cpu以及內(nèi)存的占用信息,"CPU usage from"這個關(guān)鍵字可以搜到anr發(fā)生前后cpu的占用情況。

image.png