ReactNative无法找到Android SDK。

21
我按照官方网站上的安装说明安装了ReactNative,但是无法在任何设备上构建和安装我的项目。问题似乎是ReactNative似乎无法找到我的Android SDK。
如果我在Android Studio中打开项目的Android部分,我可以启动应用程序,因此SDK已正确安装。也许相关的是,我同时正在开发一个Flutter应用程序,Flutter没有问题地定位Android SDK。
运行“nix react-native doctor”给我以下结果:
Common
 ✓ Node.js
 ✓ yarn
 ✓ Watchman - Used for watching changes in the filesystem when in development mode

Android
 ✓ JDK
 ✓ Android Studio - Required for building and installing your app on Android
 ✖ Android SDK - Required for building and installing your app on Android
   - Versions found: N/A
   - Version supported: 29.0.2
 ✓ ANDROID_HOME

iOS
 ✓ Xcode - Required for building and installing your app on iOS
 ✓ CocoaPods - Required for installing iOS dependencies
 ✓ ios-deploy - Required for installing your app on a physical device with the CLI

Errors:   1
Warnings: 0

Attempting to fix 1 issue...

Android
 ✖ Android SDK
   Read more about how to download Android SDK at https://reactnative.dev/docs/getting-started

然而,尝试“修复”问题只会将我带到入门页面,正如我之前提到的,我已按照描述的方式进行了安装。我甚至尝试从计算机中删除与Android相关的所有内容并从头重新安装所有内容。

运行 nix react-native info给出以下结果:

info Fetching system and libraries information...
System:
    OS: macOS 10.15.4
    CPU: (8) x64 Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz
    Memory: 1.97 GB / 16.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.16.3 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.4 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.9.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 13.5, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
    Android SDK: Not Found
  IDEs:
    Android Studio: 4.0 AI-193.6911.18.40.6514223
    Xcode: 11.5/11E608c - /usr/bin/xcodebuild
  Languages:
    Java: 14.0.1 - /usr/bin/javac
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.11.0 => 16.11.0
    react-native: 0.62.2 => 0.62.2
  npmGlobalPackages:
    *react-native*: Not Found

这进一步“证明”了ReactNative无法找到Android SDK。

我到目前为止尝试过的:

添加一个带有以下内容的local.properties文件:

sdk.dir=/Users/[username]/Library/Android/sdk

(是的,文件夹存在且正确,与Android Studio设置的相同)

使用以下内容更新.zshrc文件:

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

在那个sdk文件夹(在平台中)我有android-28android-29android-30。 我当然也看过很多人发的有相同问题的帖子,但其中两个解决方法似乎几乎总是能解决问题,但对我没有用。还有什么别的测试方法吗?

更新: 我还可以补充一下,当运行npx react-native run-android时,会出现错误:在项目:'app'中找不到任务“installDebug”。 但这个问题也应该可以通过 properties.local 解决,但对我没有用。


你有解决方案吗? - Pooja Rajendran C
嗨@Sebastian,你找到任何解决方法了吗?我也遇到了同样的错误,请帮忙。 - Dinesh Kachhot
11个回答

29

我发现在Android Studio中安装“Android SDK命令行工具”插件将使得doctor可以识别新的android sdk实例!

但是它与react-native不兼容,我们需要29.0.2版本的,所以请确保在下载之前检查“显示软件包详细信息”并选择正确的版本。

Android Studio settings

然后我的npx react-native doctor输出为:

michel@michel-ubuntu:~/development/projects/Project$ rn doctor
Common
 ✓ Node.js
 ✓ npm

Android
 ✓ JDK
 ✓ Android Studio - Required for building and installing your app on Android
 ✓ Android SDK - Required for building and installing your app on Android
 ✓ ANDROID_HOME

Errors:   0
Warnings: 0
Common
 ✓ Node.js
 ✓ npm

Android
 ✓ JDK
 ✓ Android Studio - Required for building and installing your app on Android
 ✓ Android SDK - Required for building and installing your app on Android
 ✓ ANDROID_HOME

Errors:   0
Warnings: 0

很遗憾,这个解决方案对我不起作用 :( - loekTheDreamer
你尝试过不同的版本吗?这篇文章中的可能已经过时了。另外,请检查一下你的Android SDK中是否有一个“latest”文件夹,并使用它。 - Michel Calheiros
1
看起来我的问题是Android Studio没有被检测到。Android SDK有一个绿色的勾号。你的系统是如何识别出Android Studio的? - loekTheDreamer
也许我们可以尝试将Android Studio安装到默认位置,这样系统就能够自动识别并知道它的存在。 - Hassan Jamil
这对我有用,但我特别需要31.0.0版本 - 我已经安装了29.0.2、30.0.2、30.0.3、32.0.0、33.0.0和34.0.0版本,但那没起作用。这是使用@react-native-community/cli-doctor@11.3.3版本的情况。 - devnev
这对我有用!谢谢你! - John

4
解决此问题的步骤(适用于Mac M1):
  • 按照https://reactnative.dev/docs/environment-setup的步骤进行操作。

  • 确保在 ~/.zshrc 文件中添加了 JAVA_HOME。

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
    
  • 如 environment-setup 中所述,只需安装 Android 13 (Tiramisu)

  • 确保选中以下项目:

    • Android SDK Platform 33
    • (适用于 Apple M1 芯片) Google APIs ARM 64 v8a System Image
  • 然后配置环境变量:

    export ANDROID_HOME=$HOME/Library/Android/sdk
    export PATH=$PATH:$ANDROID_HOME/emulator
    export PATH=$PATH:$ANDROID_HOME/platform-tools
    
  • 确保通过勾选 "show packages" 安装 SDK Build tools 版本33。

  • SDK Command line tools 版本33。

    export PATH=$PATH:$ANDROID_HOME/cmdline-tools/10.0/bin
    

export PATH=$PATH:$ANDROID_HOME/cmdline-tools/10.0/bin 这个方法对我起作用了,谢谢你。 - undefined

3
此外,请检查由JAVA_HOME引用的JVM版本。原因是npx react-native doctor使用envinfo来收集可用的SDK,然后调用ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list,如果使用过时的JVM,则可能会抛出异常。
在我的情况下,切换到Java 17有所帮助。

你在这里做得太棒了!我按照官方文档安装了Java Azul Zulu,但sdkmanager无法正常运行。在切换到Java 19之后,它开始找到SDK了。 - undefined
安装cmdline-tools/latest对我来说起了作用! - undefined
卸载了Java 11并安装了Java 17,这对我起了作用。 - undefined

2

使用Android Studio打开您的安卓文件夹,Android Studio将会尝试为您安装所需的SDK。


2
如果命令sdkmanager能够正确运行,那么react-native doctor也会正确运行。
首先,从PATH中移除$ANDROID_HOME/tools和$ANDROID_HOME/tools/bin。这里的sdkmanager版本较旧,需要oracle jdk 8。而相比之下,React Native需要jdk >= 11。
其次,将$ANDROID_HOME/cmdline-tools/10.0/bin添加到PATH中。
export ANDROID_HOME=$HOME/Library/Android/sdk
export ANDROID_SDK_ROOT=$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
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/10.0/bin

然后运行 react-native doctor 命令应该能正常工作。
受到这个答案的启发:https://dev59.com/hVYN5IYBdhLWcg3wopUD#68382384

谢谢!关于替换10.0,我只有“最新”的选项,我想这可能更具有未来性(或者不是)。 - undefined

1
我尝试了stackoverflow和github问题中的所有答案,但下面的技巧对我起作用。 在我的情况下,我以这种方式配置了PATH变量,以便react-native doctor找到正确的工具。

export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/platforms:$PATH
export PATH=$ANDROID_HOME/tools/bin:$PATH
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH


1
在我的情况下,当我将Gradle的Java版本设置为使用jdk11而不是使用Android Studio版本的jdk时,我解决了这个错误。

我也是:错误:在加载主类com.android.sdklib.tool.sdkmanager.SdkManagerCli时发生了LinkageError java.lang.UnsupportedClassVersionError:com/android/sdklib/tool/sdkmanager/SdkManagerCli已由更高版本的Java运行时编译(类文件版本61.0),这个Java运行时只能识别55.0的类文件版本 - undefined

0

这些步骤对我有效。

  1. 打开系统环境变量>高级>环境变量。
  2. 删除与SDK相关的所有路径,包括android_home和android_home_root。现在重新启动系统。返回到环境变量,并点击路径>编辑。在弹出的窗口中选择新建,并添加SDK的路径(对于我来说是"C:\Users\AppData\Local\Android\Sdk",你的路径可能不同)。以相同的方式添加platform-tools和commandline-tools的路径。点击确定保存,希望能够起作用。

英文不好。缺乏标点符号,还有一些重要的拼写错误。请用""(双引号)标记文字。 - Javi Vazquez

0
从Android Studio的SDK管理器(SDK工具选项卡)安装Android命令行工具,然后将<YOUR_ANDROID_SDK_PATH>\cmdline-tools\latest\bin添加到PATH环境变量中。

0
更换JDK到19版本对我来说有效。

enter image description here


你的回答可以通过提供更多支持性的信息来改进。请编辑以添加进一步的细节,比如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

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