Javascript 在react native中调用Appregistry.runApplication时出错

Javascript 在react native中调用Appregistry.runApplication时出错,javascript,android,reactjs,react-native,Javascript,Android,Reactjs,React Native,我正在尝试在android emulator上运行react本机应用程序,但遇到如下错误 调用Appregistry.runApplication时出错 AVD:'Nexus_5X_API_23(AVD)-6.0 操作系统:Windows 10 请对此提供帮助?据我所知,此错误出现在以下情况: 1) 您没有在正确的位置运行打包程序,即,您点击了错误的文件夹来运行react-native packager,因此只需导航到项目目录并运行react-native start 2) 当您对Appreg

我正在尝试在android emulator上运行react本机应用程序,但遇到如下错误

调用Appregistry.runApplication时出错

AVD:'Nexus_5X_API_23(AVD)-6.0 操作系统:Windows 10


请对此提供帮助?

据我所知,此错误出现在以下情况:


1) 您没有在正确的位置运行打包程序,即,您点击了错误的文件夹来运行react-native packager,因此只需导航到项目目录并运行
react-native start

2) 当您对Appregistry模块编写错误代码时

3) 关闭所有Xcode、打包机、模拟器等,然后重新启动

4) 从这个错误中,我想到的一件事是模块的名称

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

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

[[RCTRootView alloc] initWithBundleUrl:...
                            moduleName:@"AppName"
                         launchOptions:...
5) 因为我们使用的是react的组件,所以我们需要给类名的第一个字符加上大写

6) 让我们看看
index.android.js
index.ios.js


干杯:)

我也遇到了同样的问题,通过将本地计算机设置为android emulator中的调试服务器,我可以解决这个问题。打开android emulator,
Command+M
打开菜单,然后单击“开发设置”,然后单击“调试服务器主机和端口”,并将其设置为127.0.0.1:8081。然后从项目目录中运行
react native run android
。我希望这能有所帮助。

几天前,我遇到的问题与您目前遇到的问题几乎相同。对我来说,这是一个真正的设备

根据我所有的研究,对我有效的解决方案如下:

当您通过键入
react native run android
启动应用程序时,会出现错误

因此,请访问包含“adb.exe”的目录(对我来说是C:\Users\username\AppData\Local\Android\Sdk\platform tools\)

从这里打开一个终端。和类型
adb反向tcp:8081 tcp:8081

然后,通过在手机上重新加载应用程序,它应该可以工作

我希望这对你有帮助!!(如果不是的话,我感到羞耻)

干杯;)

编辑:

我找到了一个更方便的办法来解决这个问题

当您启动“react native run android”时,您可能会看到一条评论:“adb不被识别为内部或外部命令…”

好的,您可以添加一个环境变量,指向adb.exe,而不是手动使用adb命令

只需进入“控制面板”>“系统和安全”>“系统”>“高级系统设置”

从这里,点击“环境变量”。在“系统变量”部分中搜索“路径”变量。点击它并按下“编辑”按钮

在这里,您可以向该变量添加新路径。只需单击“新建”按钮并写入adb.exe路径。例如C:\Users\username\AppData\Local\Android\Sdk\platform tools\

(对于最旧版本的Windows,您必须在内容中添加“C:\Users\username\AppData\Local\Android\Sdk\platform tools\”

就是这样,现在
adb reverse tcp:8081 tcp:8081
命令将在构建时自动运行


希望这会对你更有帮助

最后,我让它工作了。我创建了一个新的AVD

Nexus6 API 23


.之前我尝试使用Nexus5x API 23。谢谢大家。

我也遇到了同样的问题。McAffee位于端口8081和block packager上。 我的解决方案:

react-native start --port your_port
在android emulator中,Command+M显示开发菜单,单击“开发设置”,然后单击“调试服务器主机和端口”,并将其设置为您的_ip:your_端口

然后


我遇到了完全相同的问题(因为这是一个非常普通的消息),但问题不同。在我的例子中,这是一个新创建的项目,模拟器不工作,但一个真正的设备工作了

我的问题是,默认情况下,观察者
inotify
可以在Linux上处理的限制,Linux是一个Linux内核子系统,它可以扩展文件系统,以注意文件系统的更改,并将这些更改报告给应用程序,它被广泛使用,包括android studio和react native;当我试图执行
react native run android
时,我的系统上已经分配了所有的观察者,导致进程在同一条消息上失败

要更改inotify可以处理的最大观察者数量,您需要编辑文件
sysctl.conf
,该文件通常位于
/etc/sysctl.conf
/etc/sysctl.d/custom_name.conf
,并添加以下行:

 fs.inotify.max_user_watches = 5242881

写入文件后,需要执行sysctl-p filename.conf,其中'filename.conf'是保存sysctl的.conf文件的路径和名称。一旦应用了更改,一切都将按预期运行。

我也遇到了同样的问题,我的修复程序将运行

$ react-native start
在后台运行

$ react-native run-android

我也有同样的问题。我解决了这个问题,在真正的设备上运行

正如绝地先生所说,麦卡菲封锁了8081端口。因此,我修改了项目文件夹>\node\u modules\react native\local cli\runAndroid\runAndroid.js文件的函数

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

并在上启动了应用程序

      react-native start --port 3040

确保端口8081可用。在我的例子中,我的一个服务正在端口8081(tomcat webserver)上运行。

对于我来说,我只需要将平台工具添加到Path环境变量中,以便react native可以启动adb服务器

我得到了:

'adb' is not recognized as an internal tool or program
为了解决这个问题,我在我的
Path
环境变量中添加了以下内容

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

然后运行
react native run android
成功了

我知道这个问题已经给出了很多答案,但我认为添加我的解决方案是值得的,希望这能帮助其他人

在我的例子中,问题来自我的虚拟机,虽然我没有调查,但通过创建一个新的虚拟设备,应用程序运行顺利,没有问题

因此,只需创建一个新的虚拟设备即可。:)

在我的情况下(在
'adb' is not recognized as an internal tool or program
C:\Users\<Username>\AppData\Local\Adnroid\sdk\platform-tools
    "platforms": [
      "ios",
      "android",
      "web"
    ],