Android 上经常会出现崩溃,停止响应的异常问题,这篇文章对这些问题进行一个分类,并给出对应的 logcat 关键词,方便以后排除问题。

弹出报错提示框

一般情况下,当程序报错时,有弹出框出现都是 java 层代码崩溃导致,

logcat 关键字:AndroidRuntime,System.err,crash

没有弹出框提示,闪退

这种情况一般都是 c/c++层内容崩溃.

logcat 关键字:fatal, exception, jni, libc,Build fingerprint, backtrace

弹出无响应提示框

这种情况是 ANR 无响应导致的,可在日志中查找 anr 关键字。

anr 问题定位时,需要手机里面的 /data/anr/traces.txt 作为问题定位分析日志。

界面被覆盖,显示不全

我们的手机屏幕分辨率、DPI、比例较特殊,与其他厂商不一致,容易造成屏幕适配问题。

黑屏

对于游戏,可能是因为它是针对某个特定的显卡平台开发的,某些绘图操作不支持等。

对于 App,可能是强制 GPU 渲染打开了导致的。

应用卡顿,动画不流程问题

遇到这样的问题,可以分析,渲染帧率,软件绘图层级复杂度,可参考 2D/3D 图形渲染问题分析

兼容问题分析工具

HierarchyViewer: 查看应用程序的界面布局

adb logcat:查看 Log。

debug framework:设备断点调试,添加 Log 输出。

apktool:解包 apk 文件,分析其中的资源、布局文件、smali 代码。

dex2jar, jd-gui:把 apk 转为 jar,通过 jd-gui 可以查看 jar 中的 java 源码。