React Native adb 反向 ENOENT

React Native adb reverse ENOENT

我正在尝试让 React-Native 与 Android V4.2.2 (Genymotion) 一起工作,但我无法在模拟器上测试该应用程序。当我 运行 react-native run-android,我得到这个错误 Could not run adb reverse: spawnSync

这是日志

JS server already running.
Running ~/Library/Android/sdk/platform-tools/adb reverse tcp:8081 tcp:8081
Could not run adb reverse: spawnSync ~/Library/Android/sdk/platform-tools/adb ENOENT
Building and installing the app on the device (cd android && ./gradlew installDebug...

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> The SDK directory '~/Library/Android/sdk' does not exist.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.785 secs
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

注意:在日志中它说 SDK 目录不存在,我仔细检查了我是否在该目录中安装了 SDK。

我在执行 adb devices

时找到了我的 android 模拟器
List of devices attached
192.168.56.101:5555 device

我已经尝试了 Stack Overflow post 中的以下步骤,但仍然没有成功

我遇到了同样的问题。我再次更新了我的 ANDROID_HOME 环境变量,它对我有用。

关注这个React-native android-setup documentation

例如:

export ANDROID_HOME=~/Library/Android/sdk

Windows:

set ANDROID_HOME=c:/Users/whoever/AppData/Local/Android/Sdk

macOS Mojave 及更早版本或 bash 用户:

1 - 打开您的 bash 个人资料:

open .bash_profile

将此添加到您的 bash_profile:

 export ANDROID_SDK=/Users/<your_computer_name>/Library/Android/sdk
 export PATH=/Users/<your_computer_name>/Library/Android/sdk/platform-tools:$PATH

保存并关闭

编译您的更改

source ~/.bash_profile

For macOS Catalina and zsh users:

从 macOS Catalina 开始,您的 Mac 使用 zsh 作为默认登录 shell 和交互式 shell。您也可以将 zsh 设置为早期版本的 macOS 中的默认值。

你的 Mac:

打开您的 .zshrc 文件:

open ~/.zshrc

如果 .zshrc 文件不存在,您需要使用 touch 创建一个并打开。

touch ~/.zshrc

将此添加到您的 .zshrc 文件

export ANDROID_SDK=/Users/<your_computer_name>/Library/Android/sdk
export PATH=/Users/<your_computer_name>/Library/Android/sdk/platform-tools:$PATH

保存并关闭

编译您的更改

source ~/.zshrc

编辑:更新了针对 macOS Catalina 和 zsh 用户的回答。

我也遇到了同样的问题。我在同一个 cmd 中再次更新了我的 ANDROID_HOME env 变量,它工作正常。

> export ANDROID_HOME=~/Android/Sdk 
> export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

祝你好运

首先我在 .bash_profile 中设置了这样的路径

export PATH="~/Library/Android/sdk/platform-tools":$PATH
export ANDROID_HOME="~/Library/Android/sdk/platform-tools"

但这并没有解决我的问题。

对我来说,通过在 package.json 标签下的 script 中添加以下 npm 脚本,在 Mac 上就像魅力一样.

"android-dev": "adb reverse tcp:8081 tcp:8081 && react-native run-android"

那我干脆运行npm run android-dev就完事了。确保在您的应用程序设置中已启用实时重新加载,这样我就可以在我的手机上处理开发服务器并立即在应用程序中看到编码更改。

我通过安装 adb 解决了这个错误

在 Linux

sudo apt-get install android-tools-adb

从 macOS Catalina 开始,您的 Mac 使用 zsh 作为默认登录 shell 和交互式 shell。您也可以将 zsh 设置为早期版本的 macOS 中的默认设置。 More details on zsh from Apple

所以在你的 Mac:

1 - 打开您的 .zshrc 文件:

open ~/.zshrc

2 - 如果 .zshrc 文件不存在,您需要创建一个并再次打开(步骤 1)

touch ~/.zshrc

3 - 将此添加到您的 .zshrc 文件(添加 JAVA_HOME 以使用 Android Studio Embedded JDK)

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home
export ANDROID_HOME=/Users/<your_computer_name_here>/Library/Android/sdk
export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH

4 - 保存并关闭

5 - 编译您的更改

source ~/.zshrc

& 确保重启你的终端。

这是我的解决方案 操作系统:Linuxmint

sudo apt-get install android-tools-adb

此答案适用于 MacOs Catalina 或以上用户或 zsh 用户,因为您的 Mac 现在使用 zsh 作为默认登录 shell 和交互式 shell .

This is related to path issues.

如果您遵循 React Native Setting up the development environment 指南的文档。然后执行以下操作。

  1. 使用编辑器打开 ~/.zshrc。在我的例子中,我使用 vim
vim ~/.zshrc
  1. 为路径添加以下行。
export ANDROID_HOME="/Users/<yourcomputername>/Library/Android/sdk"
export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH

Make sure to add the above line correctly else it will give you a weird error.

  1. 保存更改并关闭编辑器。

  2. 最后,现在编译您的更改

source ~/.zshrc

我在我的案例中得到了这个。希望对你有帮助。

这对我有用,

在 Linux

sudo apt-get install android-tools-adb

如果 none 的解决方案有效。试试 运行ning 来源 ~/.bash_profile&&react-native 运行-android

在 android 脚本下的 package.json 文件中将其更新为 "android": "source ~/.bash_profile&&react-native 运行-android"

MacOS Catalina 及以上版本: "android": "source ~/.zshrc&&react-native 运行-android"

仅限Mac

如果接受的答案对您不起作用,请检查您的系统上是否安装了“adb”。如果没有,请使用自制软件安装 adb。

在我的情况下,我使用 Pop OS(Ubuntu) 并且安装了 android-studio,所以我只是

ln -s ~/Android/Sdk/platform-tools/adb /usr/bin/adb 

我在 Linux 上,在我的例子中 ANDROID_HOME env 变量已经添加到 .zshrc 但路径不正确,更正路径修复它。

export ANDROID_SDK_ROOT=$HOME/Android/Sdk
export ANDROID_HOME=$HOME/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

将这些添加到 ~/.zshrc 文件中并重新加载您的终端。