如何在"react-native run-ios"停止工作时恢复功能模拟器



昨天,我正在开发我的应用程序,一切都很好。 我发现了两个命令,可以可靠地启动远程调试器并运行 iOS 模拟器。 这两个命令已经可靠地工作了大约 48 小时,我很高兴将这些命令保存在桌面上的文本文件中,以便于访问:

open "rndebugger://set-debugger-loc?host=localhost&port=8081"
react-native run-ios

然后我犯了一个可怕的错误:我睡着了。当我醒来时,这些命令不再起作用。第一个命令启动调试器,但第二个命令("react-native run-ios")生成各种结果,没有帮助(请参阅下面的注释)。充其量,模拟器启动,但我的应用程序是白屏。

在尝试了各种事情(列出进程以查看是否有要杀死的东西,多次重新启动机器等)之后,我决定核弹我的应用程序并重新开始。因此,我存档了我的应用程序,并使用"创建-反应-本机应用程序AwesomeProject"等创建了一个新应用程序。我切换到项目目录,然后几乎运行"npm start"(如文档建议的那样),但终端输出建议"yarn start",所以我选择了它。这给了我一个博览会的二维码,但我仍然希望屏幕上的模拟器。所以我回到了大约 48 小时内非常可靠的命令:

open "rndebugger://set-debugger-loc?host=localhost&port=8081"
react-native run-ios

但它们不再起作用了。 充其量,我可以在屏幕上看到模拟器,但如果我在模拟器中导航到我的应用程序,则它是白屏。 我尝试了模拟器的硬件菜单中的"擦除所有内容和设置",退出模拟器等。

我还能再次在屏幕上查看模拟器吗? 我需要卸载 expo 才能恢复屏幕上的模拟器吗? 我应该不再睡觉了吗? 我能达到早上醒来,快速启动模拟器,然后成为一名应用程序开发人员的地步吗? 我是否应该放弃模拟器并调整我的工作流程以使用物理设备作为模拟器?

编辑:澄清一下,各种结果包括:模拟器没有出现在屏幕上;模拟器出现并打开到iPhone的桌面,但是当我导航到应用程序并打开它时,它是一个白屏;模拟器出现和应用程序启动没有我导航到它,但它是一个白屏。

编辑2:这是另一个数据点。 刚才我再次删除了我的应用程序,并使用创建-反应-本机-应用程序创建了一个新应用程序。 然后我切换到项目目录并运行 npm start。 然后我得到一个二维码,并确认我可以使用 expo 在我的设备中打开该应用程序。 我在我的终端中看到此错误,这可能与此问题无关:

2:31:11 PM: Error: './assets/icons/icon.png' could not be found, because './assets/icons' is not a subdirectory of any of the roots  ('/Users/me/Apps/MyAwesomeApp')
2:31:11 PM:     at /Users/me/Apps/MyAwesomeApp/node_modules/metro/src/Assets/index.js:192:11
2:31:11 PM:     at Generator.next (<anonymous>)
2:31:11 PM:     at step (/Users/me/Apps/MyAwesomeApp/node_modules/metro/src/Assets/index.js:329:347)
2:31:11 PM:     at /Users/me/Apps/MyAwesomeApp/node_modules/metro/src/Assets/index.js:329:507
2:31:11 PM:     at <anonymous>

所以我有一个工作的应用程序,可以用我的设备测试它,但在我的显示器上安装模拟器会很好。 然而,"react-native run-ios"并没有给我这个。

(唉,下面的这个过程不可靠。 它曾经工作过。 然后我尝试将打开调试器集成到此过程。 在发布这个StackOverflow答案后不久,我运行了"打开"rndebugger://set-debugger-loc?host=localhost&port=8081"。 这似乎破坏了模拟器,尽管该应用程序仍然可以在我的设备中运行。 我现在再次试图弄清楚如何让模拟器工作。 有一会儿,以下内容似乎是正确答案,但它不再有效 - 现在我得到一个"运行时尚未准备好进行调试"红色屏幕。

我发现了一个过程,在这种特殊情况下,模拟器再次工作(更新:它不起作用。 请参阅我在此答案顶部的注释)。我的 Mac 和设备上都有 expo,因此这些说明假设您有 expo 应用程序:

  • 在终端中,使用创建-反应-本机-应用程序创建一个应用程序。 不要苏多。 无需成为根。 只是一个普通用户。
  • 然后,就像 react native 文档所说的那样,切换到项目目录并运行"npm start"。 终端输出建议"纱线开始",但"npm 开始"对我有用。
  • 当世博会二维码出现在终端输出中时,使用它。 也就是说,通过使用世博会应用程序读取 QR 在设备上安装您的应用程序。 然后,我认为我的下一步是打开世博会应用程序,然后点击"转到世博会主页",然后点击我的应用程序将其打开。 应用程序启动得很好。
  • 然后,真正的魔术发生了...我在单独的终端选项卡中切换到项目目录并运行"反应本机运行-ios"。 然后模拟器在我的显示器上打开,我的应用程序立即启动。

因此,似乎我必须先在我的设备上运行该应用程序,然后才能在Mac上打开模拟器。 在我的设备上运行该应用程序似乎得到了一些卡住。

安装 Chrome 浏览器。 世博会希望安装Chrome。 在 Mac OS 中安装 Chrome 后,只要您使用react-native run-ios运行模拟器,就会在 Chrome 中打开远程调试器。

最新更新