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

Unity安卓游戏部分机型卡顿后崩溃求助(附堆栈日志)

Unity Android游戏卡顿后崩溃问题分析求助

我开发的Unity游戏com.MAPSGames.FingerEscape在部分Android设备上出现异常:运行数分钟后开始卡顿,随后发生崩溃。以下是从Google Play Console获取的堆栈追踪信息,恳请技术同行帮忙分析解决:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.MAPSGames.FingerEscape <<<

backtrace:
  #00  pc 0x0000000000051b7c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+168)
  #01  pc 0x00000000006d157c  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+668)
  #02  pc 0x000000000001695c  /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+76)
  #03  pc 0x0000000000015f8c  /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+364)
  #04  pc 0x00000000002857ec  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::AddGlobalRef(art::Thread*, art::ObjPtr<art::mirror::Object>)+1924)
  #05  pc 0x000000000059add0  /apex/com.android.art/lib64/libart.so (art::JNI<false>::NewGlobalRef(_JNIEnv*, _jobject*)+272)
  #06  pc 0x0000000002586cfc  /data/app/~~TWASomDJJoLgoJ0Ii_lylw==/com.google.android.trichromelibrary_524912634-mVCqI3Yv_FjomGEuf0ULyQ==/base.apk!libmonochrome_64.so
  #07  pc 0x00000000025869fc  /data/app/~~TWASomDJJoLgoJ0Ii_lylw==/com.google.android.trichromelibrary_524912634-mVCqI3Yv_FjomGEuf0ULyQ==/base.apk!libmonochrome_64.so
  #08  pc 0x0000000003799f0c  /data/app/~~TWASomDJJoLgoJ0Ii_lylw==/com.google.android.trichromelibrary_524912634-mVCqI3Yv_FjomGEuf0ULyQ==/base.apk!libmonochrome_64.so
  #09  pc 0x0000000004a0367c  /data/app/~~TWASomDJJoLgoJ0Ii_lylw==/com.google.android.trichromelibrary_524912634-mVCqI3Yv_FjomGEuf0ULyQ==/base.apk!libmonochrome_64.so
  #10  pc 0x0000000004a03614  /data/app/~~TWASomDJJoLgoJ0Ii_lylw==/com.google.android.trichromelibrary_524912634-mVCqI3Yv_FjomGEuf0ULyQ==/base.apk!libmonochrome_64.so (Java_J_N_MLlibBXh+28)
  #11  pc 0x0000000000180b14  /data/app/~~5n5gC1GuTVMuUN0apQKPDA==/com.google.android.webview-uUIe4oNpEtr-Yp44RGU08w==/oat/arm64/base.odex (art_jni_trampoline+116)
  #12  pc 0x00000000003221b0  /data/app/~~5n5gC1GuTVMuUN0apQKPDA==/com.google.android.webview-uUIe4oNpEtr-Yp44RGU08w==/oat/arm64/base.odex (org.chromium.base.JavaExceptionReporter.uncaughtException+80)
  #13  pc 0x000000000020aec4  /apex/com.android.art/lib64/libart.so (nterp_helper+7636)
  #14  pc 0x00000000000ec490  /apex/com.android.art/javalib/core-oj.jar (java.lang.ThreadGroup.uncaughtException+28)
  #15  pc 0x000000000020a044  /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
  #16  pc 0x00000000000ec47c  /apex/com.android.art/javalib/core-oj.jar (java.lang.ThreadGroup.uncaughtException+8)
  #17  pc 0x000000000020ae64  /apex/com.android.art/lib64/libart.so (nterp_helper+7540)
  #18  pc 0x00000000000ed702  /apex/com.android.art/javalib/core-oj.jar (java.lang.Thread.dispatchUncaughtException+30)
  #19  pc 0x00000000002ca764  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #20  pc 0x0000000000430030  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+880)
  #21  pc 0x00000000005ab80c  /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list)+300)
  #22  pc 0x000000000045b87c  /apex/com.android.art/lib64/libart.so (_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...)+120)
  #23  pc 0x000000000045b2e0  /apex/com.android.art/lib64/libart.so (art::Thread::HandleUncaughtExceptions(art::ScopedObjectAccessAlreadyRunnable&)+216)
  #24  pc 0x00000000004594cc  /apex/com.android.art/lib64/libart.so (art::Thread::Destroy()+456)
  #25  pc 0x00000000004587a8  /apex/com.android.art/lib64/libart.so (art::ThreadList::Unregister(art::Thread*)+132)
  #26  pc 0x00000000003da814  /apex/com.android.art/lib64/libart.so (art::Runtime::DetachCurrentThread()+128)
  #27  pc 0x000000000058fccc  /apex/com.android.art/lib64/libart.so (art::JII::DetachCurrentThread(_JavaVM*)+48)
  #28  pc 0x00000000000c71b8  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+984)
  #29  pc 0x00000000000025a8  /system/bin/app_process64 (main+1360)
  #30  pc 0x000000000004a040  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+100)

初步分析

从堆栈追踪来看,崩溃核心触发点是Chrome/WebView核心库libmonochrome_64.so在调用JNI的NewGlobalRef方法时触发系统abort,说明WebView相关的JNI全局引用管理出现严重问题,可能的诱因包括:

  • 内存泄漏:WebView的全局引用未被正确释放,运行时间累积后内存占用持续升高,最终触发OOM或Art虚拟机的引用数量限制
  • 线程操作不当:在Unity后台线程中直接操作WebView对象,或线程退出时未清理WebView相关JNI引用,导致引用失效或冲突
  • WebView版本兼容性:部分设备上的Trichrome Library(版本524912634)存在已知bug,与Unity的WebView集成逻辑冲突

排查建议

  • 检查WebView生命周期管理:确认所有WebView实例使用完毕后都调用销毁方法,释放相关资源(包括JNI引用)
  • 监控内存变化:用Unity Profiler或Android Studio Profiler跟踪内存占用,重点观察WebView模块的内存增长趋势
  • 确保线程安全:所有WebView的创建、销毁、内容加载等操作必须在Android主线程执行,避免跨线程调用
  • 升级WebView依赖:若使用第三方WebView插件,更新到最新稳定版本;测试不同Android版本下的WebView兼容性
  • 捕获详细日志:在游戏中添加WebView相关异常捕获逻辑,或通过Logcat获取崩溃前的详细错误信息,比如OOM警告、JNI错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:05:22