尝试在Android 4.4.2上创建react-native项目时出现此错误屏幕
并且找不到任何解决方法。我尝试重新启动打包程序,重新连接设备,甚至重新安装react native并启动新项目。在6.0.0及更高版本上,它可以正常工作。
尝试在Android 4.4.2上创建react-native项目时出现此错误屏幕
并且找不到任何解决方法。我尝试重新启动打包程序,重新连接设备,甚至重新安装react native并启动新项目。在6.0.0及更高版本上,它可以正常工作。
Answers:
一个可能的解决方案是,您很可能不首先捆绑应用程序,执行以下步骤,然后将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
让我知道是否可以解决您的问题
编辑:
您可以将其作为脚本自动化将其放到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/"
},
或如前所述,但在大多数情况下,上面的方法更健壮
我也遇到了这个问题。我所做的就是强行杀死设备上的应用程序,然后打开另一个控制台并运行
react-native start
然后我从设备上再次打开该应用,它又开始工作了。
编辑:如果您正在通过USB使用android设备并拔掉它,或者您的计算机进入了睡眠状态,则可能必须先运行
adb reverse tcp:8081 tcp:8081
react-native run-android
。react-native start
当我在工作时,从来不需要使用react-native run-ios
adb reverse tcp:8081 tcp:8081
对我来说本身就足够了。非常感谢!
刚收到此错误。这是我要解决的问题:选择Dismiss
,进入“开发人员”菜单,然后Dev Settings
选择Debug server host & port for device
,我添加了计算机的IP地址和端口:192.168.0.xx:8xxx
,并使用您的wifi网络上分配了IP地址的任何开发人员机器。该端口通常是:8081
一旦我做完了,一切就顺利了。另外,在开发菜单中时,请记住选择Enable Live Reload
和Debug JS Remotely
,这使调试时的工作变得轻松得多。
ifconfig
,然后找到inet addr:xxx.xxx.xxx.xxx,其中xxx *是您的开发人员机器ip
这就是对我有用的方法(尝试了所有其他解决方案之后……):
adb reverse tcp:8081 tcp:8081
在里面跑\Android\sdk\platform-tools
react-native run-android
尝试运行该命令,并且依赖于Windows环境变量path
来包含platform-tools
路径。
当我第一次使用物理设备开始使用React Native时,我也得到了这个。在这种情况下,您需要做一些额外的事情才能上手。您必须在React Native的“开发设置”中输入有关您的开发机器的一些信息。
看到错误时,请摇动设备。将会弹出一个对话框,最后一个选项是“ Dev Settings”。选择“调试设备的服务器热和端口”,然后输入您的本地IP和使用的端口(通常为8081)。
请参阅https://facebook.github.io/react-native/docs/running-on-device-android.html的最后一段
如果没有适合您的解决方案,请尝试以下操作:
我发现我的<root>/android/app/build/intermediates/assets/debug
文件夹为空,运行cd android && ./gradlew assembleDebug
时未创建所需的文件,这些文件随后由我们的react native应用程序中的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
我的应用再次开始工作。
将会调试更多,并将实际更新失败的内容。
在单独的终端中,将设备连接到计算机,然后运行以下命令:
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
由于您使用的是Android <5.0,因此无法使用默认adb reverse
方法,但是Facebook添加了正式文档以通过支持您的版本的Wi-Fi连接到开发服务器。引用MacOS的说明,但它们也适用于Linux和Windows:
方法2:通过Wi-Fi连接
您也可以通过Wi-Fi连接到开发服务器。首先,您需要使用USB电缆在您的设备上安装该应用,但是一旦完成,您就可以按照以下说明进行无线调试。在继续操作之前,您将需要开发计算机的当前IP地址。
您可以在系统偏好设置→网络中找到IP地址。
确保您的笔记本电脑和手机位于同一Wi-Fi网络上。在设备上打开您的React Native应用程序。您会看到一个红色屏幕,并显示一个错误。还行吧。以下步骤将解决此问题。开启应用程式内开发人员选单。转到开发设置→调试设备的服务器主机。输入机器的IP地址和本地开发服务器的端口(例如10.0.1.1:8081)。返回到“开发人员”菜单,然后选择“重新加载JS”。
它“随机”地遇到了这个问题,花了我一些时间才意识到我的情况出了什么问题。
在我更新到React-native-cli 2.0.1之后,有一条消息输出到日志,这有助于我挖掘并找到根本原因:
无法识别JS服务器,继续构建...
在研究了一些链接之后,我发现了一个链接:
由于我在Windows上,因此我运行netstat并发现我的VLC播放器也在端口8081上运行,从而导致了问题。因此,就我而言,如果我在本机服务器之前启动vlc服务器,它将无法正常工作。
在以前版本的react-native-cli上未输出相同的日志消息,从而使其静默失败。
TL,DR:检查程序包管理器是否在同一端口上运行(默认为8081)
我的问题是我浏览了AndroidManifest.xml
文件并删除了该行
<uses-permission android:name="android.permission.INTERNET" />
因为我的应用程序不需要互联网。但是,react native调试应用程序确实需要Internet访问(才能访问打包程序)。:)
尝试清理缓存
react-native开始--reset-cache
运行时,请检查是否有以下错误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)之后,问题已得到修复
对我来说,我启用了并同步功能。立即关闭它可以解决问题。可能需要关闭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
您可以测试一下是否确实需要执行此操作。只需在Android设备上的Chrome中导航到您的开发服务器即可。如果它没有响应,则可能正是您所需要的。如果它确实响应,那么这将对您没有帮助。
我的方式是:
react-native start
之后,在您的设备中使用:
click to Reload.
在控制台中看到react-native,它将获取js bundle数据。
我有同样的问题。当我确实通过create-react-native-app AwesomeProject创建了一个react native项目时,它在手机上的Expo应用程序中运行良好。之后,我想使用该快速入门项目来开发我的项目,并且遇到与您相同的错误。
经过研究后,我发现最好使用react-native init AwesomeProject开始新项目(所有设置都在react native文档中),然后运行以下命令:
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
它应该工作正常。至少对我有用。
当我们开始响应本机项目#1时,我们大多数人第一次遇到此问题。
几个简单的步骤解决了我的问题:
我使用命令创建了一个示例项目:
react-native init ReactProject1
解
解决方法是帮助local-cli\runAndroid\adb.js
找到adb.exe
,方法一样local-cli\runAndroid\runAndroid.js
:
在项目名称下查找替换语句(无论您输入的是什么)\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捆绑包。(获得成功)
只需重新启动系统或完整的捆绑软件,问题就可以得到解决。
react-native run-android
?在这种情况下,我遇到了奇怪的错误,因为在调试模式下,不需要JS bundle afaik,因为它应该连接到软件包服务器。