Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value

People also ask

What is the path of Android_sdk_root?

Answers related to “set ANDROID_SDK_ROOT” Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk. dir path in your project's local properties file at '/Users/dayana/workspace/mentor/Fresh-app-sdk-3-Feb_1/android/local.

Can not find AVD system path Please define Android_sdk_root?

Go to Control Panel>>System and Security>>System>>Advance system settings>>Environment Variables then set variable value of ANDROID_HOME set it like this "C:\Users\username\AppData\Local\Android\sdk" set username as your pc name, then restart your android studio.

Why is my AVD Manager not working?

It happened something when the libraries are not installed correctly. Follow the steps as mentioned below: Created a blank project using Android Studio. After creating the project, using the shortcut ctrl+shift+a option and searched for AVD Manager.


There are may be several different problems when you move your AVD or SDK to another directory, or replace an old SDK with a new one, or somehow get the SDK corrupted.

Below I'll describe all the possible problems I know, and will give you several ways to solve them.

Of course I assume that you have any AVD created, and it is located in C:\Users\<user_name>\.android\avd (Windows) or ~/.android/avd (Linux/MacOS).

If you moved .android to another place then set the ANDROID_SDK_HOME environment variable to the path of the parent dir containing your .android and make sure the AVD Manager successfully found your Virtual Device.

Also check paths in <user_home>/.android/avd/<avd_name>.ini


Incomplete/corrupted SDK stucture

PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value

These 2 errors happen if the emulator cannot find the SDK, or the SDK is broken.

So, first of all I recommend to remove the ANDROID_SDK_ROOT variable at all. It's only needed when the emulator is located outside of the SDK directory. But in general, your emulator stays inside the SDK dir. And in this case it must detect the SDK location automatically. If it doesn't, then your SDK probably has wrong filetree. Please do the following:

  1. Check that the SDK directory has at least these 4 directories: emulator, platforms, platform-tools, system-images. It is very important! These directories must be present. If some of them don't exist, then just create empty dirs.

  2. Go to <user_home>/.android/avd/<avd_name> and open config.ini. Find the image.sysdir.1 property. It points at the directory, inside the SDK directory, that contains the actual system image. Make sure that this directory exists and contains files like build.prop, system.img, etc. If it doesn't, then you have to open the SDK Manager and download system images your AVD requires (see below).

If everything's set up properly, when these errors about ANDROID_SDK_ROOT must be gone. If they're not, then now you may try to set up ANDROID_SDK_ROOT variable.


Required packages and HAXM are not installed

The next problem you may face is that the emulator starts to launch, but hangs up or quits immediatelly. That probably means that you don't have all the required packages installed.

Another possible error is:

Could not automatically detect an ADB binary. Some emulator functionality will not work until a custom path to ADB is added in the extended settings page.

So, to successfully launch any AVD you must be sure that at least these packages are installed:

emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)

And as I mentioned earlier you must install system images your AVD is using, for example system-images;android-25;google_apis;x86

Note that the most recent versions on SDK don't have a standalone SDK Manager.exe. Instead of it you have either to use Android Studio, or tools\bin\sdkmanager.bat (Linux/MacOS probably have sh files).

To list all available packages use sdkmanager --list or sdkmanager --list --verbose

To install packages use sdkmanager <package1> <package2> ...

Also I recommend to install HAXM on your system manually.


Qcow2-files refer to incorrect/nonexistent base-images

The last problem I'll mention happens when you're trying to move AVD or SDK from one computer or directory to another. In this case you may get such error:

qemu-system-i386.exe: -drive if=none,overlap-check=none,cache=unsafe,index=0,id=system,file=C:\Users\<old_user_name>\.android\avd\<avd_name>.

avd\system.img.qcow2,read-only: Could not open backing file: Could not open '<old_sdk_dir>\system-images\android-22\google_apis\x86\system.img': Invalid argument

There are 2 ways to fix it:

  1. If you don't care about the data the AVD contains, just delete all the qcow2 files from the AVD directory (e.g. from <user_home>/.android/avd/<avd_name>). In this case you will get a clean version of Android, like after a hard reset.

  2. If the data on the emulator is important to you, then open all qcow2 files one by one using any HEX editor (I prefer HxD), find the path of a base img file, and change it to the correct one in the Overwrite mode (to preserve the file size). Then select the path and get its length in hex (e.g. 2F). 2F represents the ASCII slash /. Put it into position 13:

Edit Android qcow2 files using HxD HEX editor

PS: Not sure, but there are probably some utilites like qemu-img allowing to set different base image. Well, to me it's easier to manually edit the binary.


Now you'll probably be able to successfully launch your Android Virtual Device. I hope so :)


On Mac: I had installed android-sdk using brew as well as Android Studio. Somehow, having 2 installations was causing this problem. When I uninstalled my brew installation of the sdk using brew cask uninstall android-sdk and added the following vars to my env. It worked.

export ANDROID_HOME=/Users/<Username>/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME

This will solve your problem in macOS:

pico ~/.bash_profile

export ANDROID_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_SDK_HOME=/Users/$USER/Library/Android/sdk
export ANDROID_AVD_HOME=/Users/$USER/.android/avd
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME

source ~/.bash_profile

It means that your path to tools is incorrect. This is what it looks like on a mac using brew. Mind the version.

export ANDROID_SDK_ROOT='/usr/local/Cellar/android-sdk/24.4.1_1'

In your case it looks like you should run this:

export ANDROID_SDK_ROOT='/Users/username/Library/Android/sdk'