在 android 模拟器上运行 react-native

Posted

技术标签:

【中文标题】在 android 模拟器上运行 react-native【英文标题】:Run react-native on android emulator 【发布时间】:2016-11-29 09:08:40 【问题描述】:

我尝试在我的 mac 上的 genymotion android 模拟器上运行 react-native 应用程序。 当我写react-native run-android时,它得到了

Running /usr/local/opt/android-sdk/platform-tools/adb reverse tcp:8081 tcp:8081
error: closed
Could not run adb reverse: Command failed: /usr/local/opt/android-sdk/platform-tools/adb reverse tcp:8081 tcp:8081
Building and installing the app on the device (cd android && ./gradlew installDebug...
Could not install the app on the device, read the error above for details.
Make sure you have an Android emulator running or a device connected and have
set up your Android development environment:
https://facebook.github.io/react-native/docs/android-setup.html
MacBook-Pro-MacBook:ART-CarefulPeople macbook$ 

那我试过了:

    react-native start react-native run-android

同样的结果。

那我试过了:

    react-native bundle --entry-file index.android.js --platform android --bundle-output android/app/src/main/assets/index.android.bundle

    curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

    react-native run-android

同样的结果。

我只试过adb reverse tcp:8081 tcp:8081,上面写着error: closed

当我尝试在 android-sdk 模拟器上运行应用程序时,它会出现上述相同的错误,但没有 error: closed

我可以从 android studio 运行这个应用程序,它可以在 genymotion 上运行。 请告诉我,我应该怎么做才能在 android 模拟器上运行我的应用程序?

【问题讨论】:

adb revese 仅适用于 Android 5.0+ 设备 是的。我不知道那是什么。我刚刚重新创建了项目,一切正常。 我相信,如果您的 Android 手机(假设您有一部)已连接到您的计算机,它可能会尝试在该设备上安装它。如果它已插入,我建议拔掉它,确保您的模拟器正在运行,然后再次尝试 react-native run-android 命令。 【参考方案1】:

我遇到了类似的问题,在花了这么多时间和大量搜索这个问题之后,唯一对我有用的技巧:

    请如图所示安装所需的SDK

Configure Required SDKs

    如果您已经安装了它,那么您必须更新以下 SDK: Android SDK Tool(更新到最新版本) Android SDK Platform-tools(更新到最新版本) Android SDK Build-tools(更新到最新版本) Android Support RepositoryExtra 文件夹下(更新到最新版本) 您必须至少安装与已安装的Android SDK Build-toolsAndroid SDK Platform-tools 版本相同的Android API 版本,如上图Configure Required SDKs 所示。

注意:在 React-native 官方文档中被列为 SDK 要求的 Support Libraries 本地 Maven 存储库现在在 SDK Manager 中被命名为 Android Support Repository。

【讨论】:

朋友们好!如果您喜欢这个答案,请不要忘记投票...谢谢:) 你能解释一下它是如何解决adb reverse tcp:8081 tcp:8081error: closed问题的吗? 这可能是由于您的 android 操作系统版本...adb reverse tcp:8081 tcp:8081 仅适用于操作系统版本 >= 5 的设备【参考方案2】:

在 macOS 上,我设法通过添加以下内容来解决此问题:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

到 ~/.zsh_profile 文件。

然后在终端输入

source $HOME/.zsh_profile

问题是由使用 iTerm2 shell 引起的,因此需要编辑自己的配置,而不是官方文档 https://reactnative.dev/docs/environment-setup 中描述的默认 $HOME/.bash_profile

【讨论】:

【参考方案3】:

React Native(在 Mac OS Big SUR 上)

我被困在这里。但是更新 Android Studio 的环境设置就可以了。

nano ~/.zshrc

粘贴

export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator:$PATH
export PATH=$PATH:$ANDROID_HOME/tools:$PATH
export PATH=$PATH:$ANDROID_HOME/tools/bin:$PATH
export PATH=$PATH:$ANDROID_HOME/platform-tools:$PATH
export JAVA_HOME=$(/usr/libexec/java_home)

control + o 保存 然后enter 然后control + x退出

然后做 source ~/.zshrc编译

杀死运行终端并运行 npx react-native run-android

【讨论】:

【参考方案4】:

每次从 android studio 或在物理设备上运行模拟器时,我都遇到了类似的问题。相反,您可以从命令行快速运行 android 模拟器,

android avd

模拟器运行后,您可以通过adb devices 检查模拟器是否出现。 然后你可以简单地使用 react-native run-android 在模拟器上运行应用程序。

确保您已安装平台工具以便能够使用adb。或者你可以使用

brew install android-platform-tools

【讨论】:

不要 brew 安装命令行工具,它们已被弃用。按照指示使用 Android Studio facebook.github.io/react-native/docs/… 这里更新命令行,用于上面的 brew install android 平台工具。请尝试:brew cask install android-platform-tools android avd 已弃用。使用android list avd【参考方案5】:

您也可以尝试使用“医生”命令。它将解决大多数情况。

npx @react-native-community/cli doctor

【讨论】:

【参考方案6】:

我碰巧有一个打包程序的实例与一个旧项目一起运行(我像往常一样运行 react-native start)。我使用的是 Ubuntu 14.04。所以我所做的是停止该实例并转到我的项目文件夹并在两个不同的控制台选项卡中分别运行这两个命令:

npm start #here I used to run react-native start
react-native run-android

npm start 在我的 package.json 中定义为:

"start": "node_modules/react-native/packager/packager.sh"

我不知道 react-native 是否存在某种令人困惑的东西,但这确实起到了作用。

【讨论】:

【参考方案7】:

在 Windows 10 和 Android Studio 上,您可以在 Android Studio 中进入“设置”中的“文件”->“设置”,然后进入“外观和行为”->“系统设置”->“Android SDK”。 在“SDK 工具”选项卡中处于活动状态:

“Android SDK 构建工具..” “Android 模拟器” “Android SDK 平台工具” “Android SDK 工具”

如果全部安装,那么您可以在 Android Studio 中使用“工具”->“Android”->“AVD 管理器”启动模拟器。 如果模拟器运行你可以试试“react-native run-android”

【讨论】:

【参考方案8】:

遇到了类似的问题。我更新了我的 Genymotion 和我的 android SDK/库/依赖项,似乎一切正常。为了更新我的 SDK,我使用了 android sdk manager ANDROID_SDK_FOLDER/tools/android sdk

【讨论】:

【参考方案9】:

如果没有安装模拟器,那么试试这个命令,(如果安装了自制软件)

brew install android-platform-tools

可能会有帮助。

【讨论】:

【参考方案10】:

就我而言,这是因为 android/gradlew 文件没有执行权限。一旦获得批准,这工作正常

【讨论】:

嘿,你能告诉我如何给 android/gradlew 执行权限【参考方案11】:

试试

brew cask install android-platform-tools adb 反向 tcp:9090 tcp:9090 运行应用程序

【讨论】:

【参考方案12】:

您可能没有永远运行 Android SDK。 所以你可能只需要更新它。 如果您打开 Android Studio 软件,它可能会让您知道并要求为您更新它。否则参考以下链接:Update Android SDK

【讨论】:

【参考方案13】:

就我而言,android/gradlew 文件存在问题。我认为当我们将代码从 Windows 移动到 Mac OS 时会发生这种情况。

参考:-https://***.com/a/62216646/4786087

我能够通过运行以下命令来清理 android/gradlew 文件 -

步骤 1. 在 android 文件夹上运行 cmd

chmod +x gradlew

第 2 步。之后运行

./gradlew clean

第 3 步。接下来在项目的根目录中运行

react-native run-android

如果其他一切正常,这应该会开始构建应用程序并在模拟器中启动它。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于在 android 模拟器上运行 react-native的主要内容,如果未能解决你的问题,请参考以下文章

React Native 在多个同时运行的 Android 模拟器上运行

在 Android 模拟器上运行谷歌地图应用程序

在 iOS 模拟器上运行 Flutter 失败,但在 Android 模拟器上可能

在 iPhone 模拟器上运行的颤振卡在“Xcode 构建完成”上。 (它在android模拟器中运行良好)

Firebase android 可以在模拟器上运行,但不能在设备上运行

Android:应用程序在模拟器上运行,但在我的手机上崩溃