为啥 React-Native 无法在与 Expo 的 Android 连接上启动项目?

Posted

技术标签:

【中文标题】为啥 React-Native 无法在与 Expo 的 Android 连接上启动项目?【英文标题】:Why React-Native Couldn't start project on Android connection with Expo?为什么 React-Native 无法在与 Expo 的 Android 连接上启动项目? 【发布时间】:2021-07-14 19:58:09 【问题描述】:

无法在 android 上启动项目。

错误:没有找到连接安卓的设备,没有模拟器可以自动启动。

请连接设备或创建模拟器 (https://docs.expo.io/workflow/android-studio-emulator)。

然后按照此处的说明启用 USB 调试:

https://developer.android.com/studio/run/device.html#developer-device-options。如果您使用 Genymotion,请转到 Settings -> ADB,选择“Use custom Android SDK tools”,并将其指向您的 Android SDK 目录。

【问题讨论】:

您能告诉我们您是如何安装 android studio 的吗?谢谢 【参考方案1】:

为了运行您的React Native 应用程序,您首先需要单独运行一个模拟器。它不会像原生 Android Studio 构建那样自动启动模拟器。

使用this 教程创建AVD

记下您的 AVD 名称,如果您要在没有 Android Studio 的情况下运行它。

Command Prompt 窗口中运行以下代码以在没有Android Studio 的情况下启动模拟器。假设您已将 SDK 安装在默认位置,否则将其更改为您的位置。

cd C:\Users\%USERNAME%\AppData\Local\Android\Sdk\emulator
emulator -avd Pixel_2_API_30

Pixel_2_API_30AVD 的名称,因此请将其更改为您的名称。

Mac 版 (关注this 文章)

假设您的 Android SDK 已安装到默认位置……

将模拟器导出到您的 PATH。

echo 'export PATH=$PATH:~/Library/Android/sdk/emulator/' >> ~/.bash_profile

从源代码重新加载您的终端。

source ~/.bash_profile

现在您可以显示您已经创建的所有模拟器。

emulator -list-avds

您可以通过键入 emulator 然后 @ 来运行它们中的任何一个。 因此,如果您的其中一台设备名为“MyPixelDevice”,您将像这样运行它

emulator @MyPixelDevice

一旦您的模拟器运行,您就可以按照this 设置指南中的说明运行您的React Native 构建。

【讨论】:

感谢您的完整回答。但我的 cpu 不支持 VT 技术,因此我无法创建 AVD。 我的 cpu 不支持 VT,我应该更换它。这是我的 CPU:型号:37 型号名称:Intel(R) Pentium(R) CPU P6200 @ 2.13GHz Intel® Virtualization Technology (VT-x):否 如何在mac上启动模拟器? @ObaApi 我用mac信息编辑了我的答案。还为此链接了原始文章,以便您在需要时也可以浏览。

以上是关于为啥 React-Native 无法在与 Expo 的 Android 连接上启动项目?的主要内容,如果未能解决你的问题,请参考以下文章

无法将 babel-plugin-module-resolver 与 expo 和 react-native 一起使用

React-Native Expo,Facebook 登录无法在 Android 设备上运行

无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中

通过 expo 运行 react-native 项目 web 版本的 web 版本时出错。消息是 - 无法编译 /Libraries/StyleSheet/processColor.js

未找到模块:错误:无法解析“../aws-exports”(React-Native Expo Web)

React-Native Expo 应用程序突然无法运行,因为 Invariant Violation: 'main' has not been registered