You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13设备高ANR率问题排查求助

针对Android 13设备高ANR率的排查建议

enter image description here

我的Android应用遇到严重问题:仅在Android 13设备上出现高ANR(Application Not Responding)率。尽管尝试了各种方法,仍无法稳定复现该ANR或确定其根本原因。

以下是从Firebase Crashlytics获取的堆栈跟踪:

main (native):tid=1 systid=13180 
#00 pc 0x501b0 libc.so (syscall + 32) (BuildId: 8cdfaa872c9e7191f6ce7a82d62dbc4b)
#01 pc 0x54e7c libc.so (__futex_wait_ex(void volatile*, bool, int, bool, timespec const*) + 148) (BuildId: 8cdfaa872c9e7191f6ce7a82d62dbc4b)
#02 pc 0xbb2bc libc.so (pthread_cond_wait + 80) (BuildId: 8cdfaa872c9e7191f6ce7a82d62dbc4b)
#03 pc 0x284f3c libhwui.so (android::uirenderer::renderthread::DrawFrameTask::drawFrame() + 360) (BuildId: 56d31f3aab59c6c0ed6699bc4a8c8848)
       at android.graphics.HardwareRenderer.nSyncAndDrawFrame(Native method)
       at android.graphics.HardwareRenderer.syncAndDrawFrame(HardwareRenderer.java:457)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:866)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:5120)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4819)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4014)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2606)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9773)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1480)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1488)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1111)
       at android.view.Choreographer.doFrame(Choreographer.java:1016)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1463)
       at android.os.Handler.handleCallback(Handler.java:942)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:223)
       at android.os.Looper.loop(Looper.java:324)
       at android.app.ActivityThread.main(ActivityThread.java:8631)
       at java.lang.reflect.Method.invoke(Native method)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:582)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1061)

我已优化代码、更新项目所有依赖并将AGP升级至v7.4.2,但问题仍未解决,恳请技术支持。


排查方向与解决方案

  • 聚焦UI渲染线程阻塞:从堆栈看,ANR发生在渲染线程的DrawFrameTask::drawFrame()阶段,属于UI渲染流程阻塞:
    • 检查主线程是否存在耗时操作(如IO读写、复杂数据计算),尤其是在onDraw、onMeasure或视图遍历的回调中
    • 排查自定义View的绘制逻辑,是否存在频繁创建对象、过度绘制、无效重绘等低效操作
  • Android 13特有适配检查:
    • 确认是否在主线程执行Android 13新增的权限请求(如通知权限、媒体权限),这类操作可能触发线程阻塞
    • 验证ViewRootImpl相关回调的线程安全性,Android 13对视图系统的线程调度逻辑有微调,需避免跨线程操作视图
  • 系统工具定位问题:
    • 使用adb shell dumpsys anr抓取实时ANR日志,获取更完整的线程阻塞上下文信息
    • 用Android Studio Profiler录制主线程CPU轨迹,重点分析渲染阶段的耗时函数调用链
    • 启用Firebase Performance Monitoring,追踪UI渲染的帧耗时数据,定位卡顿高发的场景
  • 依赖库兼容性验证:
    • 即使升级了AGP,仍需确认第三方UI库(如RecyclerView、自定义控件库)是否适配Android 13,旧版本库可能存在渲染阻塞问题
    • 部分Android 13设备的厂商定制系统可能存在libhwui.so兼容性bug,可尝试在不同品牌的Android 13设备上复现问题,缩小范围

内容的提问来源于stack exchange,提问作者Govind Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:23:09