Skip to content

Error Loading React Native Module in Brownfield Android App Using @react-navigation #424

@camilo5972

Description

@camilo5972

Environment

Mac => 15.5 (24F74)
npm => 10.9.0
node => v18.20.4
Java => openjdk 17.0.12 2024-07-16 LTS
OpenJDK Runtime Environment Microsoft-9911841 (build 17.0.12+7-LTS)
OpenJDK 64-Bit Server VM Microsoft-9911841 (build 17.0.12+7-LTS, mixed mode, sharing)
Ruby => ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin24]
Python => Python 3.10.0

package.json:

"scripts": {
    "start": "rnef start",
    "lint": "eslint .",
    "test": "jest",
    "ios": "rnef run:ios",
    "android": "rnef run:android",
    "package:ios": "rnef package:ios --scheme TESTRNSDKReact --configuration Release",
    "package:android": "rnef package:aar --variant Release --module-name rnsdkbrownfield && rnef publish-local:aar --module-name rnsdkbrownfield"
},
"dependencies": {
    "@callstack/react-native-brownfield": "^1.1.0",
    "@react-navigation/native": "^7.1.14",
    "@react-navigation/native-stack": "^7.3.21",
    "@react-navigation/stack": "^7.4.2",
    "@rnef/plugin-brownfield-android": "^0.7.26",
    "react": "19.0.0",
    "react-native": "0.79.1",
    "react-native-gesture-handler": "^2.27.1",
    "react-native-safe-area-context": "^5.5.1",
    "react-native-screens": "^4.11.1"
  },
  "devDependencies": {
    "@babel/core": "^7.25.2",
    "@babel/preset-env": "^7.25.3",
    "@babel/runtime": "^7.25.0",
    "@expo/fingerprint": "^0.11.6",
    "@react-native/babel-preset": "0.79.1",
    "@react-native/eslint-config": "0.79.1",
    "@react-native/metro-config": "0.79.1",
    "@react-native/typescript-config": "0.79.1",
    "@rnef/cli": "^0.7.26",
    "@rnef/platform-android": "^0.7.26",
    "@rnef/platform-ios": "^0.7.26",
    "@rnef/plugin-brownfield-ios": "^0.7.26",
    "@rnef/plugin-metro": "^0.7.26",
    "@rnef/welcome-screen": "^0.7.26",
    "@types/react": "^19.0.0",
    "@types/react-test-renderer": "^19.0.0",
    "babel-jest": "^29.6.3",
    "eslint": "^8.19.0",
    "jest": "^29.6.3",
    "prettier": "2.8.8",
    "react-test-renderer": "19.0.0",
    "typescript": "5.0.4"
  }

Description

I'm using the @react-navigation library to handle navigation in my application. Everything works fine when I run npm run android and test the app in the simulator.
However, the issue arises when I try to export my React Native app as an .aar file and integrate it into a native Android application. I've followed the official documentation to set this up, but when I launch the native Android app and attempt to load the React Native module, I encounter an error:

----- class 'Lcom/swmansion/rnscreens/NativeProxy;' cl=0x136c2f30 -----
                                                                                                      objectSize=236 (224 from super)
                                                                                                      access=0x0000.0011
                                                                                                      super='java.lang.Class<java.lang.Object>' (cl=0x0)
                                                                                                      vtable (1 entries, 11 in super):
                                                                                                         0: void com.swmansion.rnscreens.NativeProxy.nativeAddMutationsListener(com.facebook.react.fabric.FabricUIManager)
                                                                                                      direct methods (2 entries):
                                                                                                         0: void com.swmansion.rnscreens.NativeProxy.<clinit>()
                                                                                                         1: void com.swmansion.rnscreens.NativeProxy.<init>()
                                                                                                      static fields (1 entries):
                                                                                                         0: com.swmansion.rnscreens.NativeProxy$Companion com.swmansion.rnscreens.NativeProxy.Companion
2025-07-06 11:13:53.954  2400-5057  p.shell_android         com.test.shell_android                E  Failed to register native method com.swmansion.rnscreens.NativeProxy.initHybrid()Lcom/facebook/jni/HybridData; in /data/app/~~_qHARhTc-xkpcizdaCbeCQ==/com.test.shell_android-r1RAapFsqY6_DDeEvDEIeQ==/base.apk!classes5.dex
2025-07-06 11:13:53.974  2400-5057  log                     com.test.shell_android                E  error java.lang.NoSuchMethodError: no static or non-static method "Lcom/swmansion/rnscreens/NativeProxy;.initHybrid()Lcom/facebook/jni/HybridData;"
                                                                                                    	at java.lang.Runtime.nativeLoad(Native Method)
                                                                                                    	at java.lang.Runtime.nativeLoad(Runtime.java:1126)
                                                                                                    	at java.lang.Runtime.loadLibrary0(Runtime.java:1080)
                                                                                                    	at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
                                                                                                    	at java.lang.System.loadLibrary(System.java:1661)
                                                                                                    	at com.swmansion.rnscreens.ScreensModule.<init>(ScreensModule.kt:24)
                                                                                                    	at com.swmansion.rnscreens.RNScreensPackage.getModule(RNScreensPackage.kt:56)
                                                                                                    	at com.facebook.react.BaseReactPackage$ModuleHolderProvider.get(BaseReactPackage.kt:129)
                                                                                                    	at com.facebook.react.BaseReactPackage$ModuleHolderProvider.get(BaseReactPackage.kt:125)
                                                                                                    	at com.facebook.react.bridge.ModuleHolder.create(ModuleHolder.java:186)
                                                                                                    	at com.facebook.react.bridge.ModuleHolder.getModule(ModuleHolder.java:151)
                                                                                                    	at com.facebook.react.bridge.JavaModuleWrapper.getModule(JavaModuleWrapper.java:62)
                                                                                                    	at com.facebook.react.bridge.JavaModuleWrapper.getCo
2025-07-06 11:13:53.974  2400-5057  p.shell_android         com.test.shell_android                A  java_vm_ext.cc:591] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.NoSuchMethodError: no static or non-static method "Lcom/swmansion/rnscreens/NativeProxy;.initHybrid()Lcom/facebook/jni/HybridData;"
                                                                                                    java_vm_ext.cc:591] (Throwable with no stack trace)
                                                                                                    java_vm_ext.cc:591] 
                                                                                                    java_vm_ext.cc:591]     in call to NewGlobalRef
                                                                                                    java_vm_ext.cc:591]     from java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class)

I'm not sure whether the library is incompatible with a Brownfield architecture or if I'm missing some specific configuration. I would really appreciate your support in resolving this issue. This issue only occurs on Android; I don't experience this problem on iOS.

Reproducible Demo

  • Create a new project using: npm create @rnef/app enterprise
  • Create a basic navigation flow using this libraries:
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
...
<GestureHandlerRootView style={{ flex: 1 }}>
      <SafeAreaProvider>
        <NavigationContainer>
          <Stack.Navigator
            initialRouteName="Home"
...
  • Run npm start
  • Run npm run package:android
  • Import the .aar into the native android app
  • Open the app and navigate to the react native library

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions