错误“无法获得BatchedBridge,请确保您的包被正确包装”;在应用程序启动时

尝试在Android 4.4.2上创建一个反应原生项目,我得到了这个错误屏幕

said error

却找不到解决的办法。我尝试重新启动packager,重新连接设备,甚至重新安装react native并开始新的项目。在6.0.0和更高版本上,它工作得很好。

158367 次浏览

对此,一个可能的解决方案是,您很可能不首先捆绑应用程序,而是执行以下步骤,然后将app-debug.apk部署到您的设备上

$ cd myproject
$ react-native start > /dev/null 2>&1 &
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

(如果文件夹assets不存在,创建它)

然后从项目根运行

$> (cd android/ && ./gradlew assembleDebug)

将创建的apk安装到您的设备,从位置:android/app/build/outputs/apk/app-debug.apk

如果这解决了你的问题,请告诉我

编辑:

你可以把它放在你的包裹里。我相信它会在即将发布的react-native版本中被修复,并将在组装最终的APK之前执行,因此这将不需要(我希望也是如此)

把:

"scripts": {
"build": "(cd android/ && ./gradlew assembleDebug)",
"start": "node node_modules/react-native/local-cli/cli.js start",
"bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
},

或者如前所述的旋度等效,但对于大多数情况,上面的更健壮

我在设备Z3 Compact D5803 - 6.0.1上有同样的异常

我打开。buckconfig文件并修改了这一行:

target = Google Inc.:Google APIs:23

target = Google Inc.:Google APIs:24

因为我在SDK管理器中看到Android 6。X的api级别为24。

我也遇到过这个问题。 我所做的就是强制关闭设备上的应用程序,然后打开另一个控制台并运行

react-native start

然后我从设备上再次打开应用程序,它又开始工作了。

编辑:如果你通过USB使用android设备,并且拔掉了USB插头,或者你的电脑处于休眠状态,你可能需要先运行

adb reverse tcp:8081 tcp:8081

刚刚得到这个错误。以下是我所做的调整: 我选择了Dismiss,进入开发人员菜单,然后是Dev Settings, 选择Debug server host & port for device,我添加了我的电脑的IP地址和端口:192.168.0.xx:8xxx,使用任何你的开发机器分配的IP地址是你的wifi网络。端口通常为:8081

一旦我这样做了,一切都很顺利。此外,当你在开发菜单中,记住选择Enable Live ReloadDebug JS Remotely,它会使你的调试工作更加容易。

这对我来说是有效的(在尝试了我发现的所有其他解决方案之后…):

\Android\sdk\platform-tools中运行adb reverse tcp:8081 tcp:8081

如果这些方法都不适合你,试试下面的方法:

我发现我的<root>/android/app/build/intermediates/assets/debug文件夹是空的,并通过运行cd android && ./gradlew assembleDebug没有创建这些文件所需的,这些文件稍后由javascript线程在我们的react本机应用程序中使用。

我手动运行了以下命令,调试构建命令应该在理想情况下创建。

node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output /<path to dir>/android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest /<path to dir>/android/app/build/intermediates/res/merged/debug

运行这些命令后,我在这个目录<root>/android/app/build/intermediates/assets/debug中发现了两个bundle文件

然后我再次运行cd android && ./gradlew installDebug我的应用程序又开始工作了。

将调试更多,并将更新实际上失败的内容。

我也得到这个错误,真的很困惑。因为不是所有的答案都有效。 在添加亚洲开发银行到path之后

当我第一次开始使用React Native时,我也得到了这个,使用物理设备。如果是这样的话,你需要在开始之前做一些额外的事情。你必须在React Native的“Dev Settings”中输入一些关于你的开发机器的信息。

当你看到错误时,摇动你的设备。一个对话框将弹出,最后一个选项将是“开发设置”。选择“调试服务器热&输入您的本地IP和使用的端口(通常为8081)。

参见https://facebook.github.io/react-native/docs/running-on-device-android.html的最后一段

在终端中尝试此命令,然后重新加载。这对我很有效

Adb reverse tcp:8081 tcp:8081

看到问题:

1.react-native开始

2.在你的设备上点击Reload(R,R)

对我来说,我启用了侧同步并处于激活状态。关闭它立即让这个问题消失了。关闭PC和设备之间的这个或任何其他通信可能是值得的

  1. 重启genymotion
  2. 运行react-native run-android
  3. 问题解决了

对我来说,这是因为adb不在PATH中。对我来说,它位于/Users/man/Library/Android/sdk/platform-tools,对你来说,它可能在其他地方,但无论如何,找到它并将它添加到你的路径,看看是否有帮助。

我最终不得不打开我正在使用的端口(默认为8081)。在Linux上,您可以执行以下操作

sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

您可以进行测试,看看是否真的需要这样做。只需在Android设备上的Chrome浏览器中导航到开发服务器。如果它没有响应,那么这可能就是您所需要的。如果它有响应,那么这对你没有帮助。

既然你使用的是Android <5.0你不能使用默认的adb reverse方法,但Facebook已经添加了通过Wi-Fi连接到开发服务器的正式文档,它将支持你的版本。引用MacOS的说明,但也有Linux和Windows的说明:

方法二:通过Wi-Fi连接

您还可以通过Wi-Fi连接到开发服务器。首先,你需要使用USB线在你的设备上安装应用程序,完成后,你可以按照下面的说明进行无线调试。在继续之前,您需要开发机器的当前IP地址。

IP地址可以在“系统首选项→网络”中找到。

确保你的笔记本电脑和手机在同一个Wi-Fi网络上。 在设备上打开React Native应用程序。 您将看到一个带有错误的红色屏幕。这很好。下面的步骤将解决这个问题。 打开应用内开发者菜单。 进入设备的开发设置→调试服务器主机。 输入机器的IP地址和本地开发服务器的端口(例如10.0.1.1:8081)。 返回Developer菜单,选择Reload JS.

它“随机”出现了这个问题,我花了一段时间才意识到我的场景中哪里出了问题。

在我更新到React-native-cli 2.0.1后,有一条消息输出到日志中,帮助我挖掘并找到根本原因:

JS服务器无法识别,继续构建…

在研究了一些链接后,我发现了这个:

无法识别JS服务器

因为我在windows上,我运行netstat,发现我的VLC播放器也在8081端口上运行,导致了这个问题。 所以,在我的情况下,如果我启动vlc服务器之前的反应本机服务器,它不会工作

在之前版本的react-native-cli中没有输出相同的日志消息,使其无声地失败。

TL, DR:检查与包管理器(默认为8081)相同的端口上是否有任何东西正在运行

单独的终端中,将您的设备连接到计算机并运行以下命令:

react-native start
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

应用程序终端:

react-native run-android
install apk on your device from this location android/app/build/outputs/apk/app-debug.apk

我的方法是:

react-native start

之后在您的设备中使用:

click to Reload.

在console react-native中,它将获取js bundle data。

我尝试了上面/下面的许多建议,但最终,我面临的问题是watchman的权限问题,它在之前使用homebrew安装。如果您在尝试使用模拟器时查看您的终端消息,并在模拟器上遇到关于watchman的“Permission denied”错误以及“Could not get BatchedBridge”消息,请执行以下操作:

转到/Users/<username>/Library/LaunchAgents目录并更改权限设置,以便您的用户可以读和写。这与你是否有一个com.github.facebook.watchman.plist文件无关。

我发现我还需要添加一个

react-native升级

使应用程序正确运行。

我的问题是,我通过我的AndroidManifest.xml文件,并删除了行

< p > <代码> & lt; uses-permission android: name = " android.permission。互联网”/比; < /代码> < / p >

因为我的应用程序不需要网络。然而,react本机调试应用程序确实需要互联网访问(访问packager)。:)

虽然有点晚,但这对我来说真的很管用。

  1. react-native run-android
  2. react-native start

第一个命令将为android构建apk,并将其部署到连接的设备上。当你打开应用程序,它会显示红色屏幕错误。然后运行第二个命令,该命令将运行packager并为您构建应用程序包。

当我们开始react native项目#1时,大多数人都是第一次面对这个问题。

几个简单的步骤解决了我的问题:

我使用命令创建了一个示例项目:

react-native init ReactProject1

解决方案

修复方法是帮助local-cli\runAndroid\adb.js找到adb.exe,方法与local-cli\runAndroid\runAndroid.js相同:

在projectname(不管你给了什么)\node_modules\react-native\local-cli\runAndroid下查找replace语句

替换:

const devicesResult = child_process.execSync('adb devices');

由:

const devicesResult = child_process.execSync( (process.env.ANDROID_HOME ? process.env.ANDROID_HOME + '/platform-tools/' : '') + 'adb devices');

在完成上述替换后,只需在cmd中运行react-native run-android,它将捆绑apk,并首先尝试在您的设备中本地安装js bundle。(成功了)

我也有同样的问题。当我通过create-react-native-app AwesomeProject创建一个react原生项目时,它在手机上的Expo应用程序中工作得很好。在那之后,我想用那个快速启动项目来开发我的项目,得到了和你一样的错误。

经过一些研究,我发现最好用初始化AwesomeProject启动新项目(在react原生文档中设置所有设置),然后运行以下命令:

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/

这应该会修复bundle的问题(——dev false没有显示警告)

你需要做的就是让app在你的虚拟/真实设备上运行:

react-native run-android

它应该能正常工作。至少对我有用。

对我来说,问题是'adb'没有被识别-检查答案。

要修复此问题,将C:\Users\USERNAME\AppData\Local\Android\sdk\platform-tools添加到环境变量中

尝试清理缓存

React-native start -reset-cache

我也遇到了同样的问题,但这是我自己犯的一个愚蠢的错误……

Android工作室,我从app项目启动installDebug/installRelease gradle脚本,而不是root项目。

当你运行react-native run-android时,请检查是否有以下错误: adb服务器版本(XX)不匹配此客户端(XX);杀死…… < /代码> < / p >

在这种情况下,确保/usr/local/opt/android-sdk/platform-tools/adb/usr/local/bin/adb指向相同的adb

在我的情况下,一个指向/Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK),但另一个指向/usr/local/Caskroom/android-platform-tools/26.0.2/platform-tools/adb (Homebrew)

和问题已被修复后,他们都指向/Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK)

简单的方法!

  • 停止服务器并结束项目构建。
  • 打开一个'Node.js'终端。
    • 导航到文件夹与“react-native”项目。
    • 输入'react-native start'——手动启动react本地服务器。
    • 李< / ul > < / >
    • 转到代码编辑器终端,输入“react-native run-android”。

    你可以开始了!

“npm启动”

我刚刚关闭了终端机,开了一个新的。通过cd命令进入项目位置。然后简单地输入- "npm start"。然后'r'表示重新加载。一切都消失了。我认为每个人都应该马上尝试一下。

有人建议用下面这个

< p > react-native运行android React-native start——reset-cache,

但在我的例子中,我只是关闭cli命令提示窗口,并使用以下命令。

npx react-native run-android

它运行得很好。

在我的例子中,它是在android分段下的jsEngine: 'hermes',删除它固定了产品构建。

如果您正在使用expo,并且正在物理设备上运行它,我建议您关闭metro捆绑包,然后启动expo并尝试它

对我来说,我只是杀死了所有的终端在可视代码工作室 打开CMD,我运行以下两个命令

npx react-native start
npx react-native run-android

这对我有用,希望对你也有用 快乐编码😊😊

您的应用程序已经在运行,然后停止并再次运行% NPX react-native run-ios