Home » Android » android – PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value

android – PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value

Posted by: admin March 11, 2020 Leave a comment

Questions:

After typing 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:

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

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?

How to&Answers:

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 🙂

Answer:

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

Answer:

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

Answer:

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'

Answer:

Removing the Error While Using Homebrew’s Android SDK as the Default SDK

As @EFreak did I installed the android-sdk with homebrew (a package manager for Macs). I needed to do the below to fix the error, because I was following the nativescript tutorials and ran into the error. 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.

Configuring Android Studio to use the Homebrew’s Android SDK’s

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.

android sdk manager button location

Next when the default preferences for the android SDK manager comes up you need to click edit next to the android SDK location.

enter image description here

Finding the Location of Homebrew’s Android SDK

Next you need to actually update the sdk location on the sdk components setup screen my brew android-sdk was located here /usr/local/share/android-sdk. You can find where yours is installed by running brew cask info android-sdk then near the bottom of the output it should say:

You can control android sdk packages via the sdkmanager command.
You may want to add to your profile:

  'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"'

The value of the exported ANDROID_SDK_ROOT variable (which here is /usr/local/share/android-sdk) is home-brew’s location of the android sdk.

Then you need to click the Android SDK Location button (labeled as 1 in the picture) and paste in Homebrew’s Android SDK location.

enter image description 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.

Setting the Android SDK Environment Variables to Point to Homebrew’s Android SDK

Also you may want to make sure if you are going the Homebrew route that your profile settings script has the ANDROID_HOME and ANDROID_SDK_ROOT environment variables set to your Homebrew location of the android sdk otherwise the above won’t work yet. This can get changed from the Homebrew location if you installed Homebrew before installing Android Studio as pointed out in this answer by @Jamie Armour. You can check the environment variables for the android sdk are set correctly by running echo $ANDROID_HOME and echo $ANDROID_SDK_ROOT and verifying that they both show the Homebrew location of the android sdk.

If you need to change the ANDROID_HOME and ANDROID_SDK_ROOT values you can do this in your profile settings in your Mac which would likely be in something like ~/.bash_profile, “~/.bashrc”, or “~/.profile” and defined like so:

export ANDROID_HOME="/usr/local/share/android-sdk"
export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"

You need to change the values of both the exports to the proper values of Homebrew’s android SDK location then save the file. To verify that the right values have been written you should first either close and open your terminal which should rerun the file and reset the environment variables or you can source the file by running source <profile file name> where is the profile file you edited and saved. You then can rerun echo $ANDROID_HOME and echo $ANDROID_SDK_ROOT to verify that they have the Homebrew android sdk location.

Answer:

I had same problem in my Windows10,
Isolved my problem by following the steps below.
open Android Studio
– Tools
– SDK Manager
– copy Android SDK Location
Android SDK Location
set system environment variable
ANDROID_HOME and ANDROID_SDK_ROOT
system environment variable

Answer:

Oleg Cherrs answer led me to a solution. As he mentioned

Go to /.android/avd/ and open config.ini. Find the >image.sysdir.1 property. It points at the directory inside SDK containing system >images. 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).

I found the corresponding emulator *.ini file in the avd directory.
There I modified the “image.sysdir.1” entry. I replaced the relative with an absolute path (append the ANDROID_SDK_ROOT in front). After that the emulator started from the command line as expected.

Answer:

  • Platfoms directory was missing in /usr/local/share/android-sdk.

  • I created an empty directory named platforms that fixed the issue.

Answer:

ok i can run android from cordova, i changed ANDROID_HOME to,

export ANDROID_HOME=/usr/local/opt/android-sdk

Answer:

You should add AVD Emulator.
Go to this location:

C:\Users\%username%\AppData\Local\Android\sdk\

start AVD Manager and in the second tab(Device Definitions) click on the button “createAVD”.

Answer:

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.

Answer:

I ran Android Studio on Windows 10, set ANDROID_HOME and ANDROID_SDK_ROOT on Environment Variables, and still got the error.

Turns out, I forgot to download the device.

enter image description here

enter image description here

After downloading the “Missing system image”, everything works fine.

Answer:

Just ran into that issue today and managed to solve it.

Emulator: [140735565005632]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at /Users/your_user_name/Library/Android/sdk/emulator/lib64/qt/lib

15:08 Emulator: Could not launch ‘/Users/your_user_name/Library/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64’: No such file or directory

The solution was pretty simple. Just install Android emulator through Android Studio => tools => Android => SDK manager => SDK tools => select Android Emulator => Apply

I’m using a MacBook Pro on macOS High Sierra, and I believe your machine has nothing to do with this issue. The emulator is not obviously installed when running the Android Studio installation manager for the first time, at least for me, with Android Studio 3.0.1

Also make sure you have your paths defined in your .bashrc or .zshrc like this:

export ANDROID_HOME=/Users/your_user_name/Library/Android/sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

Answer:

I had the same issue after emulator update. Problem was resolved after adding variable ANDROID_AVD_HOME enter image description here

Important: Non-ASCII characters cannot be used in the path.
Finally reinstall virtual devices or manually override device path in Configuration settings.ini file which contains old path with non-ascii characters.

C:\Users\<user_name>\.android\avd\<avd_name>

Answer:

Check if the system image used by your AVD has been downloaded under $ANDROID_SDK_ROOT/system-images/

Answer:

I had the same issue which after setting following path variables got vanished
Note AVD Home path is different from other three.

enter image description here

Answer:

NativeScript

For anyone having trouble launching the android emulator via NativeScript, it’s likely env vars ANDROID_HOME and ANDROID_SDK_ROOT have been overridden.

How I managed to create a problem for myself was by installing Android Studio to generate a different emulator. I did this after I had already installed the android sdk via home brew.

So if during the NativeScript installation, you selected to install android sdk via HomeBrew, NativeScript will set the above as follows:

ANDROID_HOME=/usr/local/share/android-sdk
ANDROID_SDK_ROOT=/usr/local/share/android-sdk

Subsequently installing Android Studio will override these values as:

ANDROID_HOME=/Users/[User]/Library/Android/sdk
ANDROID_SDK_ROOT=/Users/[User]/Library/Android/sdk

So naturally there is a conflict with Android studio and the NativeScript/Brew installation of the android sdk. Removing one or the other and/or verifying that the env variable contain the correct path should get your emulator to launch.

Answer:

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.

Answer:

To solve this problem I had to install the package with the missing system image using SDK Manager.exe (in “C:\Program Files (x86)\Android\android-sdk”). I had noticed that the system image I needed (“android-23”) was missing in “C:\Program Files (x86)\Android\android-sdk\system-images”.

After running SDK Manager.exe and installing the appropriate packages I could run the emulator in Android Studio.

Here’s the solution that worked for me:

https://www.embarcadero.com/starthere/xe5/mobdevsetup/android/en/creating_an_android_emulator.html

Answer:

Follow below steps this should solve your problem

1.

export ANDROID_HOME=/usr/local/Cellar/android-sdk/24.4.1
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/bin

2.

Go to android studio preferences => Build, Execution, Deployment => Build Tools => Gradle => Android studio  => Enable embedded Maven Repository should be selected.

3.

Go to android studio preferences => Appearance & Behavior => System Settings => Android SDK => Go to SDK Tools and select Android Emulator

Answer:

I solved this problem by removing the file /usr/local/share/android-sdk,
because this file was created when I tried with homebrew .

export ANDROID_HOME=/Users/<username>/Library/Android/sdk

export ANDROID_SDK_ROOT=/Users/<username>/Library/Android/sdk

export ANDROID_AVD_HOME=/Users/<username>/.android/avd

that is enough ….

Answer:

Open your android studio then focus on the toolbar.

Goto tools > SDK manager then

Appearance & Behavior > Systems Settings > Android SDK

Now in the tab copy the Android SDK Location from here
Android SDK Location

then goto your environment variables and then set the path along with these variables

  1. ANDROID_HOME
  2. ANDROID_SDK_ROOT

Environment Variables

Answer:

I’m in Windows 10 and the problem was that the avd’s directory in my computer had non-ASCII characters in it.

Here’s what to do:

Run cmd as administrator

Run the following command:

mklink /D C:\.android C:\Users\-yourUsername-\.android

(This will create a symbolic link between the path with non-ASCII characters and the new one)

In enviroment variables add ANDROID_AVD_HOME variable with value C:\\.android\avd.

Answer:

For windows machine: After trying alot of set path, remove path and etc.
What finally work is to located the folder C:\Users\johndoe\.android and delete it. after that you can lunch your Android Studio, it will ask you to download and install a new AVD and it will override and create a fresh new folder and files. This solve the problem.

Answer:

I ran into this problem since I’ve been doing React Native since the early days. Google has deprecated the commandline tools and insists on Android studio. The solution for me was to remove the commandline tools

rm -rf /usr/local/Cellar/android-sdk

rm /usr/local/bin/android

open up AS install sdk v6 as instructed https://facebook.github.io/react-native/docs/getting-started.html#1-install-android-studio

make a new AVD and it’ll launch without error

Answer:

The errors actually vary. It’s helpful to run ./emulator with -verbose option, as it will show the actual errors.

Answer:

I just had the same problem on Mac and here’s what I did:

  1. I removed the android-sdk that I installed with brew
  2. I set the ANDROID_HOME variable to be the same as ANDROID_SDK_ROOT=/Users/username/Library/Android/sdk.

Answer:

I know its not specific for Flutter and not for Windows OS, but this thread is the first result in google and the main one for this issue, so:

Using windows 10 and received this error message when using Flutter, this command did the trick:

echo $ANDROID_HOME && flutter doctor -v

Answer:

I solved the problem on my Mac machine by downloading a new emulator.

Answer:

  1. Delete early created devices.
  2. Close Android studio.
  3. Open: Control panel -> System & security -> System -> Advanced system settings ->
    Environment variables.
  4. Create New variable “ANDROID_SDK_HOME” and set
    new path(in my case it was F:\Coding2019\Android\AVDdevices). Push ‘ok’.
  5. Open Android Studio.
  6. Create new device. After creating in drop-down menu click “View Details” to see new path of new AVD.