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

Android11设备Unity游戏崩溃:ViewGroup.offsetRectBetweenParentAndChild异常

Unity Android 11下AdMob横幅广告触发崩溃的修复方案

环境信息

  • Unity版本:2020.3.34f1(后端采用IL2CPP)
  • 崩溃集中系统:Android 11
  • 依赖库版本:AdMob 7.0.2、Firebase 9.0.0

崩溃堆栈信息

java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5986)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5905)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:3290)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2900)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2831)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2384)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1411)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6789)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6747)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

问题定位

已确认该崩溃由AdMob横幅广告加载后的视图绘制逻辑触发,核心原因是scrollToRectOrFocus方法调用时,传入的视图并非当前父视图的后代,触发系统层面的参数校验异常。

修复步骤

  1. 找到Unity项目中AdMob插件的Banner.java文件,路径通常为Assets/Plugins/Android/com/google/unity/ads/Banner.java
  2. 定位到onAdLoaded方法内调用scrollToRectOrFocus的代码位置
  3. 对该方法调用添加异常捕获逻辑,避免未处理的IllegalArgumentException导致应用崩溃,示例修改如下:
    // 原代码
    viewRoot.scrollToRectOrFocus(rect, true);
    
    // 修改后代码
    try {
        viewRoot.scrollToRectOrFocus(rect, true);
    } catch (IllegalArgumentException e) {
        // 捕获异常并打印日志,防止崩溃扩散
        e.printStackTrace();
    }
    
  4. 重新导出或构建Android安装包,在Android 11设备上测试验证崩溃是否解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:15:33