15

I've followed the installation instructions for ReactNative on the official site but can't get my project to build and install on any device. The issue seems to be that ReactNative can't seem to locate my Android SDK.

If I open the Android specific part of the project in Android Studio I can start the app, so the SDK is properly installed. Maybe related is also that I'm working on a Flutter app simultaneously and Flutter has no problems locating the Android SDK.

Running nix react-native doctor gives me the following:

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

However trying to "fix" the issue just takes me to the getting started page, and as I mentioned before I've done the installation exactly as described. I even tried removing everything related to Android from my computer and reinstalling everything from scratch.

Runnit nix react-native info gives me the following:

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

Which just further "proves" that ReactNative can't find the Android SDK.

What I've tried so far:

Adding a local.properties with the content:

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

(And yes the folder exists and is correct, it's the same one set in Android Studio)

Updating the .zshrc with:

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

And in that sdk-folder (in platforms) I have android-28, android-29 and android-30. I've also (of course) looked at a number of posts here from people with the same issue, but one of these two fixes almost always seems to solve the issue, however it doesn't work for me. What else is there to test?

UPDATE: I can also add that when running npx react-native run-android and tget the error: Task 'installDebug' not found in project ':app'.. But this problem should also be solved with the properties.local, which doesn't work for me.

Sebastian
  • 333
  • 1
  • 3
  • 13

7 Answers7

26

I figured out that installing the "Android SDK Command-line Tools" plugin in Android Studio will allow doctor to recognize a newer android sdk instance!

But it's incompatible with react-native, we need the 29.0.2 one so be sure to check "Show package details" and select the correct version before downloading it.

Android Studio settings

My npx react-native doctor output after that:

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
Michel Calheiros
  • 713
  • 4
  • 10
2

Steps to fix this on (mac m1):

  • Follow Steps from https://reactnative.dev/docs/environment-setup

  • ensure you have added JAVA_HOME in ~/.zshrc

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
    
  • As described in environment-setup you need to install Android 13 (Tiramisu) only.

  • make sure the following items are checked:

    • Android SDK Platform 33
    • (for Apple M1 Silicon) Google APIs ARM 64 v8a System Image
  • Then configure Env Vars:

    export ANDROID_HOME=$HOME/Library/Android/sdk
    export PATH=$PATH:$ANDROID_HOME/emulator
    export PATH=$PATH:$ANDROID_HOME/platform-tools
    
  • Make sure you install SDK Build tools version 33 by checking show packages checkbox and

  • SDK Command line tools version 33.

    export PATH=$PATH:$ANDROID_HOME/cmdline-tools/10.0/bin
    
N N K Teja
  • 197
  • 1
  • 7
1

Open ur android folder with Android Studio, Android Studio will try to install the required SDK for you.

Amir
  • 349
  • 3
  • 4
1

I tried all the answers in stackoverflow and github issues. But the below trick worked for me. In my case I configured the PATH variable in this way so that react-native doctor finds the correct tools.

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
delcin
  • 31
  • 3
0

Also, check JVM version referenced by JAVA_HOME. Reason: npx react-native doctor uses envinfo to gather available SDKs, which in turn calls ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list, which can throw exceptions if too old JVM is used.

In my case, switching to Java 17 helped.

Marcel
  • 568
  • 7
  • 12
0

this steps worked for me.

  1. open your system environment variable>advance>enveronment variables.
  2. delete every all paths related to sdk. including android_home and android_home_root. now restart your system. go back to the environment variable and click on path>edit. in the window that popup select new and add the path to your sdk. (for me "C:\Users\AppData\Local\Android\Sdk", yours might be diffrient). add path to platform-tools in same maner and comandline-tools. click ok to save and hopefully it will work.
  • English is not good. It lacks punctuation and there are some important typos. Please mark literals with "" (double quotes). – Javi Vazquez Aug 26 '23 at 18:41
0

If the command sdkmanager could run correctly, then react-native doctor will run correctly.

First, remove $ANDROID_HOME/tools, $ANDROID_HOME/tools/bin from the PATH. The sdkmanager in there is old, and requires oracle jdk 8. While in contrast the react native requires jdk >= 11.

Second, add $ANDROID_HOME/cmdline-tools/10.0/bin to the 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

Then the command react-native doctor should works well.

Inspired by this answer: https://stackoverflow.com/a/68382384/7994724

Yin Shen
  • 256
  • 1
  • 4