cordova emulator: cannot - PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
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
If you moved
.androidto another place then set the
ANDROID_SDK_HOMEenvironment variable to the path of the parent dir containing your
.androidand make sure the AVD Manager successfully found your Virtual Device.
Also check paths in
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:
Check that the SDK directory has at least these 4 directories:
system-images. It is very important! These directories must be present. If some of them don't exist, then just create empty dirs.
config.ini. Find the
image.sysdir.1property. It points at the directory inside SDK containing system images. Make sure that this directory exists and contains files like
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
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 (ndroid SDK Platform-Tools) tools (Android SDK Tools)
And as I mentioned earlier you must install system images your AVD is using, for example
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
To list all available packages use
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=
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:
If you don't care about the data the AVD contains, just delete all the
qcow2files 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.
If the data on the emulator is important to you, then open all
qcow2files one by one using any HEX editor (I prefer HxD), find the path of a base
imgfile, and change it to the correct one in the
Overwritemode (to preserve the file size). Then select the path and get its length in hex (e.g.
2Frepresents the ASCII slash
/. Put it into position
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 :)
cordova run android in terminal, I'm getting this error:
Waiting for emulator to start... PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/Users/username/Library/Android/sdk]!
This happens after exporting:
Before exporting I got:
Waiting for emulator to start... PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
Any ideas where I'm going wrong? I'm sure this is the sdk root so why am I getting broken avd system path?
ok i can run android from cordova, i changed ANDROID_HOME to,
Check if the system image used by your AVD has been downloaded under
In my case it was broken because ANDROID_HOME and ANDROID_SDK_ROOT were different, so once I set ANDROID_HOME to be the same as ANDROID_SDK_ROOT then it started working.
After quite some time trying other Googled "solutions", the only thing that worked for me, after setting the ANDROID_SDK_ROOT environment variable on Windows, and also adding and removing ANDROID_HOME and ANDROID_SDK_HOME variables, was Xerox23's answer - editing the AVD's config.ini to hardcode the value of ANDROID_SDK_ROOT into the image.sysdir.1 property.
This was using Android Studio 3.0.1 and emulator 26.1.4, launching the virtual device from the AVD Manager from within Android Studio.
As @EFreak did I installed the android-sdk with homebrew. I needed to do this, because I was following the nativescript tutorials. If you like me intend to use the brew version over the android-sdk version use this answer (this will allow you to use nativescripts
tns run android api), and if you want the android studio default android-sdk follow @EFreak's answer.
Basically you just need to change your Android SDK location in Android studio. First open a project in android studio. Then open the SDK Manager by clicking this button.
Next when the default preferences for the android SDK manager comes up you need to click edit next to the android SDK location.
Next you need to actually update the sdk location on the sdk components setup screen my
brew android-sdk was located here
Then just finish up the wizard by installing whatever packages. I needed to delete and recreate my device emulators at this step, but it seemed to work great after that.
I just had the same problem on Mac and here's what I did:
- I removed the android-sdk that I installed with brew
- I set the ANDROID_HOME variable to be the same as ANDROID_SDK_ROOT=/Users/username/Library/Android/sdk