【移动应用开发技术】ANR检查定位分析工具_第1页
【移动应用开发技术】ANR检查定位分析工具_第2页
【移动应用开发技术】ANR检查定位分析工具_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】ANR检查定位分析工具

百度MTC是业界领先的移动应用测试服务平台,为广大开发者在移动应用测试中面临的成本、技术和效率问题提供解决方案。同时分享行业领先的百度技术,作者来自百度员工和业界领袖等。一、ANR是什么简单说,通常就是App运行的时候,duang~卡住了,怎么搞都动不了。当卡住超过一定时间,Android系统认为这就是一次“ANR(ApplicationNotResponding)”。具体说,在以下情况发生时,会发生ANR(可能在不同ROM中时间有所更改):用户的输入在5s内没被App响应;BroadcastReceiver的onReceiver()超过10s;Service中各生命周期函数执行超过20s。

二、ANR必须死用户在App的绝大部分操作,都需要有App的主动回应,比如按下按钮之后按钮样式的改变、下拉滚动条内容的移动、加载资源时的进度条转转转,它们都是“操作-反馈”配对的模式。对于我们手机上最常见的触摸操作,0.1s的响应延迟已经有很明显的卡顿感了。而对于常见的ANR,用户至少要等5s以上!

发生了ANR,往往会弹出对话框,问用户是继续等待还是直接关掉:相信几乎所有Android手机用户都见过这个然并卵的ANR对话框,但大部分普通用户根本不知道这个对话框在讲什么,并且往往也只有关闭App。漫长的等待就给我看这个?从用户的体验看,就是心中一万只草泥马奔腾起来撞火车的感受。可见ANR对于应用的影响并不亚于Crash。一般来说,界面相对越不“流畅”的App(说明UI线程耗时操作多)越容易发生ANR(一个输入事件在某个设备A上4秒有了反馈,并不意味着它在其他设备B上是安全的)。ANR其实就是界面卡顿的极端情况。反过来,只要通过合理的方案消灭了App出现的ANR,往往也同时会使App展示界面表现会更加顺滑流畅。一些典型的ANR问题场景1)最常见的错误,UI线程等待其它线程释放某个锁,导致UI线程无法处理用户输入;2)游戏中每帧动画都进行了比较耗时的大量计算,导致CPU忙不过来;3)Web应用中,网络状态不稳定,而界面在等待网络数据;4)UI线程中进行了一些磁盘IO(包括数据库、SD卡等等)的操作,在个别设备上因为硬件损坏等原因阻塞住了;5)手机被其他App占用着CPU,自己获取不到足够的CPU时间片,纯属误伤。通过ANR日志定位问题当ANR发生时,我们往往通过Logcat和traces文件(目录/data/anr/)的相关信息输出去定位问题。主要包含以下几方面:1)基本信息,包括进程名、进程号、包名、系统build号、ANR类型等等;2)CPU使用信息,包括活跃进程的CPU平均占用率、IO情况等等;3)线程堆栈信息,所属进程包括发生ANR的进程、其父进程、最近有活动的3个进程等等。三、测试过程发现ANR的现状1、在平常测试中,ANR有基本测试不到,因为ANR基本发生在垃圾设备中,弱网络,频繁操作。2、问题不必现,即使看到了问题,定位麻烦:要去data/anr.txt文件里面查找。必须root,没有对应关系,分析复杂,导出文件就必须依赖手机零距离。

四、引入ANR检测工具由于anr问题不必现,因此引入以下ANR检测工具,当anr问题出现时,自动dump手机中的日志信息如trace文件、堆栈信息等,基本原理如下:4.1、基本原理

检测到UI主线程卡顿时间超过设定的时间,如4s,即dumptrace文件以及堆栈信息,同时抛出异常,收集信息,根据这些文件信息即可定位到发生anr的原因

4.2、ANR检测工具在BaiduBrowser中的应用步骤一:源代码libs中添加anr.jar

步骤二:在

Application

的onCreate中添加初始化sdk的代码initSDK(Contextcontext,StringappKey,booleanwatchdog,inttime)其中time表示检测判定线程是否超时(发生anr)的门限值,单位:ms

步骤三:正常编译打包apk

安装步骤4.2.1编译打包插入anr检测的apk测试app,任意操作(monkey/case),当发生anr时,会自动杀掉进程,并在本地生成日志文件日志路径:/sdcard/lynq_anr下有两个文件夹以BaiduBrowser启动为例。BaiduBrowser启动过程主线程过长,在低端机上容易导致发生anr;线程超时,app进程kill掉,查看手机本地trace日志,Crash信息包括trace文件以及堆栈信息

分析trace文件Trace文件通过eclipse中的DDMS可以查看具体发生ANR卡顿的原因通过realTime/Call从大到小排序,找到对应的与代码相关消耗时间最大的方法可以看出书签数据库初始化消耗CP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论