title: React Native app crash on start - Android
body: <p><a href="https://i.stack.imgur.com/u6E1W.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/u6E1W.jpg" alt="enter image description here"></a>I have a live react native app which was working fine before I integrate firebase cloud messaging. After integration it started crashing app. After that I removed all firebase integration from app and it still kept on crashing everytime I run app on my Android device. It always crash on start on both debug as well as release version of the app.</p>
  
  <p>Here is the logcat:</p>
  
  <pre><code>2019-11-27 18:16:25.292 24260-24280/? E/ReactNativeJS: TypeError: undefined is not an object (evaluating 'new f.ListView.DataSource')
  2019-11-27 18:16:25.297 24260-24280/? E/ReactNativeJS: Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication)
  
      --------- beginning of crash
  2019-11-27 18:16:25.299 24260-24281/? E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
      Process: com.telehealthcare, PID: 24260
      com.facebook.react.common.JavascriptException: TypeError: undefined is not an object (evaluating 'new f.ListView.DataSource'), stack:
      &lt;unknown&gt;@881:701
      v@2:1474
      &lt;unknown&gt;@6:347
      v@2:1474
      d@2:876
      global code@1026:4
  
          at com.facebook.react.modules.core.ExceptionsManagerModule.reportException(ExceptionsManagerModule.java:71)
          at java.lang.reflect.Method.invoke(Native Method)
          at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:371)
          at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:150)
          at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
          at android.os.Handler.handleCallback(Handler.java:789)
          at android.os.Handler.dispatchMessage(Handler.java:98)
          at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:26)
          at android.os.Looper.loop(Looper.java:164)
          at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:225)
          at java.lang.Thread.run(Thread.java:764)
  </code></pre>
  
  <p>Project Level build file:</p>
  
  <p>// Top-level build file where you can add configuration options common to all sub-projects/modules.</p>
  
  <pre><code>buildscript {
      ext {
          buildToolsVersion = "29.0.0"
          minSdkVersion = 21
          compileSdkVersion = 29
          targetSdkVersion = 29
          supportLibVersion = "27.1.1"
      }
      repositories {
          google()
          jcenter()
          maven { // &lt;---- Add this block
              url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
          }
      }
      dependencies {
  //        classpath 'com.android.tools.build:gradle:3.1.4'
          classpath 'com.android.tools.build:gradle:3.3.0'
          classpath 'com.google.gms:google-services:4.3.2'
  
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
  
  allprojects {
      repositories {
          mavenLocal()
          google()
          jcenter()
          maven {
              // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
              url "$rootDir/../node_modules/react-native/android"
          }
          maven { // &lt;---- Add this block
              url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
          }
      }
  }
  
  
  task wrapper(type: Wrapper) {
      gradleVersion = '4.4'
      distributionUrl = distributionUrl.replace("bin", "all")
  }
  </code></pre>
  
  <p>App Level build.gradle:</p>
  
  <pre><code>apply plugin: "com.android.application"
  //apply plugin: 'com.google.gms.google-services'
  //com.google.gms.googleservices.GoogleServicesPlugin
  import com.android.build.OutputFile
  
  project.ext.react = [
      entryFile: "index.js",
      enableHermes: false,
  //    bundleAssetName: "app.bundle",
  ]
  
  apply from: "../../node_modules/react-native/react.gradle"
  
  def enableSeparateBuildPerCPUArchitecture = false
  
  def enableProguardInReleaseBuilds = false
  
  def jscFlavor = 'org.webkit:android-jsc:+'
  
  def enableHermes = project.ext.react.get("enableHermes", false);
  
  android {
      compileSdkVersion rootProject.ext.compileSdkVersion
      buildToolsVersion '29.0.0'
  
      defaultConfig {
          applicationId "com.telehealcare"
          minSdkVersion 21
          targetSdkVersion 29
          versionCode 9
          versionName "1.0"
          multiDexEnabled true
          testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  //        ndk {
  //            abiFilters "armeabi-v7a", "x86"
  //        }
      }
      splits {
          abi {
              reset()
              enable enableSeparateBuildPerCPUArchitecture
              universalApk false  // If true, also generate a universal APK
  //            include "armeabi-v7a", "x86"
              include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
          }
      }
  
      buildTypes {
          debug {
              debuggable true
          }
          release {
              multiDexKeepFile file('multidex-config.txt')
              minifyEnabled enableProguardInReleaseBuilds
              proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
              signingConfig signingConfigs.release
          }
      }
      compileOptions {
          sourceCompatibility JavaVersion.VERSION_1_8
          targetCompatibility JavaVersion.VERSION_1_8
      }
  
      applicationVariants.all { variant -&gt;
          variant.outputs.each { output -&gt;
  //            def versionCodes = ["armeabi-v7a":1, "x86":2]
              def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
              def abi = output.getFilter(OutputFile.ABI)
              if (abi != null) {  // null for the universal-debug, universal-release variants
                  output.versionCodeOverride =
                          versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
              }
          }
      }
  
      packagingOptions {
          pickFirst '**/armeabi-v7a/libc++_shared.so'
          pickFirst '**/x86/libc++_shared.so'
          pickFirst '**/arm64-v8a/libc++_shared.so'
          pickFirst '**/x86_64/libc++_shared.so'
          pickFirst '**/x86/libjsc.so'
          pickFirst '**/armeabi-v7a/libjsc.so'
      }
  }
  
  
  dependencies {
      implementation project(':react-native-cardview')
      implementation fileTree(dir: "libs", include: ["*.jar"])
      implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
      implementation "com.facebook.react:react-native:+"  // From node_modules
      implementation 'com.facebook.fresco:animated-gif:1.10.0'
      implementation project(':react-native-contacts')
      implementation(project(':react-native-jitsi-meet'))
  
      // Jitsi Meet
      implementation ('org.jitsi.react:jitsi-meet-sdk:2.+') { transitive = true }
  
  
      implementation fileTree(dir: 'libs', include: ['*.jar'])
      implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
      implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
      testImplementation 'junit:junit:4.12'
      androidTestImplementation 'androidx.test:runner:1.2.0'
      androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
      implementation 'com.android.support:multidex:1.0.3'
  
  
      if (enableHermes) {
          def hermesPath = "../../node_modules/hermes-engine/android/";
          debugImplementation files(hermesPath + "hermes-debug.aar")
          releaseImplementation files(hermesPath + "hermes-release.aar")
      } else {
          implementation jscFlavor
      }
  //    implementation "com.google.android.gms:play-services-base:15.0.1"
  //    implementation "com.google.firebase:firebase-core:15.0.0"
  //    implementation "com.google.firebase:firebase-auth:17.0.0"
  //    implementation 'com.google.firebase:firebase-messaging:20.0.0'
  
  //     Glide
  //    implementation("com.github.bumptech.glide:glide:4.7.1") {
  //        exclude group: "com.android.support", module: "glide"
  //    }
  //    implementation("com.github.bumptech.glide:annotations:4.7.1") {
  //        exclude group: "com.android.support", module: "annotations"
  //    }
  }
  
  // Run this once to be able to run the application with BUCK
  // puts all compile dependencies into folder libs for BUCK to use
  task copyDownloadableDepsToLibs(type: Copy) {
      from configurations.compile
      into 'libs'
  }
  
  configurations.all {
      resolutionStrategy.eachDependency { DependencyResolveDetails details -&gt;
          def requested = details.requested
          if (requested.group == "androidx") {
              if (!requested.name.startsWith("multidex")) {
                  details.useVersion "${targetSdk}.+"
              }
          }
      }
  }
  //apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
  </code></pre>
  
  <p>package.json file:</p>
  
  <pre><code>{
    "name": "TeleHealCare",
    "version": "0.0.1",
    "private": true,
    "scripts": {
      "start": "node node_modules/react-native/local-cli/cli.js start",
      "test": "jest",
      "android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res &amp;&amp; react-native run-android",
      "ios": "react-native run-ios"
    },
    "dependencies": {
      "moment": "^2.24.0",
      "react": "16.6.3",
      "react-moment": "^0.9.2",
      "react-native": "^0.61.4",
      "react-native-animatable": "^1.3.0",
      "react-native-calendars": "^1.21.0",
      "react-native-card-stack-swiper": "^1.1.0",
      "react-native-cardview": "^2.0.2",
      "react-native-circular-action-menu": "^0.5.0",
      "react-native-contacts": "^2.2.4",
      "react-native-datepicker-dialog": "0.0.9",
      "react-native-elements": "^1.0.0-beta7",
      "react-native-expandable-section-list": "^1.0.7",
      "react-native-jitsi-meet": "^1.2.0",
      "react-native-loader": "^1.2.1",
      "react-native-material-dropdown": "^0.11.1",
      "react-native-material-textfield": "^0.12.0",
      "react-native-modal-datetime-picker": "^6.0.0",
      "react-native-parallax-scroll-view": "^0.21.3",
      "react-native-swipeout": "^2.3.6",
      "react-native-switch": "^1.5.0",
      "react-native-tab-view": "^1.3.1",
      "react-native-table-component": "^1.2.0",
      "react-native-vector-icons": "^6.4.2",
      "react-navigation": "^2.18.2",
      "toggle-switch-react-native": "^2.0.2",
      "url-search-params": "^1.1.0"
    },
    "devDependencies": {
      "babel-jest": "23.6.0",
      "jest": "23.6.0",
      "metro-react-native-babel-preset": "0.51.1",
      "react-test-renderer": "16.6.3"
    },
    "jest": {
      "preset": "react-native"
    }
  }
  </code></pre>
  
  <p>MainApplication.java:</p>
  
  <pre><code>public class MainApplication extends MultiDexApplication implements ReactApplication {
  
      private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
          @Override
          public boolean getUseDeveloperSupport() {
              return BuildConfig.DEBUG;
          }
  
          @Override
          protected List&lt;ReactPackage&gt; getPackages() {
  
              return Arrays.&lt;ReactPackage&gt;asList(
                      new MainReactPackage(),
                      new JitsiMeetPackage(),
                      new RNCardViewPackage(),
                      new ReactNativeContacts()
              );
          }
  
          @Override
          protected String getJSMainModuleName() {
              return "index";
          }
  
      };
  
      @Override
      public ReactNativeHost getReactNativeHost() {
          return mReactNativeHost;
      }
  
      @Override
      public void onCreate() {
          super.onCreate();
          SoLoader.init(this, /* native exopackage */ false);
      }
  }
  </code></pre>
  
  <p>MainActivity.java:</p>
  
  <pre><code>public class MainActivity extends ReactActivity {
      private static MainActivity mainActivity;
  
      @Override
      protected String getMainComponentName() {
          return "TeleHealCare";
      }
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          mainActivity = this;
      }
  
      public static void callJitsi(){
          mainActivity.startActivity(new Intent(mainActivity,JitsiActivity.class));
      }
  }
  </code></pre>
  
  <p>Please do let me know what is going wrong here. Any help will be appreciate!</p>