尝试在Android 4.4.2上创建一个react-native项目我得到了这个错误屏幕
并找不到任何解决方法。我尝试重新启动打包器,重新连接设备,甚至重新安装反应原生和启动新项目。在6.0.0及更高版本上,它可以正常工作。
答案 0 :(得分:141)
可能的解决方案是,您很可能不首先捆绑您的应用程序,执行以下步骤,然后将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
如果这可以解决您的问题,请告诉我
修改强>:
你可以简单地将它作为脚本自动化到你的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/"
},
或如提到的卷曲等价物,但对于大多数情况,上面的内容更加健壮
答案 1 :(得分:107)
我也遇到过这个问题。 我做的是强行杀死我的设备上的应用程序,然后我打开另一个控制台并运行
react-native start
然后我再次从我的设备打开应用程序,它又开始工作了。
编辑:如果您通过USB使用Android设备并拔掉它或者您的计算机进入睡眠状态,您可能必须先运行
adb reverse tcp:8081 tcp:8081
答案 2 :(得分:27)
刚收到此错误。这就是我要解决的问题:
我选择Dismiss
,进入开发人员菜单,然后Dev Settings
,
选择Debug server host & port for device
,我添加了我的计算机IP地址和端口:192.168.0.xx:8xxx
,使用开发机器分配的IP地址在您的wifi网络上的任何内容。端口通常是:8081
一旦我这样做,一切顺利。此外,当您在开发菜单中时,请记住选择Enable Live Reload
和Debug JS Remotely
,这样可以让您在调试时更加轻松。
答案 3 :(得分:22)
这对我有用(在尝试了我找到的所有其他解决方案之后......):
在adb reverse tcp:8081 tcp:8081
\Android\sdk\platform-tools
答案 4 :(得分:16)
当我第一次使用物理设备启动React Native时,我也得到了这个。如果是这种情况,您需要在开始之前做一些额外的事情。您必须在“开发设置”中输入有关开发计算机的一些信息。 React Native。
当您看到错误时,摇动您的设备。将弹出一个对话框,最后一个选项将是“开发设置”'。选择' Debug server hot&设备端口'并输入您的本地IP和使用的端口(通常为8081)。
请参阅https://facebook.github.io/react-native/docs/running-on-device-android.html
的最后一段答案 5 :(得分:7)
如果解决方案都不适合您,请尝试以下方法:
我发现我的<root>/android/app/build/intermediates/assets/debug
文件夹是空的,并且通过运行cd android && ./gradlew assembleDebug
并没有创建所需的文件,后来我们的本机应用程序中的javascript线程使用这些文件。
我手动运行了以下命令,调试构建命令应该在理想情况下创建。
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
我的应用程序又开始工作了。
将调试更多并更新实际失败的内容。
答案 6 :(得分:7)
在单独的终端中,将您的设备连接到计算机并运行以下命令:
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
答案 7 :(得分:5)
react-native run-android
答案 8 :(得分:5)
现在为时已晚,但这对我有用。
react-native run-android
。react-native start
。第一个命令将为android构建apk
并将其部署在您的设备上(如果已连接)。当您打开应用程序时,它将显示错误的红色屏幕。然后运行第二个命令,它将运行packager并为您构建应用程序包。
答案 9 :(得分:5)
答案 10 :(得分:5)
在终端中尝试此命令,然后重新加载。它对我有用
adb reverse tcp:8081 tcp:8081
答案 11 :(得分:3)
对我来说,这是因为adb
不在PATH
。它位于/Users/man/Library/Android/sdk/platform-tools
对我而言,它可能在其他地方适合您,但无论如何,找到它并将其添加到您的路径以查看是否有帮助。
答案 12 :(得分:3)
由于您使用的是Android&lt; 5.0您无法使用默认的SELECT ColumnA
FROM Table1
WHERE ColumnA <> ColumnB
AND ABS(ColumnA - ColumnB) BETWEEN 0 AND 10
方法,但Facebook已添加official documentation to connect to the development server via Wi-Fi,这将支持您的版本。引用MacOS的说明,但它们也适用于Linux和Windows:
方法2:通过Wi-Fi连接
您还可以通过Wi-Fi连接到开发服务器。您首先需要使用USB电缆在设备上安装应用程序,但是一旦完成,您可以按照这些说明进行无线调试。在继续之前,您需要开发机器的当前IP地址。
您可以在系统偏好设置→网络中找到IP地址。
确保您的笔记本电脑和手机位于同一Wi-Fi网络上。 在您的设备上打开您的React Native应用程序。 你会看到一个错误的红色屏幕。还行吧。以下步骤将解决这个问题。 打开应用内开发者菜单。 转到开发设置→调试服务器主机以获取设备。 键入计算机的IP地址和本地开发服务器的端口(例如10.0.1.1:8081)。 返回Developer菜单并选择Reload JS。
答案 13 :(得分:3)
它有“随机”这个问题,并花了我一些时间来意识到我的场景中出了什么问题。
在我更新到React-native-cli 2.0.1后,有一条消息输出到日志,帮助我挖掘并找到根本原因:
JS服务器无法识别,继续构建...
在研究了一些链接后,我发现了这个:
由于我在Windows上,我运行netstat并发现我的VLC播放器也在端口8081上运行导致问题。 因此,在我的情况下,如果我在反应原生服务器之前启动vlc服务器它将无法工作。
这个相同的日志消息在以前版本的react-native-cli上没有输出,导致它无声地失败。
TL,DR:检查是否有与包管理器在同一端口上运行的任何内容(默认为8081)
答案 14 :(得分:2)
我的问题是我查看了我的AndroidManifest.xml
文件并删除了该行
<uses-permission android:name="android.permission.INTERNET" />
因为我的应用不需要互联网。但是,react本机调试应用程序确实需要Internet访问(访问打包器)Whoops。 :)
答案 15 :(得分:1)
对我来说问题是'adb'无法识别 - 请检查this回答。
要解决此问题,请将C:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools添加到环境变量
答案 16 :(得分:1)
我的方式是:
react-native start
之后在您的设备中使用:
click to Reload.
在控制台react-native中查看,它将获取js包数据。
答案 17 :(得分:1)
我遇到了同样的问题。当我通过 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
它应该工作得很好。至少它对我有用。
答案 18 :(得分:1)
当我们开始对原生项目#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(&#39; adb devices&#39;);
按强>
const devicesResult = child_process.execSync((process.env.ANDROID_HOME?process.env.ANDROID_HOME +&#39; / platform-tools /&#39;:&#39;&#39;)+&#39 ; adb devices&#39;);
完成上述更换后,只需在你的cmd中运行react-native run-android,它会捆绑apk,并首先尝试在你的设备中本地安装js bundle。 (获得成功)
答案 19 :(得分:1)
运行react-native run-android
时,请检查您是否有以下错误:
adb server version (XX) doesn't match this client (XX); killing...
在这种情况下,请确保/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)
答案 20 :(得分:1)
我最终不得不打开我正在使用的端口(默认为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中的开发服务器即可。如果它没有响应,那么这可能就是你所需要的。如果确实有回应,那么这对你没有帮助。
答案 21 :(得分:1)
对我来说,我启用了侧面同步和激活。关闭它会立即使问题消失。可能值得关闭PC和设备之间的这种或任何其他通信
答案 22 :(得分:1)
我也得到了这个错误,真的很困惑。因为所有答案都不起作用。 在将 adb 添加到路径之后。
答案 23 :(得分:0)
我发现我还需要添加一个
react-native upgrade
让应用程序正常运行。
答案 24 :(得分:0)
我尝试了上面/下面的许多建议,但最终,我遇到的问题是一个带守望者的权限,它是使用早先的自制程序安装的。如果您在尝试使用模拟器时查看终端消息,并且在模拟器上遇到关于守望者的“权限被拒绝”错误以及“无法获取BatchedBridge”消息,请执行以下操作:
转到/Users/<username>/Library/LaunchAgents
目录并更改权限设置,以便用户可以读写。这与你是否真的有com.github.facebook.watchman.plist
文件无关。
答案 25 :(得分:0)
尝试清理缓存
react-native start --reset-cache
答案 26 :(得分:0)
我遇到了同样的问题,但这是我自己的一个愚蠢错误......
从 Android工作室,我从installDebug/installRelease
项目而不是app
项目发布了root
gradle脚本。
答案 27 :(得分:0)
最简单的方式!
你很高兴!
答案 28 :(得分:0)
只需重新启动系统或完整的捆绑软件,问题就可能得到解决。
答案 29 :(得分:0)
“ npm开始”
我刚刚关闭了终端并打开了一个新终端。通过cd命令转到项目位置。然后只需键入-“ npm start”。然后“ r”重新加载。一切都消失了。我认为每个人都应该立即尝试一下。
答案 30 :(得分:0)
请确保将您的App组件导出到index.js。
答案 31 :(得分:0)
有人建议以下一个
react-native运行Android react-native开始--reset-cache,
但就我而言,我只是关闭cli命令提示符窗口并使用以下内容。
npx react-native run-android
效果很好。
答案 32 :(得分:-3)
解决方案: 在“react-native”目录下: 运行命令“./gradlew:示例:UIExplorer:android:app:installDebug”成功后, 成功运行commnad“ ./ packager / packager.sh ”。 然后在模拟器或设备中单击“UIExplorer App”