question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Fatal Exception: parameter must be a descendant of this view - ReactScrollView.java line 218

See original GitHub issue

Description

I’m having a lot of crashes on Crashlytics related to ReactScrollView.java line 218 on Android. The crashes appears first time on Nov 15, but I didn’t changes on my app.

Happen on Android: 8, 9, 10, 11 and 12. Samsung, Motorola, Google, LGE, OnePlus, etc.

Fatal Exception: java.lang.IllegalArgumentException: parameter must be a descendant of this view
       at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:6272)
       at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:6201)
       at android.widget.ScrollView.isWithinDeltaOfScreen(ScrollView.java:1289)
       at android.widget.ScrollView.onSizeChanged(ScrollView.java:1704)
       at com.facebook.react.views.scroll.ReactScrollView.onSizeChanged(ReactScrollView.java:218)
       at android.view.View.sizeChange(View.java:23088)
       at android.view.View.setFrame(View.java:23040)
       at android.view.View.layout(View.java:22897)
       at android.view.ViewGroup.layout(ViewGroup.java:6389)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateLayout(NativeViewHierarchyManager.java:243)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateLayout(NativeViewHierarchyManager.java:211)
       at com.facebook.react.uimanager.UIViewOperationQueue$UpdateLayoutOperation.execute(UIViewOperationQueue.java:161)
       at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:917)
       at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1028)
       at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:48)
       at com.facebook.react.uimanager.UIViewOperationQueue$2.runGuarded(UIViewOperationQueue.java:986)
       at com.facebook.react.bridge.GuardedRunnable.run(GuardedRunnable.java:31)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:250)
       at android.app.ActivityThread.main(ActivityThread.java:7803)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)

Version

0.63.4

Output of react-native info

System:
    OS: macOS 12.0.1
    CPU: (8) x64 Apple M1
    Memory: 20.08 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.18.1 - /usr/local/bin/node
    Yarn: Not Found
    npm: 6.14.15 - /usr/local/bin/npm
    Watchman: 4.9.0 - /opt/homebrew/bin/watchman
  Managers:
    CocoaPods: 1.11.2 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
    Android SDK:
      API Levels: 28, 29, 30
      Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.3
      System Images: android-30 | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 2020.3 AI-203.7717.56.2031.7784292
    Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_282 - /usr/bin/javac
    Python: 2.7.18 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.13.1 => 16.13.1
    react-native: ~0.63.4 => 0.63.4
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Steps to reproduce

I don’t know, I’m seeing them on Crashlytics.

Snack, code example, screenshot, or link to a repository

No response

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:5
  • Comments:27 (7 by maintainers)

github_iconTop GitHub Comments

5reactions
manuhookcommented, Dec 10, 2021

I can confirm this problem happen because sometimes the Ad displayed is a WebView under the hood, and WebView itself will trigger a focus request.

If you are using the last version of https://github.com/react-native-admob/admob here’s a small patch fixing this bug :

diff --git a/node_modules/@react-native-admob/admob/android/src/main/java/com/rnadmob/admob/ads/banner/RNAdMobBannerView.java b/node_modules/@react-native-admob/admob/android/src/main/java/com/rnadmob/admob/ads/banner/RNAdMobBannerView.java
index 573e3d8..c372d51 100644
--- a/node_modules/@react-native-admob/admob/android/src/main/java/com/rnadmob/admob/ads/banner/RNAdMobBannerView.java
+++ b/node_modules/@react-native-admob/admob/android/src/main/java/com/rnadmob/admob/ads/banner/RNAdMobBannerView.java
@@ -8,6 +8,7 @@ import static com.rnadmob.admob.ads.banner.RNAdMobBannerViewManager.EVENT_APP_EV
 import static com.rnadmob.admob.ads.banner.RNAdMobBannerViewManager.EVENT_SIZE_CHANGE;
 
 import android.content.Context;
+import android.view.ViewGroup;
 
 import com.facebook.react.bridge.Arguments;
 import com.facebook.react.bridge.ReadableArray;
@@ -49,6 +50,7 @@ public class RNAdMobBannerView extends ReactViewGroup implements AppEventListene
             adView.destroy();
         }
         adView = new AdManagerAdView(getContext());
+        adView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
         adView.setAdListener(new AdListener() {
             @Override
             public void onAdLoaded() {
2reactions
julianD77commented, Dec 14, 2021

Thanks so much @manuhook and @RodolfoGS - using the patch described above has prevented this crash for us in our latest release.

There is an update too in the Google Ads SDK forum that might be useful to anyone who isn’t easily able to update or patch their Ads SDK native Android code. It seems disabling the specific autopromotion campaign(s?) setup for backfill may also prevent the crash.

Hello, I have found the cause of the bug. It turns out that the bug started to appear when I created an autopromotion campaign for backfill. It must be a bug.

Thanks for the help and it was hard to find the bug. I found it by chance. As soon as I deleted the campaign, it started showing ads again.

Read more comments on GitHub >

github_iconTop Results From Across the Web

java.lang.IllegalArgumentException: parameter must be a ...
Device 1 log, Fatal Exception: java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.
Read more >
parameter must be a descendant of this view at android. ...
Bugzilla · java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.
Read more >
java.lang.IllegalArgumentException: parameter must be a ...
I have the following exception from phones: java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.
Read more >
ESPHome color state not in sync - Home-Assistant/Core
Anything in the logs that might be useful for us? ... Fatal Exception: parameter must be a descendant of this view - ReactScrollView.java...
Read more >
"parameter must be a descendant of this view" crash using ...
( CoordinatorLayout is used as root layout. ) Our stack traces are: ( Google Play console & Crashlytics ). Fatal Exception: java.lang.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found