我正在尝试在Android模拟器上运行react-native应用程序,但我收到类似
的错误调用Appregistry.runApplication
时出错
AVD:' Nexus_5X_API_23(AVD) - 6.0 操作系统:Windows 10
请帮帮忙吗?
答案 0 :(得分:35)
我几天前遇到了几乎相同的问题。对我来说这是一个真实的设备。
从我的所有研究中,对我有用的解决方案如下:
当您键入react-native run-android
启动应用时,会出现错误。
所以,到达包含“adb.exe”的目录(对我来说是C:\ Users \ username \ AppData \ Local \ Android \ Sdk \ platform-tools \)
从这里打开一个终端。然后输入adb reverse 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
命令将在构建时自动运行。
希望这对你更有帮助!
答案 1 :(得分:23)
我有同样的问题,我的解决方法是运行
$ react-native start
在后台然后运行
$ react-native run-android
答案 2 :(得分:17)
据我说这个错误来自:
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
干杯:)
答案 3 :(得分:2)
我有同样的问题。它发生在McAffee在8081端口和封锁器上。 我的解决方案:
react-native start --port your_port
在android模拟器中,Command + M显示开发菜单,点击"开发设置"然后单击"调试服务器主机和端口"并将其设置为your_ip:your_port。
然后
react-native run-android
答案 4 :(得分:2)
在我的情况下(当然,经过我在这里和其他地方找到的所有内容之后),我意识到我已经在手机上关闭了我的WiFi ......不能那样工作!希望它可以帮助某人
答案 5 :(得分:1)
我有同样的问题,并且能够通过将我的本地计算机设置为android模拟器中的调试服务器来解决它。打开android模拟器,Command + M
打开一个菜单,然后单击“开发设置”,然后单击“调试服务器主机和端口”并将其设置为127.0.0.1:8081。然后从项目目录中运行react-native run-android
。我希望这会有所帮助。
答案 6 :(得分:1)
最后,我得到了它。我创建了一个新的AVD
Nexus6 API 23
。早先我尝试使用 Nexus5x API 23 。谢谢所有
答案 7 :(得分:1)
确保端口8081可用。在我的情况下,我的一个服务是在端口8081(tomcat webserver)上运行。
答案 8 :(得分:0)
我遇到了完全相同的问题(因为这是一个非常通用的消息),但问题不同。在我的情况下,这是一个新创建的项目,模拟器不起作用,但真正的设备确实有效。
我的问题是观察者inotify
在默认情况下可以处理的限制,这是一个Linux内核子系统,用于扩展文件系统以注意文件系统的更改,并将这些更改报告给应用程序及其&# 39;广泛使用,包括android studio和反应原生;当我尝试执行react-native run-android
时,所有观察者都被分配到我的系统上,导致进程在同一消息上失败。
要更改inotify可以处理的观看者的最大数量,您需要编辑文件sysctl.conf
,该文件通常位于/etc/sysctl.conf
或/etc/sysctl.d/custom_name.conf
,并添加以下行:< / p>
fs.inotify.max_user_watches = 5242881
编写完文件后,您需要执行sysctl -p filename.conf
其中&#39; filename.conf&#39;是保存sysctl的.conf文件的路径和名称。一旦应用了更改,一切都应该按预期工作。
答案 9 :(得分:0)
我也有同样的问题。我解决了在真实设备上运行的问题。
正如Jedi先生所说,McAffee阻止了端口8081.所以我修改了Project-Folder&gt; \ node_modules \ react-native \ local-cli \ runAndroid \ runAndroid.js文件的功能
function tryRunAdbReverse(device) {
try {
const adbPath = getAdbPath();
const adbArgs = ['reverse', 'tcp:8081', 'tcp:8081'];
到
function tryRunAdbReverse(device) {
try {
const adbPath = getAdbPath();
const adbArgs = ['reverse', 'tcp:8081', 'tcp:3040'];
并在
上启动了该应用程序 react-native start --port 3040
答案 10 :(得分:0)
对我来说,我只需要将平台工具添加到我的Path环境变量中,以便react-native可以启动adb服务器。
我得到了:
'adb' is not recognized as an internal tool or program
要解决此问题,我将以下内容添加到我的Path
环境变量中。
C:\Users\<Username>\AppData\Local\Adnroid\sdk\platform-tools
然后运行react-native run-android
工作了!
答案 11 :(得分:0)
我知道这个问题得到了很多答案但是,我认为值得添加我的解决方案,希望这可以帮助那些人。
在我的情况下,问题来自我的虚拟机,虽然我没有调查但是通过创建新的虚拟设备,应用程序运行顺利,没有任何问题。
所以只需创建一个新的虚拟设备。 :)
答案 12 :(得分:0)
我为注册表错误搜索了一个星期的解决方案,并尝试了所有这些解决方案,而所缺少的只是我需要在expo下添加我的app.json文件:
"platforms": [
"ios",
"android",
"web"
],
因此,如果其他所有方法均失败,请尝试将其添加到您的博览会中。