Screenshot from Android phone running the app
我正在研究一个本机反应项目,我通过USB调试和命令" react-native运行android "在我的Android手机上运行它。
它工作得很好但是现在即使构建成功,应用也会卡在白色屏幕上#34; 从localhost加载:8081 "。没有对任何应用文件进行任何更改。
我尝试运行react-native演示应用程序(使用react-native init),我仍然面临同样的问题。
我试过的解决方案但问题仍然存在:
这是命令行中显示的内容:
lenovo @ lenovo-Lenovo-ideapad-500S-14ISK:〜/ IRMSold $ react-native run-android扫描文件夹中的符号链接 / home / lenovo / IRMSold / node_modules(6ms)JS服务器已经运行。 在设备上构建和安装应用程序(cd android&& ./gradlew installDebug)...
配置项目:app警告:配置'编译'已经过时了 并已被“实施”所取代。和' api'。这将是 在2018年底删除。有关更多信息,请参阅: http://d.android.com/r/tools/update-dependency-configurations.html
配置项目:react-native-google-signin警告:配置 '编译'已经过时,已被“实施”所取代。和 ' API&#39 ;.它将在2018年底删除。欲了解更多信息 看到: http://d.android.com/r/tools/update-dependency-configurations.html 警告:指定的Android SDK Build Tools版本(23.0.3)是 忽略,因为它低于最低支持版本(27.0.3) Android Gradle插件3.1.1。 Android SDK Build Tools 27.0.3将是 用过的。要取消此警告,请删除" buildToolsVersion' 23.0.3'" 从您的build.gradle文件,作为每个版本的Android Gradle 插件现在有一个默认版本的构建工具。
配置项目:react-native-vector-icons警告:配置 '编译'已经过时,已被“实施”所取代。和 ' API&#39 ;.它将在2018年底删除。欲了解更多信息 看到: http://d.android.com/r/tools/update-dependency-configurations.html 警告:指定的Android SDK Build Tools版本(26.0.1)是 忽略,因为它低于最低支持版本(27.0.3) Android Gradle插件3.1.1。 Android SDK Build Tools 27.0.3将是 用过的。要取消此警告,请删除" buildToolsVersion' 26.0.1'" 从您的build.gradle文件,作为每个版本的Android Gradle 插件现在有一个默认版本的构建工具。
任务:app:installDebug安装APK' app-debug.apk'关于联想 X3a40 - 6.0.1' for app:debug安装在1台设备上。
在13s内成功完成66个可操作的任务:1个已执行,65个是最新的 运行adb -s 567bf688反向tcp:8081 tcp:8081启动应用程序 567bf688(adb -s 567bf688 shell启动-n com.irms / com.irms.MainActivity)...开始:意图{ cmp = com.irms / .MainActivity}
请帮助我,因为我尝试了其他可以在网上找到的修复方法。
答案 0 :(得分:3)
就我而言,问题是由于文件句柄限制所致。一次,我通过以下命令刷新限制,应用程序开始运行,没有任何问题。
echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_watches && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_queued_events && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_instances && watchman shutdown-server
我正在使用Ubuntu 18.04。
答案 1 :(得分:1)
我的问题出在Watchman上,要识别它有些棘手,因为React Native高兴地捆绑了我的应用程序,然后转移并启动了APK!它不断引发关于/tmp/name-state
(其中name
是您的名字)权限的错误,因此我不得不chmod 0700 /tmp/name-state
(以减少对该目录的权限)然后创建一个新应用{{1 }}之后,我从另一个终端再次启动Metro(确保您位于新项目目录中)并运行npm react-native init appName
。然后我可以通过npm react-native start
启动appName
。
答案 2 :(得分:0)
你试过这个吗?
警告:指定的Android SDK Build Tools版本(23.0.3)将被忽略,因为它低于Android Gradle Plugin 3.1.1的最低支持版本(27.0.3)。将使用Android SDK Build Tools 27.0.3。要取消此警告,从build.gradle文件中删除“buildToolsVersion '23 .0.3'”,因为每个版本的Android Gradle插件现在都有默认版本的构建工具。
答案 3 :(得分:0)
您应该等待软件包服务器的状态完美运行。直到“加载依赖关系图完成”。如果不是这样,您将被困在从本地主机8081加载。
答案 4 :(得分:0)
也许您的8081端口已在使用中。
在这里尝试第一个解决方案 https://facebook.github.io/react-native/docs/troubleshooting
$ sudo lsof -i:8081 $ kill -9
答案 5 :(得分:0)
检查设备是否具有通过使用转发的计算机8081端口
adb reverse --list
如果没有任何结果,您应该 创建反向套接字连接,以便您的设备可以访问Metro服务器
adb reverse tcp:8081 tcp:8081
由于某种原因,它仍然无法正常工作,因此我在此窗口中按了ENTER键(Metro Bundler Window) 然后等到达到100%,然后该应用开始在我的手机上显示。
答案 6 :(得分:0)
我想分享我的经验
在Android模拟器react-native run-android
上,加载时冻结。虽然同样在iOS模拟器上运行。就我而言,我在iOS模拟器上远程启用了调试js,发现我已经将字符串值提供给了Boolean属性。一旦我更正了它在android模拟器上运行的问题。
经验教训:Android构建并不是那么宽容,因此可以在ios上运行并修复调试器上出现的任何错误,这些错误可能导致在加载时冻结模拟器。从8081
答案 7 :(得分:0)
在某些情况下,您无法连接到调试器:
设备和主机肯定应该在同一网络上。将您的移动设备连接到PC的网络,或者将PC连接到移动热点。 在某些情况下,在实际设备上,您可能需要运行adbe reverse命令:
adb reverse tcp:8081 tcp:8081
卸载应用程序,停止打包程序,然后使用重置缓存选项重新启动打包程序:
npm start -- --reset-cache
然后,在设备上再次运行它。
摇动设备,然后在菜单中选择开发者设置
在“设备的调试服务器主机和端口”部分中,通过端口8081输入您的pc ip地址,如下所示:192.168.1.3:8081
答案 8 :(得分:0)
杀死已经在8081端口上运行的进程对我来说很有效
在Windows中
netstat -ano | findstr:8081
tskill TypeyourPID
谢谢@luttius
答案 9 :(得分:0)
我每天都被卡住,问题与 Watchman
权限有关。查看经过验证的解决方案,我希望这对某人有帮助