Skip to content

NativeModules crashing in Release Builds #18204

Closed
@scottschmitz

Description

@scottschmitz

The app runs perfectly fine in debug mode on Android. However, when I attempt to build a release version the app crashes whenever it attempts to call into the native module.

Environment

nvironment:
OS: macOS High Sierra 10.13.3
Node: 9.5.0
Yarn: 1.3.2
npm: 5.6.0
Watchman: 4.9.0
Xcode: Xcode 9.2 Build version 9C40b
Android Studio: 3.0 AI-171.4443003

Packages: (wanted => installed)
react: 16.2.0 => 16.2.0
react-native: 0.54.0 => 0.54.0

Expected Behavior

Native Module should be available inside of the JavaScript and not crash.

Actual Behavior

App crashes.
com.facebook.react.common.JavascriptException: undefined is not an object (evaluating 'c.NativeModules.ActivityModule.finishActivity'), stack:

Steps to Reproduce

ActivityModule.kt

internal class ActivityModule(reactContext: ReactApplicationContext): ReactContextBaseJavaModule(reactContext) {
  override fun getName(): String {
    return "ActivityModule"
  }

  @ReactMethod
  fun finishActivity() {
    reactApplicationContext?.currentActivity?.finish()
  }
}

MyReactPackage.kt

internal class MyReactPackage: ReactPackage {
  override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
    return listOf(
      ActivityModule(reactContext),
      DimensionsModule(reactContext)
    )
  }

  override fun createViewManagers(reactContext: ReactApplicationContext?): MutableList<com.facebook.react.uimanager.ViewManager<View, ReactShadowNode<*>>> {
    return Collections.emptyList()
  }
}

MainApplication.java

@Override
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
    new MyReactPackage(),
    new MainReactPackage()
  );
}

fake-navigation.js

const finish = () => {
  NativeModules.ActivityModule.finishActivity();
};

Calling the finish() function above crashes the app

E/ReactNativeJS: undefined is not an object (evaluating 'c.NativeModules.ActivityModule.finishActivity')
E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
        Process: com.myapp.app, PID: 15496
        com.facebook.react.common.JavascriptException: undefined is not an object (evaluating 'c.NativeModules.ActivityModule.finishActivity')

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions