При перемещении AVD или SDK в другой каталог или при замене старого SDK новым или при повреждении SDK может возникнуть несколько разных проблем.
Ниже я опишу все возможные проблемы, которые я знаю, и дам несколько способов их решения.
Конечно, я предполагаю, что у вас есть созданный AVD, и он находится в C:\Users\<user_name>\.android\avd
(Windows) или ~/.android/avd
(Linux / MacOS).
Если вы переехали .android
в другое место, установите для ANDROID_SDK_HOME
переменной среды путь родительского каталога, в котором находится ваш файл, .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, вероятно, имеет неправильное файловое дерево. Пожалуйста, сделайте следующее:
Убедитесь , что каталог SDK имеет , по крайней мере , эти 4 директории: emulator
, platforms
, platform-tools
, system-images
. Это очень важно! Эти каталоги должны присутствовать. Если некоторых из них не существует, просто создайте пустые каталоги.
Иди <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 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, только для чтения: не удалось открыть файл поддержки: не удалось открыть ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img
': неверный аргумент
Есть 2 способа это исправить:
Если вас не волнуют данные, которые содержит AVD, просто удалите все qcow2
файлы из каталога AVD (например, из <user_home>/.android/avd/<avd_name>
). В этом случае вы получите чистую версию Android, как после полной перезагрузки.
Если для вас важны данные на эмуляторе, откройте все qcow2
файлы по одному с помощью любого редактора HEX (я предпочитаю HxD ), найдите путь к базовому img
файлу и измените его на правильный в Overwrite
режиме (чтобы сохранить размер файла). Затем выберите путь и получите его длину в шестнадцатеричном формате (например 2F
). 2F
представляет косую черту ASCII /
. Поместите это в положение 13
:
PS: Не уверен, но, вероятно, есть некоторые утилиты, такие как qemu-img, позволяющие установить другое базовое изображение. Ну, мне проще редактировать бинарный файл вручную.
Теперь вы, вероятно, сможете успешно запустить виртуальное устройство Android. Я надеюсь, что это так :)