React Native adb reverse ENOENT

98

我正在尝试让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的这篇文章中提到的步骤,但仍然没有成功。

https://dev59.com/BlwZ5IYBdhLWcg3wYfdu#38536290
15个回答

270

我遇到了同样的问题。我再次更新我的ANDROID_HOME环境变量,然后问题就解决了。

请查看React Native Android设置文档

例子:

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

对于 macOS Catalina 和 zsh 用户:

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

在您的 Mac 上:

打开您的 .zshrc 文件:

open ~/.zshrc

如果.zshrc文件不存在,则需要使用touch & open创建一个。
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 用户更新了答案。


1
我按照链接中的步骤进行了操作,但是它并没有像你发布的命令那样有效(我已经重新启动了 shell)。 - XPLOT1ON
1
这对我来说从来不是问题,因为Android Studio在幕后完成了工作,所以在bash配置中使Android Home可用即可解决。 - cutiko
1
@SureshCS50 我认为你应该更新你的答案,为 macOS Catalina 用户添加解决此问题的步骤,因为在这个操作系统版本上,Mac 使用 zsh 作为默认登录和交互式 shell。 - Rameez
1
在Windows中,您可以直接在环境变量中设置ANDROID_HOME路径。 - Abhi
1
在我的情况下,即使在Catalina上,更新了.bash_profile也起作用了。 - Ghayoor ul Haq
显示剩余12条评论

68

从 macOS Catalina 开始,您的 Mac 将 zsh 作为默认登录 shell 和交互式 shell。您也可以在早期版本的 macOS 中将 zsh 设置为默认选项。 有关 Apple 的更多 zsh 详细信息

因此,在您的 Mac 上:

1 - 打开您的 .zshrc 文件:

open ~/.zshrc

2 - 如果.zshrc文件不存在,你需要创建一个并重新打开(步骤1)
touch ~/.zshrc

3 - 将此添加到您的.zshrc文件中(添加JAVA_HOME以使用Android Studio嵌入的JDK)。
更新:新的Android Studio Electric Eel正在使用jbr,而不是jre。
[新代码] 来自Android Studio Electric Eel
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jbr/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

[旧代码] 在Android Studio Electric Eel之前
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

确保重新启动您的终端。


20

我也遇到了同样的问题。后来在同一个命令行中再次更新了我的ANDROID_HOME环境变量,问题就得到了解决。

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

祝你好运


我正在尝试在Ubuntu 18.04中为React Native设置配置ANDROID_HOME环境变量,但我收到了这个错误,不知道为什么。你能帮我解决这个问题吗?错误:无法启动应用程序。 错误:spawnSync _ - Arbaz.in
请注意,这不是默认设置, 默认设置为:ANDROID_HOME=~/Library/Android/sdk - pfrank

16

本回答适用于MacOS Catalina或以上版本的用户,或者使用zsh作为默认登录shell和交互式shell的用户。

这与路径问题有关。

如果您按照React Native“设置开发环境”指南中的文档进行操作,请执行以下操作。

  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

请确保正确添加以上行,否则会产生奇怪的错误。

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

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

source ~/.zshrc

我在我的情况下让这个工作起来了。希望这能帮到你。


15

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

sudo apt-get install android-tools-adb

对于 Fedora 用户,命令是 sudo dnf 安装 android-tools - Mr. N

12

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

在Linux上

sudo apt-get install android-tools-adb

8

我在Linux上,我的情况下ANDROID_HOME环境变量已经添加到.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 文件中并重新加载终端。

8

首先,我已经在.bash_profile中设置了路径,就像这样

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

但这并没有解决我的问题。
对于我来说,在Mac上通过在脚本标记下的package.json中添加以下npm脚本就像魔法一样奏效。
"android-dev": "adb reverse tcp:8081 tcp:8081 && react-native run-android"

然后我只需运行npm run android-dev,一切都设置好了。确保在您的应用程序设置中已启用实时重新加载,这样我就可以在手机上使用开发服务器并立即在应用程序中看到编码更改。


它对我有效 :') - fatemeh kazemi

3

仅适用于Mac

如果接受的答案对您无效,请检查您的系统是否安装了"adb"。如果没有,则可以使用homebrew安装adb。


如何进行检查? - famfamfam
@famfamfam 请查看 https://stackoverflow.com/questions/60342712/how-to-check-whether-or-not-i-have-adb-installed-on-my-macos - Wakas Abbasid

3
这对我很有帮助,
在Linux上。
sudo apt-get install android-tools-adb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接