cmdline-tools : could not determine SDK root

AndroidFlutterInstallationPathSdk

Android Problem Overview


C:\Android\sdk\bin>sdkmanager Error: Could not determine SDK root. Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: \cmdline-tools\latest\

it shows like this, even after specifying the root in env variables. ANDROID_SDK_ROOT C:\Android\sdk

I am using windows 10 64 bit machine, I want to run flutter without android studio so followed instruction on this page https://medium.com/@quicky316/install-flutter-sdk-on-windows-without-android-studio-102fdf567ce4

Android Solutions


Solution 1 - Android

Since new updates, there are some changes that are not mentioned in the documentation. After unzipping the command line tools package, the top-most directory you'll get is cmdline-tools. Rename the unpacked directory from cmdline-tools to tools, and place it under $C:/Android/cmdline-tools

now it will look like $C:/Android/cmdline-tools/tools

and it will work perfectly.

Solution 2 - Android

Downloading the Android SDK 29+ (command line tools for Android) from https://developer.android.com/studio#downloads.

For "commandlinetools-linux-7302050_latest.zip" the process was different from earlier approaches. Earlier after unpacking, the top folder was called tools, but now the top folder is called cmdline-tools.

The problem seems to be that the sdkmanager expects to reside in an environment called. /YOURPATH/cmdline-tools/SOMETHING/bin but unpacks to /YOURPATH/cmdline-tools/bin for Linux anyway.

if you get > Error: Could not determine SDK root.

> Error: Either specify it explicitly with --sdk_root= or move this > package into its expected location: <sdk>/cmdline-tools/latest/

Unpack and make sure you have this path to the sdkmanager. /YOURPATH/cmdline-tools/latest/bin/sdkmanager

How To

To get this to work, first create the path to your intended Android SDK /opt/android-sdk/cmdline-tools/ then unpack the SDK zip file to that location, and you will have

/opt/android-sdk/cmdline-tools/cmdline-tools/bin/sdkmanager

Now rename the second "cmdline-tools" to "latest"

/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager

And now it should work.

Solution 3 - Android

You can create a folder latest inside your cmdline-tools and move all it's contents inside this folder. So, your full path will be C:\Android\cmdline-tools\latest\bin. Using this config there is no need to define a ANDROID_SDK_ROOT environment variable or a --sdk_root= option. It'll assume that your SDK folder is C:\Android, and it'll put all your files (system-images, licenses, ...) inside it.

Solution 4 - Android

If you don't want to move it to another location, you can use --sdk_root to specify the folder where do you want to install and download Android SDK.

For example, if you want to use: X:\Dev\AndroidSDK and you downloaded and unziped your the command line tools package in that folder, you'll have this path: X:\Dev\AndroidSDK\cmdline-tools\bin for sdkmanager.bat.

So, your command will be:

X:\Dev\AndroidSDK\cmdline-tools\bin>.\sdkmanager.bat --sdk_root=X:\Dev\AndroidSDK

PS: Don't use spaces on the path to AndroidSDK or it will not work

Solution 5 - Android

• Go to extracted folder android-sdk\cmdline-tools
• Create a folder named latest in it.
• Cut bin , lib ...etc & paste in latest folder.
• Go to cmd of android-sdk\cmdline-tools\latest folder and run:

sdkmanager “platform-tools” “platforms;android-28”

It solves the problem

Solution 6 - Android

I successfully configured the command-line-tools in my mac.

  • Big Sur 11.6.4
  • commandlinetools-mac-8092744_latest.zip (6.0)

Downloaded a zip archive and unzip it.

% unzip commandlinetools-mac-8092744_latest.zip
% mv cmdline-tools latest
% mkdir sdk
% mkdir sdk/cmdline-tools
% mv latest sdk/cmdline-tools

This looks like this.

┌ sdk
│    ├ cmdline-tools
│    │     ├ latest
│    │     │     ├ bin
│    │     │     ├ lib
│    │     │     ├ NOTICE.txt
│    │     │     ├ source.properties

run sdkmanager

% ./sdk/cmdline-tools/latest/bin/sdkmanager
[============================] 100% Computing updates...

Solution 7 - Android

if you get an error Error: Could not determine SDK root. Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: \cmdline-tools\latest\

then use command with sdk root specified like: >sdkmanager --sdk_root=path-to-where-cmdline-tools-is "platform-tools" "platforms;android-29"

Solution 8 - Android

  1. You need put all the files and folders in this new folder tools

       `C:/Android/cmdline-tools/tools`
    

OR Alternative step

2.1. type cmd C:\Android\cmdline-tools\bin

2.2. type in the promt sdkmanager.bat --sdk_root=C:\Android

Solution 9 - Android

Some of the answers below might have worked for others but for my case, they didn't work until I figured this.

  1. Do not change the directory name upon extracting the zip file. (cmdline-tools)
  2. open the source.property file using notepad or any respective editor to check your SDK manager version.
  3. Update your system variable paths i.e $C:/Android/cmdline-tools/4.0/bin in this context 4.0 is my SDK manager version upon writing this and thereafter close the terminal and reopen it again and run sdkmanager --version

Good luck Enjoy your development process!

Solution 10 - Android

I have been facing this error on Ubuntu server 18.04, and it appears that the problem comes from the path. It should be different than what is given when you the download the zip. This is what I did to solve the problem in my case :

~> wget https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip

~> unzip commandlinetools-linux-8092744_latest.zip

~> mkdir android-sdk

~> mv cmdline-tools android-sdk

~> cd android-sdk/cmdline-tools; mkdir latest 

~> mv ./* latest

# */ So the path will be now :
# android-sdk/cmdline-tools/latest/bin

# instead of android-sdk/cmdline-tools/bin

~> nano ~/.bashrc

# add these two lines :

export ANDROID_HOME=$HOME/android-sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH

# save the file

source ~/.bashrc

# Try this now, it should work.

sdkmanager --list 

Solution 11 - Android

I came across this answer while I was trying to accept package license for android package with sdkmanager

Open bin folder ( I have downloaded from android side, https://developer.android.com/studio#downloads) I got the cmdline tools from here.

First I tried this bin> %ANDROID_HOME%\tools\bin\sdkmanager.bat --licenses

Got error - could not determined ask root

Then I tried this one

bin>sdkmanager.bat --licenses --sdk-root\E:\Android

Solution 12 - Android

change the path to like this

C:/Android/cmdline-tools/tools/bin 

it worked for me perfectly

Solution 13 - Android

I'm installing Android Studio for Flutter on my Mac. The following steps solve the problem:

  1. The original unzipped folder is cmdline-tools. Change the folder hierarchy into cmdline-tools > latest. That means creating a new directory latest under cmdline-tools and moving everything to latest. TL;DR If you look at the zip file name carefully, you'll find out that its name indicates that this is the latest one. You can have many versions of cmdline-tools but the latest directory means what is inside it is the latest one. Let's why we have to create a new directory.

  2. Find out where the Android SDK is located. Open Android Studio and navigate to Preference > Appearance & Behavior > System Settings > Android SDK. The Android SDK Location is where your Android SDK is installed. For me, it is /Users/myname/Library/Android/sdk. Open your Finder and navigate to it. enter image description here

  3. Move the cmdline-tools under the sdk directory. Double check that you have sdkmanager under /Users/myname/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager

  4. Follow what Flutter implies us to do. Run /Users/myname/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager --install "cmdline-tools;latest" in your terminal. This tells where the latest sdkmanager is. enter image description here

  5. Run flutter doctor -v in your terminal again. The problem should be fixed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionalakmar ShafinView Question on Stackoverflow
Solution 1 - Androidalakmar ShafinView Answer on Stackoverflow
Solution 2 - AndroidBo KristensenView Answer on Stackoverflow
Solution 3 - AndroidMarcelo BarrosView Answer on Stackoverflow
Solution 4 - AndroidJuan Antonio TubíoView Answer on Stackoverflow
Solution 5 - AndroidSharma AKView Answer on Stackoverflow
Solution 6 - AndroidiroiroysView Answer on Stackoverflow
Solution 7 - AndroidTushar MahajanView Answer on Stackoverflow
Solution 8 - AndroidAndres DeveloperView Answer on Stackoverflow
Solution 9 - Android13TracsoView Answer on Stackoverflow
Solution 10 - Android4hbaneView Answer on Stackoverflow
Solution 11 - AndroidPravin GhorleView Answer on Stackoverflow
Solution 12 - AndroidMohamed AtefView Answer on Stackoverflow
Solution 13 - AndroidMichael RevlisView Answer on Stackoverflow