为什么 Expo Android 模拟器不显示应用程序?

Why Doesn't Expo Android Emulator Show App?

我是 Expo 的新手,我正在尝试 运行 使用 yarn android 的 React Native 应用程序。 (该应用程序只是使用 expo init my-project 创建的基本应用程序。)但是,虽然该命令可以很好地启动模拟器,但我所看到的只是模拟设备——该应用程序从未出现过。如果我在等待很长时间后关闭模拟器,终端会说模拟器在加载完成之前就关闭了。

这是终端在模拟器启动前显示的内容:

这是模拟器启动后的样子:

如果我最终关闭模拟器,终端会显示以下内容:

下面是如果我让模拟器 运行 直到它尝试加载应用程序超时的情况:

您知道为什么应用程序永远不会加载以及如何让它加载吗?如果我 运行 yarn web,应用程序在浏览器中加载正常,所以我知道这不是应用程序本身的问题。

  • 执行:
expo start

生成二维码

  • 从 Play 商店在设备上下载 ExpoGo。需要 Play 商店 android 模拟器版本和 google 使用 Play 商店的帐户。
  • 扫描二维码,应用程序加载到设备上或在执行expo start后打开的网页中点击android设备上的打开。

Expo 在线说明/终端输出中缺少一些步骤。除非满足以下条件,否则创建项目后不能立即跳转yarn android

  • Expo Go 应用已安装在您的 emulator/simulator

如果您没有安装该应用程序,命令 yarn android(调用 expo start --android 作为真正的命令)将失败并出现超时错误。

您可以使用以下命令通过命令行安装 Expo Go(只要您已 cd 进入您的项目):

  • expo client:install:android [为 Android]
  • expo client:install:ios [为 iOS]

但是,除非您已经进入 emulator/simulator 并登录到您的 Play 商店/应用程序,否则该命令也会失败(出现超时错误)商店。

因此,如果您尝试 运行 在一个新的模拟器上进行 Expo(以前从未有过 运行),您的步骤必须是:

  1. 打开你的模拟器。导航至其 Play/App 商店并登录您的帐户
  2. 打开终端。使用 expo init my_project_name
  3. 创建一个 Expo 项目
  4. cd 进入您的项目
  5. 使用命令 expo client:install:androidexpo client:install:ios
  6. 安装 Expo Go
  7. 运行 您的应用使用 yarn androidyarn ios(或者 expo start --androidexpo start --ios,如果您没有安装 yarn)

这样做,一切都会正常!

注意:发生所有这些之后我看到的另一个弹出错误是模拟器本身在尝试加载应用程序时出现 Network Response Timed Out。如果在第 5 步之后出现该错误,请执行:

  1. 使用 Ctrl+C
  2. 取消当前的 运行 尝试
  3. --tunnel 附加到您原来的 运行 命令,然后重试 (例如 yarn android --tunnel)。 (密切关注终端,您可能会看到类似于以下内容的内容 The package @expo/ngrok@^4.1.0 is required to use tunnels, would you like to install it globally? 只需键入 yes 或点击 Enter 如果“是”已经存在。)请参阅此 有关 --tunnel 解决方案和几个备选方案的更多信息(问题很可能是由于防火墙行为引起的)