React-native: 无法连接到安卓模拟器和真实设备上的开发服务器

创建于 2017-08-06  ·  139评论  ·  资料来源: facebook/react-native

在您阅读完第一部分之前,请不要删除此模板。

这是错误报告吗?

这是我在系统上运行正常的 Awesome Project 时面临的问题

如果您回答“是”:我们预计您将花费大约 30 分钟来生成高质量的错误报告。 虽然这看起来很多,但关注问题有助于我们更快地解决问题。 对于错误报告,需要填写此模板的其余部分,否则问题将被关闭。 如果你回答“否”:我们专门使用 GitHub 问题来跟踪 React Native 中的错误。 如果您正在寻求帮助,http://facebook.github.io/react-native/support.html 上的社区页面列出了可以帮助您入门的各种资源。 现在滚动下方!

你读过贡献指南吗?

是的

环境

请通过在终端中运行这些命令来填写所有相关字段。
  1. react-native -v :0.47.1
  2. node -v :8.2.1
  3. npm -v :4.1.2
  4. yarn --version

然后,指定:

重现步骤

(在这里写下你的步骤:)

1.在管理员模式下打开命令提示符
2.运行命令:cd
3.运行命令:react-native init
4.运行命令:cd
5.运行命令:react-native run-android
这使得包服务器在端口 8081 上自动运行。但是我无法从机器和移动设备上的浏览器访问包服务器。
我尝试使用 http://:port/index.android.js
http://localhost :端口
http://127.0.0.1 :端口

=> 我在移动设备和模拟器上都出现了红屏,并显示以下消息:
我尝试在真实设备和模拟器上运行该项目。 在两者上我都收到错误:“无法从资产'index.android.bundle'加载脚本确保你的包被正确打包或者你正在运行一个包服务器'。

screenshot-1502041340496
screenshot-1502041361543
screenshot-1502041433294

重新加载我得到错误:“无法连接到开发服务器。”

然后我在两者的开发设置中设置了主机和端口号,并收到错误“无法连接到开发服务器”。

预期行为

该项目预计将在模拟器和手机上运行而不会出现任何错误。

但是相反,我得到了错误,并且我尝试了很多次,并且以相同的模式反复出现相同的错误。

可重现的演示

(将链接粘贴到示例项目和重现问题的确切说明。)

Ran Commands Locked

最有用的评论

尝试运行:
adb reverse tcp:8081 tcp:8081
在您的命令提示符下,然后重新运行您的项目。

所有139条评论

仍然存在以下问题:
反应 16.0.0-alpha.6
注册护士 0.44.3
节点 8.2.1
npm 5.3.0
XCode 8.3.3
iOS 10.3 模拟器

那么我需要处理这些以前的版本吗?

我遇到了这个,无法处理......

最新版本有什么问题吗?

打包程序是否正在运行? 当您运行react-native run-android时,您应该会看到它出现。 您也可以使用react-native start自行启动它。 我想弄清楚这里的问题是否是打包程序根本没有启动。

是的,打包程序正在运行。 当我运行命令 react-native run-android 时,会打开节点 js 窗口,说明打包程序正在 8081 上运行并且“正在加载依赖关系图。完成”
但是当我在系统浏览器上尝试“ localhost:8081/index.android.js ”时,我看到错误“无法访问此站点”。

但是当我创建普通的nodejs api并在浏览器上测试它时,它会成功打开。

我有同样的问题。 iOS模拟器工作正常,顺便说一句

每当我尝试在 RN 中创建一个新项目时,就好像我每次都遇到了一堵新的错误墙。
下个月再试一次,我猜...

同样的问题。 有人解决吗?

尝试运行:
adb reverse tcp:8081 tcp:8081
在您的命令提示符下,然后重新运行您的项目。

@ashafizullah :我也试过了; 但仍然没有运气。

也发生在我的设备上。

我已连接 USB,反转 adb 并运行打包程序。

在设备的浏览器上打开以下链接时,它会成功加载捆绑包:

http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false

所以我怀疑Java代码本身有问题。

有什么解决办法吗? 我也被困在这里。 在 IOS 项目上完美运行

我也看到了同样的问题,这都是因为 android 应用程序没有这个权限:

<uses-permission android:name="android.permission.INTERNET" />

因此,请确保您的 android 代码能够从您的应用程序访问远程 url。

我有同样的问题没有人能解决吗?

我也遇到了同样的问题,如果有人找到解决办法,请贴出来。 谢谢。

我有同样的问题,我做了 adb 保留tcp:8081 tcp:8081然后确保相同的网络计算机和移动设备,我做了开发设置 IP:8081,但无法连接到开发服务器,谁解决了这个问题,非常感谢你

大家好。 我在 react-native 中使用了 console.dir() 并得到了这种行为。 我认为这是正常的,因为 console.dir() 是一个 browser.window 函数,并且没有浏览器具有 react-native。 删除 console.dir() 后 - 我的应用程序已经工作了。

我在Mac上面临同样的问题,有什么消息吗?

我在设备测试中遇到了同样的问题。

安卓 4.1.2

嘿。 安卓版本低于5.0的小伙伴们,你们试过用wifi连接而不是usb吗? 通过wifi连接后,我的应用程序在android 4.3(Huawei mediapad T1 8.0)上正常启动

有这个问题,对我来说原来是postgresSQL正在使用的端口8081

我今天有同样的问题。
安卓 4.4.2 和 6。

这里也有同样的问题。 每次我在短暂睡眠后重新打开 Mac 时都会发生这种情况。 有没有人解决这个问题?
adb reverse tcp:8081 tcp:8081 - 这似乎对我不起作用

screen shot 2017-10-17 at 8 20 03 am

我的错误已通过更改 inotify 限制得到解决。
这个链接帮助了https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

同样的问题,帮帮我

我在尝试从本地主机运行它时也遇到了同样的问题。 它适用于浏览器和模拟器,但不适用于物理设备

来自设备和模拟器的 Android 也存在同样的问题。 似乎无法连接到打包程序。 为物理设备执行“adb reverse ...”。 也在自定义端口上运行,因此执行“react-native start --port 8088”,然后在应用程序的开发设置中设置IPaddress:8088

问题:有没有办法找到应用程序(在我的 android 设备上)和在 Windows PC 上运行的打包程序之间的连接?

这就是我看到的“无法连接”类型的错误指示,并注意打包程序中没有日志消息。 \

更新:运行“adb reverse --list”显示我有两个反向条目。 似乎在我纠正了这些事情之后。 我仍然只有一个“白页”,但我想这是另一个问题..

Android 也有同样的问题,iOS 可以...

这怎么会发生
我也遇到了同样的问题
但以前一切对我来说都很好
然后我得到一个无限循环,这使我的桌面非常滞后
所以我决定关闭我从 react-native start 获得的模拟器和 Metro bundler
我在下面尝试了这段代码,但一点运气都没有
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

面临同样的问题,并在此之后浪费了几天。 原来默认端口 8081 在我的机器上被阻止了。 按照此处的说明更改端口https://github.com/facebook/react-native/issues/10715现在它可以工作了。

你们可以尝试在设备的网络浏览器上打开这个 URL 吗?

http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false

@kevinresol ,如果包管理器说它在端口 8081 上启动并且您无法从浏览器访问它,那么很可能该端口被防火墙阻止了。 只需尝试更改默认端口或查看是否可以打开该端口。

正如我在上一篇文章中提到的,我可以通过设备浏览器访问捆绑包。

我和@kevinresol 有同样的问题。 我可以在浏览器中看到捆绑包,但错误仍然存​​在。 我在模拟器上,但我仍然尝试了 adb reverse,但没有运气。

@bruno02100如果您在 Windows 上并通过 wifi 访问,请尝试禁用防火墙。 看看能不能解决问题。

@jerrykurian我在运行 android 模拟器的 Mac 上。我的防火墙已经关闭。 它真的很奇怪。

在 Dev Settings 中配置Debug server host & port for device192.168.x.x:8081 Dev Settings后(鲨鱼手机,它会弹出菜单)
这对我有用

PS:无需手动创建bundle,连接成功后会自动构建

我认为任何 wifi 问题或 wifi 解决方案都是题外话。 OP 正在谈论使用adb reverse localhost #$

我注意到此错误仅在模拟器启动一段时间后才会发生。 因此,现在每次弹出此错误时,我只需重新启动模拟器并运行 react-native run-android。 这真的很烦人,但我没有太多时间研究这个,所以它必须这样做。

我可以在通过 android studios 构建后连接到开发服务器,但是如果我在编辑代码时刷新代码,我的设备或模拟器无法连接到服务器。

我的依赖
“反应”:“16.0.0”,
“反应原生”:“0.50.4”,

我可以确认@xlebenny的在设备上手动设置调试服务器主机和端口的解决方案在新推出的 CRNA 项目中对我有用。

逐步在 Android 上弹出并运行 CRNA

在终端:

  1. create-react-native-app myApp
  2. cd myApp
  3. yarn run eject (我使用默认选项“常规 React Native 项目”)
  4. react-native run-android

(现在应该在手机上编译并安装应用程序)

在电话上:

  1. 运行应用程序(预计会看到红色错误屏幕!-单击左下角的关闭按钮)
  2. 摇动手机并选择开发设置
  3. 选择设备的调试服务器主机和端口并设置为 192.168.xx:8081 (当然让它成为你的实际 LAN IP)
  4. 在手机上重新启动应用程序,您应该会在顶部看到绿色条“从 192.168.xx:8081 加载...”
  5. 您还应该在 Metro Bundler 中看到一些“捆绑index.js ”操作(在运行react-native run-android时打开)
  6. 捆绑包完成后,该应用程序应该可以在您的 Android 设备上运行!

仍然可以进行实时重新加载(源文件更改时) - 只需摇动手机并触摸“启用实时重新加载”

@ashafizullah您能否解释一下该命令是如何解决问题的。 谢谢

@plong0为我解决了!

正如@bruno02100所指出的,如果设备长时间打开,似乎会出现此错误。 在模拟器设置中禁用快速启动为我解决了这个问题👍

输入 adb shell,看看它是否在你的本地服务器上监听? 在开发设置中设置服务器的 ip 和端口。它应该可以解决这个问题。

@plong0感谢您的帮助,但它没有帮助我。
我无法使用 MAC 在 android 设备中运行我的应用程序。

@ramintagizade - 我如何检查应用程序是否在我的本地服务器上监听? 命令是什么:
adb shell [command] ?

是的, adb shell 和 netstat 。

基于这个http://facebook.github.io/react-native/docs/running-on-device.html

从浏览器访问您的本地 IP 地址(例如:http://192.168.43.188:8081/)并确保它显示

React Native 打包程序正在运行。
访问文档

然后访问模拟器中的开发设置:
dev-settings

对于 Mac 用户,您可以按照以下步骤操作,
第一步:运行“adb reverse tcp:8081 tcp:8081
第 2 步:按“命令 m”
第 3 步:按“开发设置”
第 4 步:按“调试服务器主机和设备端口”
第 5 步:在弹出窗口的“port_id”部分输入“10.0.2.2:${port_id}”,使用您正在运行应用程序的端口。
第 6 步:现在运行“react-native run-android”

如果您尝试使用 Windows 机器通过 wifi 调试物理 android 设备中的应用程序,则该设备可能无法访问您的 pc 或笔记本电脑的端口,
您必须使端口可访问。 这包括两个步骤:

1.首先在防火墙中创建规则。 为此,请执行以下步骤:

```
打开运行对话框
-类型 wf.msc
-点击入站规则
- 单击右侧的新规则
- 从弹出菜单中选择端口,然后单击下一步
-选择 tcp 端口和特定的本地端口并输入端口号,如 8081(默认)
- 允许连接
- 在个人资料部分全选
- 给出一些适当的名称和描述
- 点击完成

  1. 你必须让你的电脑可以被外界访问,为此,请按照以下步骤操作:
    - 从控制面板打开网络和共享中心
    -更改适配器设置
    - 选择你的wifi网络
    - 右键单击​​,属性
    - 单击共享选项卡
    -检查所有复选框

一切顺利,现在尝试运行 react-native run-android。

有一个类似的问题,虽然我后来意识到我的模拟设备(android)根本没有互联网(或网络)连接。 它根本没有 WiFi 或 LTE 符号。 重新启动模拟器并没有解决问题,但将其置于平面模式并再次关闭平面模式即可解决问题。 在我的情况下,可能是失去网络连接的一般 android 错误。

我们遇到了这个问题,为了解决这个问题,下面的解决方案非常简单。

  1. CTRL+C取消“react-native run-android”当前进程
    或 CMD + C
  2. 关闭打开的 Metro bundler 窗口命令行
    自动地。
  3. 再次运行命令“react-native run-android”。

基本上,此错误表明您当前的构建由于代码问题或依赖问题等原因而失败。

点击这里查看更多详情

不确定是什么导致我在 macOS 上使用 Android 模拟器出现问题。 也许设置新的 Android AVD 或安装各种 Android Studio 更新?

这个命令挂了:
watchman watch-del-all

这解决了我的问题:
````
brew卸载守望者
酿造安装守望者

只是为了确保守望者删除不挂

守望者手表德尔所有
````

我最终可以通过重新启动模拟器来解决这个问题。

最后我发现了我的问题。
就我而言,这是针对我的模拟器代理设置的。
只需转到模拟器设置并不设置代理即可。

希望它可以帮助

大家好,
我在windows环境中运行并使用android模拟器进行模拟时发现了同样的问题。
经过反复试验,我找到了如下解决方案:

1>> 从默认值更改“node_modules\react-native\local-cliserverserver.js”中的端口:

process.env.RCT_METRO_PORT || 8081

默认值:process.env.RCT_METRO_PORT || 9088

如果端口被阻止或发布给其他应用程序。
注意:你可以选择任何端口号,我选择了 9088
2>> 运行命令 react-native run-android --port 9088 (把你的端口号放在这里)。 将此端口发送给运行的 adb,以便服务器和 adb 位于同一端口。
3>>现在在Android studio模拟器中,按Ctrl+m,进入“ Dev Setting ”,然后选择Debug Server port & host for Device ,设置“ localhost:9088 ”。
4>> 使用 url http://localhost :9088/debugger-ui/ 在 chrome 中打开开发者控制台

现在它将开始加载您在应用程序中所做的更改。

现在享受编码:)

感谢您发布此信息! 看起来你可能没有使用 2018 年 1 月发布的最新版本的 React Native v0.53.0。你能确保这个问题仍然可以在最新版本中重现吗?

我将关闭它,但如果您能够确认这在 v0.53.0 或更高版本中仍然存在问题,请随时打开一个新问题。

如何贡献对维护者的期望

是的,我使用的是“react-native”:“0.53.0”。

但是当我使用内部公司代理时,这个问题就来了。 可能是某些端口被公司阻止或使用。 所以我用这种方式来解决。 并贴在这里,以便其他人可以解决这个问题。

Android真实设备上的相同问题..版本5.1.1

只需打开命令提示符并转到项目目录,只需键入“yarn”并按回车就可以了

@ashafizullah他的解决方案有效!!!!

无论是模拟器还是真机,对于安卓来说,只需执行以下操作:
image

@Aliaaan我显然遇到了同样的问题。 谢谢!

我找到的唯一解决方案是从Android studio AVD Manager中删除您当前的模拟器并添加一个新模拟器。 一切重新开始工作。

非常感谢@Aliaaan
它正在使用 Android Studio 代理设置。
image
我取消选中“使用 Android Studio 代理设置”,然后选择“无代理”。 现在一切正常。

@esutton评论解决了我的问题。

BTW watchman 是我最喜欢的软件。 我总是很乐意暂停我的一天几个小时来寻找随机的 RN 问题并意识到我需要做的就是运行watchman watch-del-all 。 现在,即使该命令挂起,我们也必须偶尔重新安装它,我是一个更快乐的开发人员。

react-native run-android --port 9088 为我工作。 谢谢@Louies89

我找到解决方案
1.关闭我的杀毒软件
2关闭我的防火墙

我认为这是代码最近更改的问题,特别是如果您使用的是像 native-base 这样的第三方库。 我做了什么,后退几步 Ctrl + z ,从模拟器中卸载应用程序并重新启动它。 然后 react-native run-android ,一切正常! 也许它与模拟器的缓存有关

@pinchez254同意你的看法。第一次运行总是好的。

请使用命令 npm start 启动 npm 服务器

您好,我将我的电脑 ip 地址放入开发设置 (192.168.1.103:8081) 并在防火墙中创建一个入站规则以访问 8081 tcp 端口,但出现此错误:
"could not connect to development serve"

当在浏览器中输入"http://localhost:8081/index.delta?platform=android&dev=true&minify=false"时,构建开始并成功完成!

对我来说跑步:

  1. adb reverse tcp:8081 tcp:8081
  2. react-native start --reset-cache
  3. react-native run-android

成功了

我不得不打开两个终端。
首轮
sudo npm start
运行后
react-native run-ios

  1. 确保您的笔记本电脑和手机在同一个 Wi-Fi 网络上。
  2. 通过外壳转到您的项目文件夹。 然后运行react-native run-android , react-native start --port=8088
  3. 在您的设备上打开您的 React Native 应用程序。
  4. 打开应用内开发者菜单。 按 [cmd] + [M](Windows 为 [Ctrl] + [M])]
  5. 转到设备的开发设置 → 调试服务器主机。
  6. 输入您机器的 IP 地址和本地开发服务器的端口(例如 192.168.1.100:8088)。
  7. 返回到 Developer 菜单并选择 Reload JS。

react-native run-android --port=8081 :)

我设法解决的唯一方法是 - 搜索所有对端口 8081 的引用并更改为 9088(未使用)并从 -- 端口 9088 开始。还将 Dev 设置更改为端口 9088。默认端口 8081 的引用很少node_module/react-native 目录。 病毒防护在我的环境中使用了端口 8081。

对我来说,没有安装 Android 平台工具。 所以我使用以下命令安装。
brew cask install android-platform-tools

之后,从 Android Studio 或命令行运行 * react-native run android * 工作

重新启动我的 Mac 为我解决了这个问题,不知道为什么

首先,在确保您在项目文件中之后,这个解决方案可以帮助我:
react-native start
很可能您会收到代码 ENOSPC 的错误
在这种情况下,请使用以下代码:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
之后,您再次运行react-native start ,您应该很可能解决了 ENOSPC 错误。
接下来,只需运行react-native run-android
你去吧,它适用于我在 linux 中使用来自 android studio 的 android 模拟器

我有这个错误,
我找到了这样做的解决方案。
首先我删除了所有节点模块。
sudo rm -rf node_modules/
然后我再次安装了 npm 包
npm install

然后我运行这个命令来检查反应包是否正常。

react-native start

它告诉我包没问题,然后我用root运行android

react-native run-android --root

然后我发现这是有效的。

另请注意,从 Android 9 开始,默认情况下禁止明文 HTTP(非 HTTPS)传输。 为了能够从运行您的应用程序的设备连接到开发服务器,请将此属性添加到 _AndroidManifest.xml_ 文件中的application元素:

android:usesCleartextTraffic="true"

有关此 Stackoverflow 问题的更多信息

您可以通过在本机 Web 浏览器中键入 URL 来测试您的设备是否可以访问您的开发服务器。

不幸的是,react native 开发工具吞下了错误的原因,但如果您尝试在目标应用程序中建立自己的 HTTP 连接,您将获得有用的堆栈跟踪,它就会显示出来。

@delj不幸的是,反应原生开发工具吞下了错误的原因。

提示:使用manifestPlaceholders来防止使用android:usesCleartextTraffic= "true"进行发布

AndroidManifest.xml
````
安卓:名称= “.MainApplication”

android:usesCleartextTraffic="${isDebug}"
    >

````

android/app/build.gradle

 构建类型 {
 调试{
 manifestPlaceholders = [isDebug:true]
 }
 发布 {
 manifestPlaceholders = [isDebug:false]

        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
}

我遇到了同样的问题,在 Windows 10 上对我有用的只是以管理员身份打开 CMD。

我仍然有这个问题。 我们可以打开这个备份。 这太荒谬了,如果您按照信中的步骤进行操作,但它没有启动,它是如何成为“入门”教程的。 我确实在这个错误上花了几个小时。 Facebook 需要解决这个问题。 他们的教程要么是完全错误的,要么是他们可以链接到的众所周知的故障排除案例。

这是我的步骤:

  1. 终端 1:adb 反向tcp:8081 tcp:8081
  2. 终端 1:npm 启动
  3. react-native run-android

还是有这个问题。 当我执行第 3 步时,我还尝试添加端口值,但这也不起作用。 任何人都可以请帮忙。

我完全同情——我们也只花了一个小时来解决这个问题。

这适用于模拟器,我认为同样的方法应该适用于您的设备

这里有一些问题,其中最重要的是明文设置。 在您执行任何操作之前,请将您的应用更新到最新的 Android SDK,否则这些设置将不起作用。 要测试您是否有此问题,请将此代码粘贴到最顶层的渲染函数之一中。 例如<App

fetch('http://jofarnold.com')
  .then(res => res.text())
  .then(d => alert('ok'))
  .catch(e => {
    console.error(String(e));
});

注意http而不是https 。 是的,我的网站不是http。 但是现在我不后悔!

现在试试

fetch('https://httpbin.org')
  .then(res => res.text())
  .then(d => alert('ok'))
  .catch(e => {
    console.error(String(e));
});

注意 http

哪一个失败了? 如果两者都失败,您还有其他问题,我无法帮助您 - 但请尝试查看这些 url 是否在您的模拟器中的 Chrome 中工作,以排除网络无法正常工作。 如果第一个失败(它会给出一个反应原生红框)但第二个成功(它会用ok发出警报),那么你没有正确设置 Android 安全设置。 所以让我们这样做。

首先在<application部分的android/.../AndroidManifest.xml中输入以下内容

<manifest
....
<application
... other settings
    android:usesCleartextTraffic="true"  <---------- this
    android:networkSecurityConfig="@xml/network_security_config" <------- and this
  >
   ... etc

然后在 android/...res/xml/network_security_config.xml 创建一个文件(您可能需要添加 xml 目录:文件名没有什么特别的 - 它只需与上面的引用相同)就像这样:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">jofarnold.com</domain>
    </domain-config>
</network-security-config>

重新编译确保您在一个终端中执行react-native start --reset-cache (注意重置缓存)和在另一个终端中执行react-native run-android

现在你加载应用程序,你会得到一个好的弹出窗口。 好东西! 你已经设法fetch我不安全的网站。

现在我们必须理清 react native。 对我来说,服务器位于 10.0.2.2,调试器位于 localhost 或类似的位置(我不记得了;我部分是凭记忆写的)。 无论哪种方式,它们都是不同的,因此它不起作用。

为此,将上面的jofarnold.com更改为localhost ,然后进入应用程序中的设置菜单(mac 上的 cmd-M)> 开发设置。 关闭“使用 JS Deltas”(它不能正常工作)并在 Debugging 下将服务器主机和端口设置为localhost:8081

您的安全配置文件应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

重新编译,重新启动react-native start --reset-cache ,您将在应用程序顶部看到带有loading...或其他名称的绿色栏。 在终端中,您应该看到它与 Delta、Map 等捆绑在一起。

我认为你不需要做adb reverse的事情。 无论如何,它是作为 RN 脚本的一部分完成的。

祝你好运!

我的问题是因为我的 android 模拟器与 Wifi 和数据断开了连接。 我刚刚打开它们,它就运行了。 希望如果有人面临同样的问题,它会有所帮助。

image

我的问题是因为我的 android 模拟器与 Wifi 和数据断开了连接。 我刚刚打开它们,它就运行了。 希望如果有人面临同样的问题,它会有所帮助。

我应该在 Mateo 的评论中添加一件重要的事情; 如果您关闭 MacBook 并在另一个 wifi 网络上恢复,这可能会导致模拟器的“wifi”失败。 您应该重新启动模拟器。 我知道这对于模拟器来说不是问题,但它对这个主题有很好的搜索引擎优化,所以希望在这里留下这个评论会帮助其他人。

通过使用android 5.0或更高版本解决,在android 4..4中出现错误

通过使用android 5.0或更高版本解决,在android 4..4中出现错误

我同意

如果您正在运行 android 9 模拟器,则必须按照@delj的说明在 manifest.xml 的 Application 标记中添加android:usesCleartextTraffic="true"

打包程序是否正在运行? 当您运行react-native run-android时,您应该会看到它出现。 您也可以使用react-native start自行启动它。 我想弄清楚这里的问题是否是打包程序根本没有启动。

为什么会出现这个问题?? 我有一台 OS 10.13.6 的 mac,在服务器自动启动之前

谢谢@JofBigHealth我按照你的建议做了,它适用于模拟器和连接真实设备。
但是当我从 alpha 通道下载该应用程序时,我遇到了问题。 你有什么建议来调试它吗?

@sheva007我不确定您所说的“alpha 通道”是什么意思。 您能否解释并详细说明您遇到的具体问题?

@JofBigHealth对丢失的信息感到抱歉。
更新:现在可以了,我只需要等待一段时间,直到 Google Play 为测试人员提供更新的工作版本。 非常感谢 :)
我最初的问题是该应用程序运行良好 < Android 9 但它不会使用 Android 9 进行网络调用,当我使用您的解决方案时,包括网络调用的应用程序按预期工作。
但是当我将它提交到 Google Play Alpha Channel 时。 它不进行网络调用。

反转端口对我有用
正如@ashafizullah所建议的那样

关闭我打开的 Android Studio,奇怪地为我解决了这个问题。 不确定为什么...

更新:对于升级到 0.57.7 的模拟器,我发现没有必要进行adb反向代理修复,也不需要更改开发人员菜单中的端口。 它默认为 10.0.1.1:8080 (凭记忆猜测)和 Just Works。 我运行react-native startreact-native start --reset-cache (如果需要)并从 Android Studio 构建,它工作得很好。 如果您已将其设置为调试,则必须运行调试器,并且可能需要从 Android Studio 重新构建,因为它有时不会第一次连接(由于我怀疑是竞争条件),但其他方面都很好。 请记住在应用清单中正确设置安全设置

设备是另一回事。

尝试在设备上启动时遇到同样的问题。 设备有什么解决方案吗?

我有同样的问题。 请帮我。

您应该在环境变量中添加一个路径...“adb”路径您可以在 C:Users\user\AppData\Local\Android\Sdk/platformtools 中找到它的位置

这在 Windows 10 上对我有用:(设置调试服务器主机和端口后..)
我检查了我的防火墙设置(Windows 防火墙>允许应用程序或功能通过 Windows 防火墙),发现有两个 Node.js 应用程序,但其中一个不允许通过防火墙! 选中该框并保存,然后一切正常!

如果您正在运行 android 9 模拟器,则必须按照@delj的说明在 manifest.xml 的 Application 标记中添加android:usesCleartextTraffic="true"

受到推崇的

同样的错误。
windows7+安卓工作室3.3.2。
节点服务器处于活动状态,我可以从模拟器 chrome 访问 127.0.0.1,但 Awesome 应用程序无法连接到节点服务器。
我还在 AndroidManisfesto.xml 中添加了android:usesCleartextTraffic="true" ,但仍然出现错误

image
image
image
image
image
image
image
image

@aflext您是否在红框中运行了adb reverse tcp:8081 tcp:8081命令? 这通常有效。

@JofBigHealth通过将网址从127.0.0.1:8081更改localhost:8081解决了它。

就我而言,解决方案是禁用/启用“远程调试 JS”

@ashafizullah :我也试过了; 但仍然没有运气。

@ashafizullah是的,它也对我有用。

可以通过windows运行这个项目吗???

我的错误已通过更改 inotify 限制得到解决。
这个链接帮助了https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

这行得通! 多谢!!

我的错误已通过更改 inotify 限制得到解决。
这个链接帮助了https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

这对我有用。 谢啦。

我在<application ...标记处将android:usesCleartextTraffic="true"添加到AndroidManifest.xml并重建了应用程序。 之后,它开始正常从开发服务器加载。

这发生在我身上,因为我让调试器运行并连接到另一个设备。 因此,连接到调试器的 iOS 模拟器阻止了 Android 设备连接到打包器。 在 iOS 模拟器上停止远程调试允许 Android 设备连接,或者您也可以在 Android 设备上开始远程调试。

这在 Windows 10 上对我有用:(设置调试服务器主机和端口后..)
我检查了我的防火墙设置(Windows 防火墙>允许应用程序或功能通过 Windows 防火墙),发现有两个 Node.js 应用程序,但其中一个不允许通过防火墙! 选中该框并保存,然后一切正常!

这也是我的问题,谢谢!

我解决了:

https://www.youtube.com/watch?v=XhiE0HEiYd4

https://stackoverflow.com/questions/44446523/unable-to-load-script-from-assets-index-android-bundle-on-windows

但是....当我在模拟器中重新加载应用程序时,再次崩溃并显示消息:
无法连接到开发服务器

所以我尝试在防火墙中添加node.js和genymotion player.exe并重新启动所有(geny,react),然后再次工作......

ctrl+Win cmd 命令行 ipconfig查找ipV4地址 我的是192.168.0.111,之后我将192.168.0.111:8081放在
image
image

成功解决!

我在<application ...标记处将android:usesCleartextTraffic="true"添加到AndroidManifest.xml并重建了应用程序。 之后,它开始正常从开发服务器加载。

这解决了它。 万分感谢。

仅在真正的 android 设备上存在相同的问题。
解决方案:
1)添加文件android/app/src/main/res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

2) 将行添加到 android/app/src/main/AndroidManifest.xml

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...
>

找到解药。
此问题帮助我通过以下步骤解决了问题。

  1. (在项目目录中) mkdir android/app/src/main/assets
  2. 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 /主/资源
  3. react-native run-android

https://stackoverflow.com/questions/44446523/unable-to-load-script-from-assets-index-android-bundle-on-windows

运行adb reverse tcp:8081 tcp:8081后它对我有用。 早些时候它正在打开包服务器窗口,但在加载依赖关系图完成后没有发生任何事情。 信息。
现在运行上述命令后一切正常。

根据网络安全配置,这适用于 Android 9.0+。
好吧,所以在尝试了我在网上找到的所有可能的解决方案后,我决定手动调查原生 Android logcat。 即使在添加android:usesCleartextTraffic="true"之后,我在 logcat 中也发现了这个:

06-25 02:32:34.561 32001 32001 E unknown:ReactNative: Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.29.96 not permitted by network security policy

因此,我尝试检查我的 react-native 应用程序的源代码。 我发现在debug变体中,已经有一个由 react-native 人员定义的网络安全配置,它与main变体冲突。

有一个简单的解决方案。
转到<app-src>/android/app/src/debug/res/xml/react_native_config.xml
在新的一行中添加您自己的 IP 地址喜欢:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="false">localhost</domain>
    <domain includeSubdomains="false">10.0.2.2</domain>
    <domain includeSubdomains="false">10.0.3.2</domain>
    ***<domain includeSubdomains="false">192.168.29.96</domain>***
  </domain-config>
</network-security-config>

由于我的计算机的本地 IP(从ifconfig检查 linux)是 192.168.29.96,我在*中添加了上面的行

然后,您需要为 Android 清理和重建!

cd <app-src>/android
./gradlew clean
cd <app-src>
react-native run-android

我希望这对你有用。

我做了什么:(在模拟器Android Pie 9上工作)

  1. 通过在模拟器中单击Ctrl+MDev SettingDebug server host & port for device上设置 IP 和端口。 确保使用 Bundler 的主机和端口设置主机和端口(默认值: localhost:8081 )并确保您的端口没有被其他进程阻塞
  2. 在主项目目录上运行adb reverse tcp:8081 tcp:8081
  3. android:usesCleartextTraffic="true"添加到 $#$ AndroidManifest.xml $#$ 中的<application>节点
  4. 完成以上三点后,重启你的项目

@Eyesonly88这为我解决了这个问题 - 谢谢。

对于在将 targetSdkVersion 设置为 API 28 时特别面临此问题的您。

您需要做的就是为您的network_security_config文件添加以下行:

    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

PS:在我的情况下,每种风格都有多个 network_security_config 文件,因为这是一个调试问题,将这些行添加到调试风格的network_security_config文件中就足够了。

==================================================== ========================

有关以下错误的更多信息:

如果我们去https://developer.android.com/training/articles/security-config.html ,我们会看到上面这几行代码是android API 24到API 27的默认安全配置。(Android 7.0到安卓8.1)。
这意味着对于 Android 9,API 28,这是我面临的错误,默认配置已更改。
更具体地说,Android API 28 的默认配置是:

    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

.
这就是为什么对旧 API 使用默认配置对我有用。

一开始对我也有用的另一件事是将 targetSdkVersion 设置为 api 27。如果您不想在 API 28 上运行,这也可能对您有用。

如果您正在运行 android 9 模拟器,则必须按照@delj的说明在 manifest.xml 的 Application 标记中添加android:usesCleartextTraffic="true"

受到推崇的

你节省了我的时间。 多谢。

伙计们,我在模拟器上打开了wifi,它对我有用

解决我的问题的是使用sudo yarn start而不是yarn start
我的 package.json 中有一个脚本

{
...
"scripts":{
"start":"react-native start"
}
....
}

如果您使用的是 xCode 或 Android Studio 等模拟器,则无需在设置中使用您的 IP 设置开发服务器地址。 它会自动设置。 只需将其删除并重新运行该应用程序。 这个对我有用。

如果您正在运行 android 9 模拟器,则必须按照@delj的说明在 manifest.xml 的 Application 标记中添加android:usesCleartextTraffic="true"

受到推崇的

你拯救了我的一天

我做了什么:(在模拟器Android Pie 9上工作)

  1. 通过在模拟器中单击Ctrl+MDev SettingDebug server host & port for device上设置 IP 和端口。 确保使用 Bundler 的主机和端口设置主机和端口(默认值: localhost:8081 )并确保您的端口没有被其他进程阻塞
  2. 在主项目目录上运行adb reverse tcp:8081 tcp:8081
  3. android:usesCleartextTraffic="true"添加到 $#$ AndroidManifest.xml $#$ 中的<application>节点
  4. 完成以上三点后,重启你的项目

我可以确认@rafidamr的解决方案是正确的。 但是我在一个无法使用端口 8081 的公司环境中,所以我只是将 Metro Bundler 切换到另一个端口,如下所示:

  • adb reverse tcp:8088 tcp:8088
  • react-native run-android --port 8088

当然,指向模拟器的开发设置中的新端口。

谢谢@camposbrunocampos 👏🏼,我用target: Android 9.0API level 28
更新network_security_config.xml ,现在模拟器可以正常工作了。

我在 ios 和 android 上都遇到了问题(在 android studio 上试过,没有 android studio,有 xcode 和没有 xcode)。 我尝试了上述所有内容。

所以没有帮助的是:

  • network_security_config.xml
  • 亚行反向
  • 将IP地址更改为服务器的IP。
  • 等等..

我唯一要做的就是做一个: sudo npm start from react native 项目目录。 好像是权限问题。 (使用麦克)

@inspiraluna这是基本的 npm 安装问题,你应该 chown 你的系统目录。

在清单中添加android:usesCleartextTraffic= "true" 到您的应用程序

……
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">

这个对我有用。

我在<application ...标记处将android:usesCleartextTraffic="true"添加到AndroidManifest.xml并重建了应用程序。 之后,它开始正常从开发服务器加载。

这也为我解决了这个问题,但我会先说我最初尝试过这个修复,但它没有用。 我不得不用新的模拟器重新开始,杀死并重新启动 abd 几次,重新安装 android studio,更新 gradle 等。

@Eyesonly88谢谢..它对我有用
我已经添加了
android:usesCleartextTraffic= "true" 到 AndroidManifest.xml

很遗憾地以 Android 4.0 为目标,当我运行 adb reverse tcp:8081 tcp:8081时出现错误

warn Failed to connect to development server using "adb reverse": Command failed: adb -s 192.168.66.103:5555 reverse tcp:8081 tcp:8081

以下是我解决模拟器上没有开发人员工具的问题的方法:
这个 SO 答案建议检查您的MainApplication.java文件并从getUseDeveloperSupport方法中删除BuildConfig.Debug ,所以它看起来像这样:

        <strong i="11">@Override</strong>
        public boolean getUseDeveloperSupport() {
            // Return true to load JS from the packager.
            // If BuildConfig.DEBUG is false, assets will be loaded from assets folder.
            return true; // BuildConfig.DEBUG;
        }
此页面是否有帮助?
0 / 5 - 0 等级