Error calling Appregistry.runApplication in react-native

JavascriptAndroidReactjsReact Native

Javascript Problem Overview


I am trying to run a react-native app on android emulator, but I am getting an error like

> Error calling Appregistry.runApplication

AVD: 'Nexus_5X_API_23(AVD) - 6.0 OS:Windows 10

enter image description here

Please help on this?

Javascript Solutions


Solution 1 - Javascript

I had almost the same problem you currently have a few days ago. For me it was a real device.

From all my research, the solution that worked for me is the following :

When you launch your app by typing react-native run-android, the error appears.

So, reach your directory containing "adb.exe" ( for me it was C:\Users\username\AppData\Local\Android\Sdk\platform-tools\ )

open a terminal from here. And type adb reverse tcp:8081 tcp:8081

Then, by reloading the app on the phone, it should work.

I hope this will help you !! ( if not, shame on me )

Cheers ;)

EDIT :

I've find a more convenient solution to solve this problem.

When you launch your "react-native run-android" you might have a comment saying "adb is not recognized as internal or external command..."

Well, instead of manually using the adb command, you can add an environment variable leading to the adb.exe.

Just get to the "Control Panel" > "System and Security" > "System" > "Advanced System Settings".

From here, click on "Environment Variables". Search for the "Path" variable in the "System Variables" section. Click on it and press the "Edit" button.

There you can add a new path to this variable. Just click the "New" button and write the adb.exe path. For exemple C:\Users\username\AppData\Local\Android\Sdk\platform-tools\

(For the oldest versions of Windows, you'll have to add ";C:\Users\username\AppData\Local\Android\Sdk\platform-tools" to the content.)

This is it, now the adb reverse tcp:8081 tcp:8081 command will be ran automatically upon building.

Hope this will even more helps you !

Solution 2 - Javascript

I had the same issue, my fix was to run

$ react-native start

in the background then run

$ react-native run-android

Solution 3 - Javascript

According to me this error comes when:

  1. You did not run the packager at the right place i.e, you hit the wrong folder to run react-native packager so just navigate to your project's directory and run react-native start.

  2. when you code something wrong with respect to Appregistry module.

  3. Shutdown everything Xcode, packager, simulator etc and restart it again.

  4. From the error one thing strikes in my mind is the name of the module

    AppRegistry.registerComponent('AppName', () => componentName)

    matches with the @"AppName" on your AppDelegate.m on the call for

    [[RCTRootView alloc] initWithBundleUrl:... moduleName:@"AppName" launchOptions:...

  5. As we are using react's component so we need to give the first character of our class name with caps on.

  6. Let's see what's wrong in index.android.js and index.ios.js

Cheers :)

Solution 4 - Javascript

Finally, I got it working.I created a new AVD

> Nexus6 API 23

.Earlier I was trying with Nexus5x API 23.Thanks all

Solution 5 - Javascript

I had same problem. It occurs that McAffee was on port 8081 and block packager. My solution:

react-native start --port your_port

In android emulator, Command + M show dev menu, click on "Dev Settings" and then click on "Debug server host and port" and set it to your_ip:your_port.

Then

react-native run-android

Solution 6 - Javascript

In my case (after, of course, going through everything I could find here and elsewhere), I realized I had turned my WiFi off on my phone...doesn't work like that! Hope it helps someone

Solution 7 - Javascript

I had the same issue and was able to resolve it by setting my local computer as the debug server in the android emulator. Open the android emulator, Command + M to bring up a menu, then click on "Dev Settings" and then click on "Debug server host and port" and set it to 127.0.0.1:8081. Then from within you project directory run react-native run-android. I hope this helps.

Solution 8 - Javascript

Make sure that port 8081 is available. In my case One of my services is running on Port 8081(tomcat webserver).

Solution 9 - Javascript

I was having the exact same issue (because this is a very generic message) but the problem was different. In my case it was a newly created project, the emulator wasn't working but a real device did work.

My problem was the limit of watchers inotify can handle on Linux by default, which is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes back to applications and it's widely used, including android studio and react native; by the time I was trying to execute react-native run-android all of the watchers were allocated on my system, causing the process to fail on this same message.

To change the max amount of watchers inotify can handle, you need to edit the file sysctl.conf, which will be usually located at /etc/sysctl.conf or /etc/sysctl.d/custom_name.conf and add the following line:

 fs.inotify.max_user_watches = 5242881

After writing the file you need to execute sysctl -p filename.conf where 'filename.conf' is the path and name wherever you saved the .conf file for sysctl. Once changes are applied everything should work as expected.

Solution 10 - Javascript

I too had the same problem. I solved the problem to run on real device.

As told by Mr Jedi, McAffee blocked the port 8081. So I have modified Project-Folder>\node_modules\react-native\local-cli\runAndroid\runAndroid.js file's function from

function tryRunAdbReverse(device) {
   try {
     const adbPath = getAdbPath();
     const adbArgs = ['reverse', 'tcp:8081', 'tcp:8081'];

to

function tryRunAdbReverse(device) {
   try {
     const adbPath = getAdbPath();
     const adbArgs = ['reverse', 'tcp:8081', 'tcp:3040'];

and started the application on

      react-native start --port 3040






Solution 11 - Javascript

For me I just needed to add the platform tools to my Path environment variable so that react-native can start the adb server.

I was getting:

'adb' is not recognized as an internal tool or program

To fix this I added the following to my Path environment variable.

C:\Users\<Username>\AppData\Local\Adnroid\sdk\platform-tools

Then running react-native run-android worked!

Solution 12 - Javascript

I know this question has been given so many answers but, I think it's worth it adding my solution, hope this helps someone out there.

In my case the problem was from my virtual machine, although I didn't investigate but by creating a new virtual device the app ran smoothly with no problem.

So just create a new virtual device. :)

Solution 13 - Javascript

I searched for a solution for my registry error for a week and tried all these solutions, and all that was missing was I needed to add in my app.json file under expo:

    "platforms": [
      "ios",
      "android",
      "web"
    ],

So, if all else fails, try to add this into your expo.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGopeshView Question on Stackoverflow
Solution 1 - JavascriptSwaingeView Answer on Stackoverflow
Solution 2 - JavascriptdudasausView Answer on Stackoverflow
Solution 3 - JavascriptCodesinghView Answer on Stackoverflow
Solution 4 - JavascriptGopeshView Answer on Stackoverflow
Solution 5 - JavascriptMr JediView Answer on Stackoverflow
Solution 6 - JavascriptkwishnuView Answer on Stackoverflow
Solution 7 - Javascriptsjc42002View Answer on Stackoverflow
Solution 8 - JavascriptVinoView Answer on Stackoverflow
Solution 9 - JavascriptJuan Carlos Alpizar ChinchillaView Answer on Stackoverflow
Solution 10 - JavascriptRamesh KView Answer on Stackoverflow
Solution 11 - JavascriptChaseView Answer on Stackoverflow
Solution 12 - JavascriptDaniel BardeView Answer on Stackoverflow
Solution 13 - JavascriptRandy BaileyView Answer on Stackoverflow