From 7dcbc799eb2fb5792512b71320eafed08deec9ea Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 10 Jan 2025 07:56:17 -0800 Subject: [PATCH] Fix crash for setEventEmitterCallback NoSuchMethodError on API lvl 26 (#48606) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48606 Fixes https://github.com/facebook/react-native/issues/48009 The app is currently crashing on Android API lvl 26 attempting to invoke the method `setEventEmitterCallback` which is defined inside BaseJavaModule. I'm not entirely sure why this is happening only for API lvl 26, but I've verified that by having the method protected, this doesn't happen anymore. The visibility is consistent with the field `mEventEmitterCallback` which is also protected and accessed to codegen. So let's keep them aligned for consistency. Changelog: [Android] [Fixed] - Fix crash for setEventEmitterCallback NoSuchMethodError on API lvl 26 Reviewed By: cipolleschi Differential Revision: D68018506 fbshipit-source-id: 87eda718c9774b584abdf771eaad5833d452a1ea --- packages/react-native/ReactAndroid/api/ReactAndroid.api | 1 + .../src/main/java/com/facebook/react/bridge/BaseJavaModule.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 489dae1d463..8272fd93797 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -608,6 +608,7 @@ public abstract class com/facebook/react/bridge/BaseJavaModule : com/facebook/re protected final fun getReactApplicationContextIfActiveOrWarn ()Lcom/facebook/react/bridge/ReactApplicationContext; public fun initialize ()V public fun invalidate ()V + protected fun setEventEmitterCallback (Lcom/facebook/react/bridge/CxxCallbackImpl;)V } public abstract interface class com/facebook/react/bridge/BridgeReactContext$RCTDeviceEventEmitter : com/facebook/react/bridge/JavaScriptModule { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java index c9b635eb36f..81a9b0c4a2a 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java @@ -134,7 +134,7 @@ public abstract class BaseJavaModule implements NativeModule { } @DoNotStrip - private final void setEventEmitterCallback(CxxCallbackImpl eventEmitterCallback) { + protected void setEventEmitterCallback(CxxCallbackImpl eventEmitterCallback) { mEventEmitterCallback = eventEmitterCallback; } }