尝试在Android 4.4.2上创建一个反应原生项目,我得到了这个错误屏幕
却找不到解决的办法。我尝试重新启动packager,重新连接设备,甚至重新安装react native并开始新的项目。在6.0.0和更高版本上,它工作得很好。
尝试在Android 4.4.2上创建一个反应原生项目,我得到了这个错误屏幕
却找不到解决的办法。我尝试重新启动packager,重新连接设备,甚至重新安装react native并开始新的项目。在6.0.0和更高版本上,它工作得很好。
对此,一个可能的解决方案是,您很可能不首先捆绑应用程序,而是执行以下步骤,然后将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"
(如果文件夹资产不存在,创建它)
然后从项目根运行
$> (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 =谷歌Inc.:谷歌api:23
to
target =谷歌Inc.:谷歌api:24
因为我在SDK管理器中看到Android 6。X的api级别为24。
我也遇到过这个问题。 我所做的就是强制关闭我设备上的应用,然后打开另一个控制台并运行
react-native start
然后我从设备上再次打开应用程序,它又开始工作了。
编辑:如果你通过USB使用android设备,并且拔掉了USB插头,或者你的电脑处于休眠状态,你可能需要先运行
adb reverse tcp:8081 tcp:8081
刚刚得到这个错误。以下是我所做的调整: 我选择解散,进入开发人员菜单,然后是开发人员设置, 为设备选择调试服务器主机和端口,我添加了我的计算机的IP地址和端口:192.168.0。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。端口通常为:8081
一旦我这样做了,一切都很顺利。此外,当你在开发菜单中,记得选择启用Live Reload和Debug JS远程,它会让你的调试工作更加容易。
这对我来说是有效的(在尝试了我发现的所有其他解决方案之后…):
在\Android\sdk\platform-tools中运行adb reverse tcp:8081 tcp:8081
如果这些方法都不适合你,试试下面的方法:
我发现我的<根>/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
在运行这些命令后,我发现在这个目录下有两个bundle文件<root>/android/app/build/intermediates/assets/debug
然后我再次运行cd android && ./gradlew installDebug我的应用程序重新开始工作。
将调试更多,并将更新实际上失败的内容。
当我第一次开始使用React Native时,我也得到了这个,使用物理设备。如果是这样的话,你需要在开始之前做一些额外的事情。你必须在React Native的“Dev Settings”中输入一些关于你的开发机器的信息。
当你看到错误时,摇动你的设备。一个对话框将弹出,最后一个选项将是“开发设置”。选择“调试服务器热和设备端口”,输入您的本地IP和使用的端口(通常是8081)。
见https://facebook.github.io/react-native/docs/running-on-device-android.html的最后一段
对我来说,这是因为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反向方法,但是Facebook已经添加了官方文档来通过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.
它“随机”出现了这个问题,我花了一段时间才意识到我的场景中哪里出了问题。
在我更新到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文件无关。
我的问题是,我通过我的AndroidManifest.xml文件,并删除了行
< uses-permission android: name = " android.permission。互联网" / >
因为我的应用程序不需要网络。然而,react本机调试应用程序确实需要互联网访问(访问packager)。:)
虽然有点晚,但这对我来说真的很管用。
react-native运行android。 react-native开始。
第一个命令将为android构建apk,并将其部署到连接的设备上。当你打开应用程序,它会显示红色屏幕错误。然后运行第二个命令,该命令将运行packager并为您构建应用程序包。
当我们开始react native项目#1时,大多数人都是第一次面对这个问题。
几个简单的步骤解决了我的问题:
我使用命令创建了一个示例项目:
react-native init ReactProject1
解决方案
修复是帮助local-cli\runAndroid\adb.js找到adb.exe,方法与local-cli\runAndroid\runAndroid.js相同:
\node_modules\react-native\local-cli\runAndroid . find replace statement under projectname(不管你给了什么
替换:
const devicesResult = child_process.execSync('adb devices');
By:
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应用程序中工作得很好。在那之后,我想用那个快速启动项目来开发我的项目,得到了和你一样的错误。
经过一些研究,我发现最好用react-native init AwesomeProject启动新项目(所有设置都在react native docs中)然后运行以下命令:
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添加到环境变量中
我也遇到了同样的问题,但这是我自己犯的一个愚蠢的错误……
从Android工作室,我从应用程序项目而不是根项目启动installDebug/installRelease gradle脚本。
当你运行react-native run-android时,请检查是否有以下错误: adb服务器版本(XX)不匹配此客户端(XX);杀死……
在这种情况下,确保/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本地服务器。 转到代码编辑器终端,输入“react-native run-android”。
你可以开始了!
“npm 开始”
我刚刚关闭了终端机,开了一个新的。通过cd命令进入项目位置。然后简单地输入- "npm start"。然后'r'表示重新加载。一切都消失了。我认为每个人都应该马上尝试一下。
有人建议用下面这个
react-native运行android React-native start -reset-cache,
但在我的例子中,我只是关闭cli命令提示窗口,并使用以下命令。
npx react-native run-android
它运行得很好。
在设置中,转到隐私>本地网络,查看请求访问的每个应用程序的列表。 我通过允许我的应用程序访问本地网络来解决这个问题。 (试图从我的mac m1上运行在同一wifi的实体iPhone设备上)。
源