错误“无法获得BatchedBridge,请确保您的包已打包正确”在应用程序的开始

试图在Android 4.4.2上创build一个react-native项目,我得到这个错误屏幕

说错误

并找不到解决的办法。 我尝试重新启动打包程序,重新连接设备,甚至重新安装反应本地和启动新项目。 在6.0.0及更高版本上,它工作得很好。

一个可能的解决scheme是,你最有可能不捆绑您的应用程序,执行以下步骤,然后将您的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不存在创build它)

然后从项目根目录运行

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

从位置android/app/build/outputs/apk/app-debug.apk安装创build的apk到你的设备

让我知道如果这可以解决您的问题

编辑

你可以简单地把它放到你的package.json中作为一个脚本来自动化,我相信它会在即将发布的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/" }, 

或者如提到的curl等价物,但是对于大多数情况,上述更加健壮

我也遇到了这个问题。 我所做的是强制杀死我的设备上的应用程序,然后我打开另一个控制台,跑了

 react-native start 

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

编辑:如果您通过USB使用Android设备,并拔下它或您的计算机进入睡眠状态,您可能需要先运行

 adb reverse tcp:8081 tcp:8081 

刚刚有这个错误。 这里是我所做的修复:我select了Dismiss ,去到开发菜单,然后Dev Settings ,selectDebug server host & port for device ,我添加了我的电脑的IP地址和端口: 192.168.0.xx:8xxx ,使用任何你的开发者机器分配的IP地址在你的wifinetworking上。 端口通常是:8081

一旦我做到了,一切顺利。 另外,当你在开发菜单中的时候,记得selectEnable Live ReloadDebug JS Remotely ,这使得你的生活更容易,而debugging。

这是什么工作对我来说(尝试其他解决scheme后,我发现…):

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

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

当您看到错误时, 摇动您的设备 。 一个对话框将popup,最后一个选项将是“开发设置”。 select“Debug server hot&port for device”并input你的本地IP和使用的端口(通常是8081)。

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

如果没有解决scheme适用于您,请尝试以下操作:

我发现我的<root>/android/app/build/intermediates/assets/debug文件夹是空的,运行cd android && ./gradlew assembleDebug没有创build那些需要的文件,应用。

我手动运行了debug build命令应该创build的以下命令。

 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 

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

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

将更多的debugging,并会更新什么是实际失败。

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

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

应用terminal:

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

在terminal试试这个命令,然后重新加载。 它为我工作

adb反向tcp:8081 tcp:8081

看问题 :

1.原生本地开始

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

我在Z3 Compact D5803 – 6.0.1上遇到了同样的exception

我去打开.buckconfig文件并更改行:

target = Google Inc.:Google APIs:23

target = Google Inc.:Google APIs:24

因为我在SDK Manager中看到Android 6.X的api级别为24。

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

这太迟了,但这真的对我有用。

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

第一个命令将为Android构buildapk并将其部署到您的设备上(如果其连接的话)。 当你打开应用程序,它会显示错误的红色屏幕。 然后运行第二个命令,它将运行打包程序并为您构build应用程序包。

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

由于您使用的Android <5.0,您不能使用默认的adb reverse方法,但Facebook已经添加了官方文档通过Wi-Fi连接到开发服务器 ,这将支持您的版本。 引用MacOS的说明,但他们也有他们的Linux和Windows:

方法2:通过Wi-Fi连接

您也可以通过Wi-Fi连接到开发服务器。 您首先需要使用USB电缆将应用程序安装到设备上,但一旦完成,您可以按照这些说明进行无线debugging。 在继续之前,您将需要您的开发机器的当前IP地址。

您可以在系统偏好设置→networking中findIP地址。

确保您的笔记本电脑和手机在同一个Wi-Finetworking上。 在您的设备上打开您的React Native应用程序。 你会看到一个错误的红色屏幕。 还行吧。 以下步骤将解决这个问题。 打开应用内开发人员菜单。 进入开发设置→设备的debugging服务器主机。 input您的机器的IP地址和本地开发服务器的端口(例如10.0.1.1:8081)。 回到Developer菜单并selectReload JS。

它有“随机”这个问题,并花了我一些时间,以了解我的情况出了什么问题。

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

JS服务器无法识别,继续build立…

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

无法识别JS服务器

由于我在Windows上,我运行了netstat,发现我的VLC播放器也在端口8081上运行,导致这个问题。 所以,就我而言,如果我在启动反应原生服务器之前启动了vlc服务器,那么它将无法工作。

在以前版本的react-native-cli中,没有输出相同的日志消息,从而使其无提示失败。

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

我也有这个错误,真的很困惑。 因为所有的答案不起作用。 刚添加adb到path。

对于我来说,我已经启用了side-sync并且处于活动状态。 closures它立即使问题消失。 这可能是值得closures的PC或设备之间的任何其他通信

我最终不得不打开我正在使用的端口(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 

你可以testing看看你是否真的需要这样做。 只需在Android设备的Chrome浏览器中导航到您的开发者服务器。 如果它没有回应,那么这可能是你需要的。 如果确实有反应,那么这对你没有帮助。

我的方法是:

 react-native start 

之后,在您的设备上使用:

 click to Reload. 

看到在控制台react-native,它将获取js包数据。

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

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

因为我的应用程序将不需要互联网。 但是,原生debugging应用程序确实需要访问互联网(访问打包程序)。 🙂

我们大多数人第一次面对这个问题,当我们开始回应原生项目#1。

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

我使用命令创build了一个示例项目:react-native init ReactProject1

解决办法是帮助local-cli \ runAndroid \ adb.jsfindadb.exe,就像local-cli \ runAndroid \ runAndroid.js一样:

findprojectname下的replace语句(无论你给出了什么)\ node_modules \ react-native \ local-cli \ runAndroid

更换:

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

通过:

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

做完上面的replace之后,只需在你的cmd中运行react-native run-android,它会绑定apk,首先尝试在你的设备上本地安装js bundle。 (成功)

对我来说问题是'adb'不被认可 – 检查这个答案。

为了解决这个问题,将C:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools添加到环境variables

我尝试了上面/下面的许多build议,但是最终,我面对的问题是一个守望者的权限,这个守护者是早先使用自制软件安装的。 如果您在尝试使用模拟器时查看terminal消息,并在模拟器上遇到“守护程序拒绝”错误以及“无法获取BatchedBridge”消息,请执行以下操作:

进入你的/Users/<username>/Library/LaunchAgents目录,并更改权限设置,以便您的用户可以读取和写入。 这是不pipe你是否真的有一个com.github.facebook.watchman.plist文件在那里。

我发现我还需要添加一个

反应本地升级

让应用程序正常运行。

我有同样的问题。 当我通过create-react-native-app AwesomeProject创build一个反应原生项目时,它在电话中的世博会应用程序中运行良好。 之后,我想用这个快速启动项目来开发我的项目,并得到同样的错误。

经过一番研究之后,我发现最好用react-native init AwesomeProject启动新项目(所有的设置都在反应本机文档中)然后运行这个命令:

 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/ 

这应该解决这个问题(–dev false不显示警告)

所有你需要做的应用程序运行在你的虚拟/真实设备是:

 react-native run-android 

它应该工作得很好。 至less它对我有效。

尝试清理caching

react-native start –reset-cache

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

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

解决scheme:在“react-native”目录下:运行命令“./gradlew:例子:UIExplorer:android:app:installDebug”后,运行commnad“ ./packager/packager.sh ”成功。 然后点击模拟器或设备中的“UIExplorer App”