【问题标题】:Run react-native on android emulator在 android 模拟器上运行 react-native
【发布时间】: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$ 

那我试过了:

  1. react-native start
  2. react-native run-android

同样的结果。

那我试过了:

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

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

  3. 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 命令。

标签: android-emulator react-native adb genymotion react-native-android


【解决方案1】:

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

  1. 请如图所示安装所需的SDK

Configure Required SDKs

  1. 如果您已经安装了它,那么您必须更新以下 SDK:
    • Android SDK Tool(更新到最新版本)
    • Android SDK Platform-tools(更新到最新版本)
    • Android SDK Build-tools(更新到最新版本)
    • Android Support Repository 在Extra 文件夹下(更新到最新版本)
  2. 您必须至少安装与已安装的Android SDK Build-tools 和Android 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://stackoverflow.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。
                    猜你喜欢
                    • 1970-01-01
                    • 2022-11-18
                    • 2018-01-17
                    • 2019-09-17
                    • 2023-01-29
                    • 1970-01-01
                    • 2017-11-13
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多