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

Unity开发游戏在Google Play Store出现大量ANR崩溃求助

分析Unity游戏Google Play上的VSync相关ANR问题

先来看你提供的ANR日志,核心调用链能帮我们定位问题方向:

"main" tid=1 Native 
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 flags=1 obj=0x73960618 self=0xecf6f000
| sysTid=28247 nice=-4 cgrp=default sched=0/0 handle=0xf1a014bc
| state=S schedstat=( 2314581326 753030573 4325 ) utm=164 stm=66 core=1 HZ=100
| stack=0xff11e000-0xff120000 stackSize=8MB
| held mutexes=
#00 pc 0000000000018e9c /system/lib/libc.so (syscall+28)
#01 pc 000000000004850d /system/lib/libc.so (_ZL24__pthread_cond_timedwaitP23pthread_cond_internal_tP15pthread_mutex_tbPK8timespec+102)
#02 pc 0000000000039bb1 /data/app/com.android.chrome-Oy13PXODRGoydMIrhaZcSQ==/base.apk (???)
at org.chromium.ui.base.WindowAndroid.nativeOnVSync (Native method)
at org.chromium.ui.base.WindowAndroid.access$700 (WindowAndroid.java:134)
at org.chromium.ui.base.WindowAndroid$1.onVSync$5166USJ75THMGSJFDLKNAR9FELKIULIJF5N66JBFDPKN8RRI7D52ILG_0 (WindowAndroid.java:16)
at org.chromium.ui.VSyncMonitor$1.doFrame (VSyncMonitor.java:22)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:909)
at android.view.Choreographer.doCallbacks (Choreographer.java:723)
at android.view.Choreographer.doFrame (Choreographer.java:655)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6938)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

从日志能明确看出,主线程卡在了__pthread_cond_timedwait(线程等待条件变量的系统调用),触发点是Chrome WebView的WindowAndroid.nativeOnVSync——这说明ANR和WebView的VSync帧回调处理直接相关,且阻塞发生在主线程。结合你提到的“两周前突然爆发”,给你几个优先级最高的排查方向:

  • 排查近期依赖更新:两周内有没有升级Unity版本、更新广告/社交/支付类SDK(这类SDK普遍内嵌WebView),或者引入了新的WebView相关插件?很多突发ANR都是依赖更新后的兼容性问题导致的。
  • 检查WebView主线程操作:游戏里有没有在WebView的回调(比如页面加载完成、JS交互回调)里执行耗时逻辑?或者在Unity的帧更新/VSync回调中调用WebView的同步API?主线程被这类操作阻塞就会触发ANR。
  • 验证系统WebView版本兼容性:部分Android设备的系统WebView会自动更新,新版本可能和你的游戏代码出现适配冲突。可以在测试设备上降级WebView版本,观察ANR是否消失;如果用的是Unity内嵌WebView插件,也可以尝试锁定插件的WebView内核版本。
  • 检查Unity的VSync设置:查看Project Settings里的VSync Count选项,有没有在两周前从“Don't Sync”改成其他值?或者代码里有没有自定义VSync相关的回调逻辑?如果VSync回调和WebView操作产生冲突,也可能导致主线程阻塞。
  • 捕获更详细的调用栈:用Android Studio的CPU Profiler或者Unity Profiler,在测试环境复现ANR时捕获主线程的完整调用栈,确认是WebView内部的问题,还是你的游戏代码触发的阻塞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:54:54