Flutter应用Android生产环境ANR问题排查求助(android.os.MessageQueue.nativePollOnce栈轨迹无阻塞信息)
Flutter应用Android生产环境ANR问题排查求助(android.os.MessageQueue.nativePollOnce栈轨迹无阻塞信息)
各位好,我负责的Flutter应用在Android生产环境中遇到了棘手的ANR问题,从Firebase拿到的ANR日志里,主线程栈轨迹只显示卡在android.os.MessageQueue.nativePollOnce,完全看不到具体的阻塞原因,实在无从下手,想请大家帮忙分析下排查方向!
涉事设备信息
- 系统版本:Android 14
- 设备型号:OnePlus Nord CE 2 Lite 5G
捕获到的ANR栈轨迹
main (native):tid=1 systid=30202 #00 pc 0xf14fc libc.so (__epoll_pwait + 12) (BuildId: d1a98b526f2f94260a53c3055979a4f6) #01 pc 0x18748 libutils.so (android::Looper::pollInner + 192) (BuildId: 267ba2041a69a401110f388720a8e47b) #02 pc 0x18624 libutils.so (android::Looper::pollOnce + 124) (BuildId: 267ba2041a69a401110f388720a8e47b) #03 pc 0x18eaa8 libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce + 48) (BuildId: 5ba6d244d60f0e4e50205e34eeba39e2) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:350) at android.os.Looper.loopOnce(Looper.java:187) at android.os.Looper.loop(Looper.java:368) at android.app.ActivityThread.main(ActivityThread.java:8839) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
日志相关说明
根据官方提示,这种类型的ANR报告是因为当栈轨迹被捕获时,导致ANR的阻塞状态已经结束,所以无法在栈中定位到具体的阻塞点。这类ANR通常可能由Android系统服务内部的高负载或资源竞争引发,但目前没有直接证据指向具体原因。
我现在的核心困惑:
- 这种无明确阻塞点的ANR该从哪些角度入手排查?
- 有没有办法在生产环境中捕获到更有效的栈信息,定位真正的阻塞根源?
- 针对Flutter应用,有没有特定的排查方向需要重点关注?
希望有经验的朋友能给点建议,万分感谢!
内容来源于stack exchange




