应用常见问题分析思路

  • 应用问题分类
    功能 (停止运行,响应出错)
    显示 (花屏,黑屏,闪屏,显示出错)
    功耗,内存

  • 停止运行
    查看Assertlog -> 查看mainlog -> 分析解决异常

  • 响应异常
    按键或者触摸屏幕,手机没有响应或者响应异常
    异常原因:硬件问题,框架服务,事件未传给应用,应用逻辑错误
    分析思路:应用窗口是否收到事件,是 则为应用内部逻辑问题,否 判断是否为硬件和框架问题。不 是硬件和框架的问题就分析log确定事件传递给了哪个窗口。
    打开 “开发者选项”- “指针位置” 若显示路径则不是硬件或者框架问题。
    'adb shell dumpsys input' 确定窗口接受事件的顺序
    'adb shell dumpsys SurfaceFlinger'查看窗口显示层级(当前显示的activity)

  • 显示异常
    花屏分析:截图判断。截图显示正常,若打开‘停用HW叠加层’问题消失说明是HW叠加问题。截 图不正常则判断是否为硬件加速问题,不是则为应用内问题。
    黑屏,闪屏分析:关闭动画。正常则为动画切换问题,查看动画设置修改动画。不正常则dump图形 layer,查看是否是starting窗口的问题。

  • 内存泄漏和oom
    内存泄漏:程序向系统申请分配内存空间后,在使用完毕后未释放,结果导致一直占据该内存单元, 不能被其他进程使用。
    内存溢出:程序向系统申请的内存空间超出了系统能给的范围。
    分析思路:判断是否内存泄漏,判断java层泄露(抓取hprof文件并分析)还是c层泄露(showmap命令查看)。
    'adb shell dumpsys meminfo packname' 分析内存泄漏在哪一层

  • 其他工具
    抓取eventlog*: 'adb logcat -b events -v time >log_events.txt'打印系统事件日志(触摸事件,进程 activity的创建销毁等)。
    dumpsys查看 服务 的状态信息,只要是service都可以触发一些dump操作,通过'dumpsys | grep DUMP'查看服务

你可能感兴趣的:(应用常见问题分析思路)