Подтвердить что ты не робот

PANIC: Разбитый путь системы AVD. Проверьте значение ANDROID_SDK_ROOT

После ввода cordova run android в терминале я получаю эту ошибку:

Waiting for emulator to start...
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/Users/username/Library/Android/sdk]!

Это происходит после экспорта:

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

Перед экспортом я получил:

Waiting for emulator to start...
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

Любые идеи, в которых я ошибаюсь? Я уверен, что это корень sdk, так почему я получаю сломанный системный путь avd?

4b9b3361

Ответ 1

При перемещении AVD или SDK в другой каталог или при замене старого SDK новым или при повреждении SDK может возникнуть несколько разных проблем.

Ниже я опишу все возможные проблемы, которые я знаю, и дам вам несколько способов их решения.

Конечно, я предполагаю, что у вас есть созданный AVD, и он находится в C:\Users\<user_name>\.android\avd (Windows) или ~/.android/avd (Linux/MacOS).

Если вы переместили .android в другое место, установите в переменной среды ANDROID_SDK_HOME путь к родительскому .android содержащему ваш .android и убедитесь, что AVD Manager успешно обнаружил ваше виртуальное устройство.

Также проверьте пути в <user_home>/.android/avd/<avd_name>.ini


Неполная/поврежденная структура SDK

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

Эти 2 ошибки происходят, если эмулятор не может найти SDK или SDK поврежден.

Итак, прежде всего я рекомендую вообще удалить переменную ANDROID_SDK_ROOT. Это нужно только тогда, когда эмулятор находится за пределами каталога SDK. Но в целом ваш эмулятор остается внутри SDK-каталога. И в этом случае он должен автоматически определять местоположение SDK. Если это не так, значит, в вашем SDK, возможно, неверное файловое дерево. Пожалуйста, сделайте следующее:

  1. Убедитесь, что в каталоге SDK есть как минимум следующие 4 каталога: emulator, platforms, platform-tools, system-images. Это очень важно! Эти каталоги должны присутствовать. Если некоторых из них не существует, просто создайте пустые каталоги.

  2. Перейдите в <user_home>/.android/avd/<avd_name> и откройте config.ini. Найдите свойство image.sysdir.1. Он указывает на каталог внутри каталога SDK, который содержит фактический образ системы. Убедитесь, что этот каталог существует и содержит файлы, такие как build.prop, system.img и т.д. Если этого не происходит, вам нужно открыть SDK Manager и загрузить системные образы, необходимые для вашего AVD (см. Ниже).

Если все настроено правильно, то когда эти ошибки об ANDROID_SDK_ROOT должны исчезнуть. Если это не так, то теперь вы можете попробовать установить переменную ANDROID_SDK_ROOT.


Обязательные пакеты и HAXM не установлены

Следующая проблема, с которой вы можете столкнуться, заключается в том, что эмулятор начинает запускаться, но зависает или сразу же завершает работу. Это, вероятно, означает, что у вас не установлены все необходимые пакеты.

Другая возможная ошибка:

Не удалось автоматически обнаружить двоичный файл ADB. Некоторые функции эмулятора не будут работать, пока на странице расширенных настроек не будет добавлен пользовательский путь к ADB.

Итак, чтобы успешно запустить любой AVD, вы должны быть уверены, что установлены хотя бы следующие пакеты:

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

И, как я упоминал ранее, вы должны установить образы системы, которые использует ваш AVD, например, system-images;android-25;google_apis;x86

Обратите внимание, что в последних версиях SDK нет отдельного SDK Manager.exe. Вместо этого вы должны либо использовать Android Studio, либо tools\bin\sdkmanager.bat (в Linux/MacOS, вероятно, есть sh файлы).

Для просмотра всех доступных пакетов используйте sdkmanager --list или sdkmanager --list --verbose

Для установки пакетов используйте sdkmanager <package1> <package2>...

Также я рекомендую установить HAXM в вашей системе вручную.


Qcow2 файлы ссылаются на неправильные/несуществующие базовые образы

Последняя проблема, о которой я упомяну, возникает, когда вы пытаетесь переместить AVD или SDK с одного компьютера или каталога на другой. В этом случае вы можете получить такую ошибку:

qemu-system-i386.exe: -drive если = нет, проверка на перекрытие = нет, кэш = небезопасно, индекс = 0, id = система, файл = C:\Users\<old_user_name>\.android\avd\<avd_name>.

avd\system.img.qcow2, только для чтения: не удалось открыть файл резервной <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img: не удалось открыть ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img ': неверный аргумент

Есть 2 способа это исправить:

  1. Если вас не волнуют данные, которые содержит AVD, просто удалите все файлы qcow2 из каталога AVD (например, из <user_home>/.android/avd/<avd_name>). В этом случае вы получите чистую версию Android, как после полной перезагрузки.

  2. Если вам важны данные на эмуляторе, откройте все файлы qcow2 по одному с помощью любого редактора HEX (я предпочитаю HxD), найдите путь к базовому файлу img и измените его на правильный в режиме Overwrite ( сохранить размер файла). Затем выберите путь и получите его длину в шестнадцатеричном формате (например, 2F). 2F представляет косую черту ASCII /. Поместите это в положение 13:

Edit Android qcow2 files using HxD HEX editor

PS: Не уверен, но, вероятно, есть некоторые утилиты, такие как qemu-img, позволяющие установить другое базовое изображение. Ну, мне проще редактировать бинарный файл вручную.


Теперь вы, вероятно, сможете успешно запустить виртуальное устройство Android. Я надеюсь, что это так :)

Ответ 2

В Mac: Я установил android-sdk, используя brew, а также Android Studio. Так или иначе, возникла проблема с двумя установками. Когда я удалил мою установку brew sdk, используя brew cask uninstall android-sdk, и добавил к моему env следующие vars. Это сработало.

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

Ответ 3

Это решит вашу проблему в 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

Ответ 4

Это означает, что ваш путь к инструментам неверен. Это выглядит так, как на mac, используя brew. Обратите внимание на версию.

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

В вашем случае похоже, что вы должны запустить это:

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

Ответ 5

У меня была такая же проблема в моей Windows10,
Решил мою проблему, выполнив следующие действия.
открыть Android Studio
- Инструменты
- SDK Manager
- скопировать Android SDK Местоположение
Расположение Android SDK
установить системную переменную среды
ANDROID_HOME и ANDROID_SDK_ROOT
системная переменная среды

Ответ 6

Устранение ошибки при использовании Homebrew Android SDK в качестве SDK по умолчанию

Как и @EFreak, я установил android-sdk с помощью homebrew (менеджер пакетов для Mac). Мне нужно было сделать следующее, чтобы исправить ошибку, потому что я следовал инструкциям по nativescript и столкнулся с ошибкой. Если вы, как я, намереваетесь использовать версию brew вместо версии android-sdk, используйте этот ответ (это позволит вам использовать nativescripts tns tns run android api), и если вы хотите, чтобы android studio по умолчанию android-sdk следовал за ответом @EFreak.

Настройка Android Studio для использования Homebrew Android SDK

В основном вам просто нужно изменить расположение Android SDK в Android Studio. Сначала откройте проект в андроид студии. Затем откройте SDK Manager, нажав эту кнопку.

android sdk manager button location

Затем, когда появятся настройки по умолчанию для менеджера Android SDK, вам нужно нажать кнопку "Изменить" рядом с расположением Android SDK.

enter image description here

Поиск местоположения доморощенного Android SDK

Затем вам нужно обновить местоположение SDK на экране настройки компонентов SDK. Мой brew android-sdk находится здесь /usr/local/share/android-sdk. Вы можете узнать, где установлен ваш файл, запустив brew cask info android-sdk затем в нижней части вывода должно появиться следующее сообщение:

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"'

Значение переменной export ed ANDROID_SDK_ROOT (которая здесь /usr/local/share/android-sdk) является местоположением домашнего приготовления android sdk.

Затем вам нужно нажать кнопку "Расположение Android SDK" (помечено как 1 на рисунке) и вставить в "Homebrew Android SDK".

enter image description here

Затем просто завершите работу мастера, установив все пакеты. На этом этапе мне нужно было удалить и воссоздать эмуляторы моего устройства, но после этого все работало отлично.

Установка переменных среды Android SDK для указания на Homebrew Android SDK

Также вы можете убедиться, что вы идете по маршруту Homebrew, что в сценарии настроек вашего профиля переменные среды ANDROID_HOME и ANDROID_SDK_ROOT установлены в положение Homebrew для android sdk, в противном случае вышеприведенное пока не будет работать. Это можно изменить из папки Homebrew, если вы установили Homebrew перед установкой Android Studio, как указано в этом ответе @Jamie Armor. Вы можете проверить, правильно ли установлены переменные окружения для android sdk, запустив echo $ANDROID_HOME и echo $ANDROID_SDK_ROOT и убедившись, что они оба показывают местоположение Homebrew android sdk.

Если вам нужно изменить значения ANDROID_HOME и ANDROID_SDK_ROOT, вы можете сделать это в настройках своего профиля на вашем Mac, которые, вероятно, будут выглядеть примерно как ~/.bash_profile, "~/.bashrc" или "~/.profile" и определены как так:

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

Вам нужно изменить значения обоих экспортов на правильные значения местоположения Homebrew android SDK, а затем сохранить файл. Чтобы убедиться, что правильные значения были записаны, вы должны сначала либо закрыть и открыть свой терминал, который должен повторно запустить файл и сбросить переменные среды, либо вы можете получить исходный файл, выполнив source <profile file name> где находится файл профиля, который вы редактировали, и сохранены. Затем вы можете повторно запустить echo $ANDROID_HOME и echo $ANDROID_SDK_ROOT чтобы убедиться, что у них есть местоположение Homebrew android sdk.

Ответ 7

Ответ Олега Черрса привел меня к решению. Как он упомянул

Перейдите в/.android/avd/и откройте config.ini. Найдите свойство > image.sysdir.1. Он указывает на каталог внутри SDK, содержащий систему > изображения. Убедитесь, что этот каталог существует и содержит такие файлы, как build.prop, > system.img и т.д. Если это не так, вам нужно открыть диспетчер SDK и > загрузить системные изображения, которые требуется вашему AVD (см. Ниже).

Я нашел соответствующий файл эмулятора *.ini в каталоге avd. Там я изменил запись "image.sysdir.1". Я заменил родственника абсолютным путем (добавьте ANDROID_SDK_ROOT спереди). После этого эмулятор запускался из командной строки, как ожидалось.

Ответ 8

ОК я могу запустить андроид от кордовы, я изменил ANDROID_HOME на,

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

Ответ 9

Вы должны добавить AVD эмулятор. Перейти к следующему местоположению:

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

запустите AVD Manager и на второй вкладке (Device Definitions) нажмите кнопку "createAVD".

Ответ 10

  • В каталоге /usr/local/share/android-sdk отсутствует каталог Platfoms.

  • Я создал пустую директорию с именами платформ, которые исправили проблему.

Ответ 11

В моем случае это было нарушено, потому что ANDROID_HOME и ANDROID_SDK_ROOT были разными, поэтому, когда я установил ANDROID_HOME, чтобы он был таким же, как ANDROID_SDK_ROOT, он начал работать.

Ответ 12

Проверьте, загружен ли образ системы, используемый вашим AVD, в $ANDROID_SDK_ROOT/system-images/

Ответ 13

У меня была та же проблема, которая после установки следующих переменных пути исчезла. Примечание. Путь AVD Home отличается от других трех.

enter image description here

Ответ 14

Сегодня я столкнулся с этой проблемой и смог ее решить.

Эмулятор: [140735565005632]: ОШИБКА: android/android-emu/android/qt/qt_setup.cpp: 28: библиотека Qt не найдена в /Users/your_user_name/Library/Android/sdk/emulator/lib64/qt/lib

15:08 Эмулятор: не удалось запустить '/Users/your_user_name/Library/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64': Нет такого файла или каталога

Решение было довольно простым. Просто установите Android-эмулятор через Android Studio => tools => Android => SDK manager => SDK tools => выберите Android Emulator => Apply

Я использую MacBook Pro на macOS High Sierra, и я считаю, что ваша машина не имеет ничего общего с этой проблемой. Эмулятор, очевидно, не установлен при запуске менеджера установки Android Studio в первый раз, по крайней мере для меня, с Android Studio 3.0.1

Также убедитесь, что ваши пути определены в ваших.bashrc или.zshrc следующим образом:

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

Ответ 15

По прошествии некоторого времени, пробовав другие "решения" Googled, единственное, что сработало для меня после установки переменной среды ANDROID_SDK_ROOT в Windows, а также добавления и удаления переменных ANDROID_HOME и ANDROID_SDK_HOME, было ответом Xerox23 - редактирования конфигурации AVD. ini для жесткого кодирования значения ANDROID_SDK_ROOT в свойстве image.sysdir.1.

Это было использование Android Studio 3.0.1 и эмулятора 26.1.4, запуск виртуального устройства из AVD Manager из Android Studio.

Ответ 16

Чтобы решить эту проблему, мне пришлось установить пакет с отсутствующим изображением системы с помощью SDK Manager.exe (в "C:\Program Files (x86)\Android\android-sdk"). Я заметил, что системный образ, который мне нужен ("android-23") отсутствовал в "C:\Program Files (x86)\Android\android-sdk\system-images".

После запуска SDK Manager.exe и установки соответствующих пакетов я мог запустить эмулятор в Android Studio.

Здесь решение, которое сработало для меня:

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

Ответ 17

Выполните следующие шаги, это должно решить вашу проблему

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

Ответ 18

NativeScript

Для тех, кто испытывает проблемы с запуском эмулятора Android через NativeScript, вероятно, что env vars ANDROID_HOME и ANDROID_SDK_ROOT были переопределены.

Мне удалось создать проблему для себя, установив Android Studio для создания другого эмулятора. Я сделал это после того, как я уже установил Android SDK через домашний кофе.

Поэтому, если во время установки NativeScript вы выбрали установку Android SDK через HomeBrew, NativeScript установит вышеуказанное следующим образом:

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

Впоследствии при установке Android Studio эти значения будут переопределены следующим образом:

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

Поэтому, естественно, существует конфликт со студией Android и установкой NativeScript/Brew для Android SDK. Удаление одного или другого и/или проверка того, что переменная env содержит правильный путь, должна запустить ваш эмулятор.

Ответ 19

У меня была та же проблема на Mac, и вот что я сделал:

  1. Я удалил Android-SDK, который я установил с Brew
  2. Я установил переменную ANDROID_HOM E такой же, как ANDROID_SDK_ROOT=/Users/username/Library/Android/sdk.

Ответ 20

Для оконного компьютера: после того, как вы пробовали много заданного пути, удалите путь и т.д. Что в конечном итоге должно найти папку C:\Users\johndoe\.android и удалить ее. после этого вы можете обедать своей Android-студией, попросит вас загрузить и установить новый AVD, и он переопределит и создаст новую новую папку и файлы. Это решает проблему.

Ответ 21

Я столкнулся с этой проблемой, так как я делал React Native с первых дней. Google устарел от инструментов командной строки и настаивает на студии Android. Решение для меня состояло в том, чтобы удалить инструменты командной строки

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

rm/usr/local/bin/android

открыть AS install sdk v6 как указано https://facebook.github.io/react-native/docs/getting-started.html#1-install-android-studio

сделать новый AVD, и он запустится без ошибок

Ответ 22

Ошибки на самом деле различаются. Полезно запустить опцию ./emulator with -verbose, так как она покажет фактические ошибки.

Ответ 23

Я решил эту проблему, удалив файл /usr/local/share/android-sdk, потому что этот файл был создан, когда я пытался с 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

этого достаточно....

Ответ 24

У меня была та же проблема. Я удалил эмулятор изображения в папку .android/avd и после установки lib32stdС++ 6:

sudo apt-get install lib32stdc++6

Итак, это работает! Магия?