在应用程序启动时出现错误“无法获取BatchedBridge,请确保您的软件包已正确打包”

nsequi 发布于 2019-09-06 android 最后更新 2019-09-06 12:39 82 浏览

试图在Android 4.4.2上创建一个react-native项目,我得到这个错误屏幕 said error 并找不到解决问题的方法。我尝试重新启动打包程序,重新连接设备,甚至重新安装反应本地和启动新项目。在6.0.0及更高版本上,它工作得很好。

已邀请:

kautem

赞同来自:

在终端中尝试此命令,然后重新加载。它对我有用 adb reverse tcp:8081 tcp:8081

eipsum

赞同来自:

我有同样的问题。当我通过create-react-native-app AwesomeProject创建一个反应原生项目时,它在手机上的Expo应用程序中运行良好。之后,我想使用该快速启动项目来开发我的项目并得到与您相同的错误。 经过一些研究后,我发现最好使用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/
这应该用bundle修复东西(--dev false不显示警告) 应用程序在您的虚拟/真实设备上运行所需要做的就是:
react-native run-android
它应该工作得很好。至少它对我有用。

out

赞同来自:

我尝试了上面/下面的许多建议,但最终,我遇到的问题是一个带守望者的权限,它是使用早先的自制程序安装的。如果您在尝试使用模拟器时查看终端消息,并且在模拟器上遇到与“守望者”相关的“权限被拒绝”错误以及“无法获取BatchedBridge”消息,请执行以下操作: 转到/Users/<username>/Library/LaunchAgents目录并更改权限设置,以便用户可以读写。这与您是否确实拥有com.github.facebook.watchman.plist文件无关。

fet

赞同来自:

请参阅issue: 1.react-native start 2.在您的设备上单击Reload(R,R)

baut

赞同来自:

现在为时已晚,但这对我有用。

  1. react-native run-android
  2. react-native start
第一个命令将为Android构建apk并在其连接时将其部署在您的设备上。当您打开应用程序时,它将显示错误的红色屏幕。然后运行第二个命令,它将运行packager并为您构建应用程序包。

jdolor

赞同来自:

这对我有用(在尝试了我找到的所有其他解决方案之后......): 在\Android\sdk\platform-tools内运行adb reverse tcp:8081 tcp:8081

vet

赞同来自:

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

fet

赞同来自:

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

react-native start
然后我从我的设备再次打开应用程序,它又开始工作了。 编辑:如果您通过USB使用Android设备并拔掉它或您的计算机进入睡眠状态,您可能必须先运行
adb reverse tcp:8081 tcp:8081

zfugit

赞同来自:

由于您使用的是Android< 5.0你不能使用默认的adb reverse方法,但Facebook已经添加了official documentation to connect to the development server via Wi-Fi,这将支持你的版本。引用MacOS的说明,但它们也适用于Linux和Windows:

Method 2: Connect via Wi-Fi You can also connect to the development server over Wi-Fi. You'll first need to install the app on your device using a USB cable, but once that has been done you can debug wirelessly by following these instructions. You'll need your development machine's current IP address before proceeding. You can find the IP address in System Preferences → Network. Make sure your laptop and your phone are on the same Wi-Fi network. Open your React Native app on your device. You'll see a red screen with an error. This is OK. The following steps will fix that. Open the in-app Developer menu. Go to Dev Settings → Debug server host for device. Type in your machine's IP address and the port of the local dev server (e.g. 10.0.1.1:8081). Go back to the Developer menu and select Reload JS.

qanimi

赞同来自:

我也得到了这个错误,真的很困惑。因为所有答案都不起作用。 刚刚将adb添加到路径之后。

zsed

赞同来自:

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

veos

赞同来自:

尝试清除缓存 代理人的地方0

mex

赞同来自:

它有“随机”这个问题,并花了我一些时间才意识到我的场景中出了什么问题。 在我更新到React-native-cli 2.0.1后,有一条消息输出到日志,帮助我挖掘并找到根本原因:

JS server not recognized, continuing with build...
在研究了一些链接后,我发现了这个: Unable to recognize JS server 因为我在Windows上,我运行netstat并发现我的VLC播放器也在端口8081上运行导致了这个问题。 因此,在我的情况下,如果我在反应原生服务器之前启动vlc服务器它将无法工作。 在以前版本的react-native-cli上没有输出相同的日志消息,使其无声地失败。 TL,DR:检查是否有与包管理器在同一端口上运行的任何内容(默认为8081)

peum

赞同来自:

如果解决方案都不适合您,请尝试以下方法: 我发现我的<root>/android/app/build/intermediates/assets/debug文件夹是空的,并且通过运行cd android && ./gradlew assembleDebug并没有创建所需的文件,这些文件稍后由我们的本机应用程序中的javascript线程使用。 我手动运行了以下命令,其中debug 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
运行这些命令后,我在此目录<root>/android/app/build/intermediates/assets/debug中找到了两个捆绑文件 然后我再次跑了cd android && ./gradlew installDebug我的应用程序再次开始工作。 将调试更多,并将更新实际失败的内容。

jneque

赞同来自:

我的方式是:

react-native start
之后在您的设备中使用:
click to Reload.
在控制台react-native中查看,它将获取js包数据。

siusto

赞同来自:

我在设备Z3 Compact D5803 - 6.0.1上遇到了同样的例外 我打开了.buckconfig文件并更改了行: target = Google Inc.:Google APIs:23target = Google Inc.:Google APIs:24 因为我在SDK Manager中看到Android 6.X的api等级为24。

womnis

赞同来自:

我的问题是我浏览了我的AndroidManifest.xml文件并删除了该行 <uses-permission android:name="android.permission.INTERNET" /> 因为我的应用程序不需要互联网。但是,react本机调试应用程序确实需要Internet访问(访问打包器)Whoops。 :)

yet

赞同来自:

当我第一次使用物理设备启动React Native时,我也得到了这个。如果是这种情况,您需要在开始之前做一些额外的事情。您必须在React Native的“开发设置”中输入有关开发机器的一些信息。 当您看到错误时,请摇动您的设备。将弹出一个对话框,最后一个选项将是“开发设置”。选择'Debug server hot&设备端口'并输入您的本地IP和使用的端口(通常为8081)。 请参阅https://facebook.github.io/react-native/docs/running-on-device-android.html的最后一段

nsequi

赞同来自:

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

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

bnemo

赞同来自:

对我来说问题是“adb”无法识别 - 请检查this答案。 要解决此问题,请将C:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools添加到环境变量

oest

赞同来自:

一个可能的解决方案是您很可能不首先捆绑您的应用程序,执行以下步骤,然后将您的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)
从位置:android/app/build/outputs/apk/app-debug.apk将创建的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/"
  },
或者如所提到的卷曲等效物,但对于大多数情况,上述情况更为稳健

eet

赞同来自:

我发现我还需要添加一个

react-native upgrade
让应用程序正确运行。

miure

赞同来自:

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

ea_qui

赞同来自:

对我来说,我启用了侧面同步和活动。立即关闭它会使问题消失。在PC和设备之间关闭此通信或任何其他通信可能是值得的

matque

赞同来自:

我遇到了同样的问题,但这是我自己的一个愚蠢的错误...... 在Android studio中,我从app projet而不是root项目中启动了installDebug/installRelease gradle脚本。

cvitae

赞同来自:

当我们开始对原生项目#1做出反应时,我们大多数人第一次面临这个问题。 几个简单的步骤解决了我的问题: 我使用命令创建了一个示例项目: react-native init ReactProject1 解 修复是帮助local-cli \ runAndroid \ adb.js找到adb.exe,方法与local-cli \ runAndroid \ runAndroid.js相同: 在projectname下找到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'); 在做了上面的替换之后,只需在你的cmd中运行react-native run-android,它会捆绑apk,并首先尝试在你的设备中本地安装js bundle。 (获得成功)

sit_id

赞同来自:

刚收到这个错误。这是我要解决的问题: 我选择了Dismiss,进入Developer菜单,然后是Dev Settings, 选择Debug server host & port for device,我添加了我的计算机IP地址和端口:192.168.0.xx:8xxx,使用开发机器分配的IP地址在您的wifi网络上。端口通常是:8081 一旦我这样做,一切顺利。此外,当你在开发菜单中时,记得选择Enable Live ReloadDebug JS Remotely,它会让你的生活变得更容易调试。

lenim

赞同来自:

我最终不得不打开我正在使用的端口(默认为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中的开发服务器即可。如果它没有响应,那么这可能就是你所需要的。如果它确实响应,那么这对你没有帮助。