Sebastian
Sebastian

Reputation: 620

ReactNative can't locate Android SDK

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.

Upvotes: 44

Views: 90026

Answers (14)

Yhwach
Yhwach

Reputation: 1

Simply installing the latest version of SDK Command line tools on android studio worked.

Upvotes: 0

Yin Shen
Yin Shen

Reputation: 344

KEY POINTS: Shall the command "sdkmanager" run correctly, will the command "react-native doctor" run correctly.

So we should firstly make "sdkmanager" run correctly in the command line.

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

Secondly, add $ANDROID_HOME/cmdline-tools/10.0/bin to the PATH.(You can replace 10.0 with your own version)

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 "sdkmanager" will run correctly. And the command "react-native doctor" will run correctly too.

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

Upvotes: 7

J. Moreno
J. Moreno

Reputation: 497

What worked for me, despite trying most solutions above and following the Setting up the development environment guide from the React Native site, was to make sure that the Android SDK Command-line Tools (latest) was installed in the Android Studio Settings. After running npx react-native doctor, Android SDK found was now configured. See steps below:

LAUNCH ANDROID STUDIO: (Your version may look similar) enter image description here

SELECT THE "SDK TOOLS" TAB (this may vary for you.) enter image description here

Upvotes: 24

Maddy
Maddy

Reputation: 61

Open Android Studio;

More Actions > SDK Manager;

SDK Tools tab;

Select Android SDK Command-line Tools (latest);

Hit Apply and let it install the package;

Try re-running the npx react-native doctor command to see if this fixes your problem

Upvotes: 6

Adarsh D
Adarsh D

Reputation: 139

Even though you have followed all the mentioned steps in the documentation, installed SDK tools and SDK platforms, if you are not able to run the Android app, the only issue is you don't have permission to run ./gradlew

So, in order to provide permission; run

cd android
chmod +x gradlew

./gradlew clean

This will provide the execution permissions.

Then you can build your Android application using

npm run android

Thanks :)

Upvotes: 2

Nalbandyan Arthur
Nalbandyan Arthur

Reputation: 643

Install android command line tools from android studio SDK manager (SDK tools tab). then add <YOUR_ANDROID_SDK_PATH>\cmdline-tools\latest\bin to PATH environment variables

Upvotes: 1

mjlayasan
mjlayasan

Reputation: 21

Replacing JDK to version 19 works for me.

enter image description here

Upvotes: 0

Robson Neres
Robson Neres

Reputation: 9

In my case, I resolved this erros when set version Java of the gradle to use jdk11 and not use android studio version jdk.

Upvotes: 0

Innocent Chijioke
Innocent Chijioke

Reputation: 1

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.

Upvotes: -1

delcin
delcin

Reputation: 74

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

Upvotes: 3

N N K Teja
N N K Teja

Reputation: 435

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
    

Upvotes: 9

Marcel
Marcel

Reputation: 780

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.

Upvotes: 3

Amir
Amir

Reputation: 449

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

Upvotes: 2

Michel Calheiros
Michel Calheiros

Reputation: 933

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

Upvotes: 46

Related Questions