Android AVD Home: расположение, настройка и перенос папки эмуляторов

Переменная окружения ANDROID_AVD_HOME определяет каталог, в котором Android SDK хранит виртуальные устройства (AVD), и именно её отсутствие или неверное значение чаще всего приводит к ошибке «emulator: ERROR: can't find AVD» при запуске эмулятора из командной строки. Если эмулятор не видит созданные в Android Studio виртуальные машины, первым делом проверьте, куда указывает эта переменная и существует ли по указанному пути папка с файлами .avd и .ini.

По умолчанию AVD размещаются в профиле пользователя, и со временем эта папка может разрастись до десятков гигабайт — снимки состояний, образы системы и данные приложений копятся быстро. В этой статье разберём, где именно находится AVD Home на Windows, macOS и Linux, как безопасно перенести его на другой диск и какие ошибки при этом возникают чаще всего.

Что такое AVD и зачем нужна переменная ANDROID_AVD_HOME

AVD (Android Virtual Device) — это конфигурация виртуального устройства, которую использует эмулятор Android. Каждый AVD включает описание аппаратных параметров (разрешение экрана, объём памяти), ссылку на системный образ и каталог с пользовательскими данными. Сами конфигурации хранятся отдельно от системных образов: образы лежат внутри SDK, а вот файлы виртуальных машин — именно в AVD Home.

Инструменты командной строки — avdmanager и emulator — ищут виртуальные устройства по следующей логике: сначала проверяется переменная ANDROID_AVD_HOME, затем ANDROID_SDK_HOME, и только если обе не заданы, используется стандартный путь в домашнем каталоге пользователя. Из-за этого, если переменная задана, но указывает на несуществующую или пустую папку, эмулятор «теряет» уже созданные устройства.

Где находится AVD Home по умолчанию

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

ОСПуть по умолчаниюКак быстро открыть
WindowsC:\Users\Имя\.android\avdВвести %USERPROFILE%\.android\avd в адресной строке Проводника
macOS~/.android/avdВ Finder: Переход → Переход к папке → ~/.android/avd
Linux~/.android/avdКоманда cd ~/.android/avd в терминале

Внутри каталога для каждого виртуального устройства создаётся пара объектов: файл ИмяУстройства.ini с указанием пути к данным и папка ИмяУстройства.avd с конфигурацией, снимками и образом userdata. Если вы видите здесь только файлы .ini без соответствующих папок — данные AVD повреждены или были перемещены.

Зачем переносить AVD Home на другой диск

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

Есть и другие сценарии:

  • 💾 Перенос на быстрый NVMe-диск — ускоряет загрузку эмулятора и работу со снимками состояния.
  • 🗂️ Единое хранилище проектов — удобно держать SDK, AVD и исходники в одной структуре папок на рабочем диске.
  • 👥 Общий доступ на CI-сервере — централизованное расположение AVD упрощает настройку агентов сборки.
  • 🔄 Переустановка системы — AVD на отдельном диске переживают сброс Windows без потери настроенных устройств.
⚠️ Внимание: не используйте для AVD Home пути с кириллицей или пробелами в именах папок. Эмулятор и некоторые утилиты SDK известны проблемами с обработкой таких путей — это может привести к отказу запуска виртуальных устройств. Выбирайте латинские имена без пробелов, например D:\Android\avd.

Как изменить расположение AVD Home: пошаговая инструкция

Рассмотрим процедуру на примере Windows — на macOS и Linux логика та же, меняется только способ установки переменной окружения. Перед началом закройте Android Studio и все запущенные эмуляторы.

Сначала создайте целевую папку, например D:\Android\avd, и скопируйте в неё всё содержимое текущего каталога %USERPROFILE%\.android\avd. Копирование, а не перемещение — принципиально важно: пока вы не убедились, что всё работает, исходные данные должны остаться нетронутыми.

Затем задайте переменную окружения. В Windows это делается через Система → Дополнительные параметры системы → Переменные среды: создайте пользовательскую переменную ANDROID_AVD_HOME со значением D:\Android\avd. В macOS и Linux добавьте в файл ~/.zshrc или ~/.bashrc строку:

export ANDROID_AVD_HOME="$HOME/Android/avd"

☑️ Проверка после переноса AVD Home

Выполнено: 0 / 5

После установки переменной перезапустите терминал и Android Studio, чтобы они подхватили новое окружение. Проверьте результат командой emulator -list-avds — в выводе должны появиться все ваши виртуальные устройства. Если список пуст, переменная либо не применилась, либо указывает не туда.

📊 Зачем вам понадобилось менять расположение AVD Home?
Не хватает места на системном диске
Эмулятор не видит созданные AVD
Настраиваю рабочее окружение с нуля
Переношу конфигурацию на другой компьютер

Типичные ошибки и их решение

Самая распространённая проблема — эмулятор запускается из Android Studio, но отказывается стартовать из командной строки (или наоборот). Причина почти всегда в том, что терминал и IDE работают с разными переменными окружения: например, переменная задана только для текущей сессии терминала, а Android Studio была запущена до её установки. Лечится полным перезапуском IDE после изменения переменных.

Вторая частая ситуация — файл .ini внутри AVD содержит абсолютный путь к папке с данными. Если вы переносите устройство вручную, откройте соответствующий .ini-файл в текстовом редакторе и проверьте параметр path — он должен указывать на актуальное расположение папки .avd. При несовпадении путей устройство появится в списке, но не запустится.

  • 🔍 AVD не отображается в Device Manager — проверьте, что переменная задана именно как пользовательская или системная, а не только в сессии терминала.
  • 📁 Ошибка «PANIC: Cannot find AVD system path» — отсутствует системный образ; он хранится в SDK, а не в AVD Home, переустановите образ через SDK Manager.
  • 🐢 Эмулятор стал медленнее после переноса — возможно, новый диск работает через медленный интерфейс или это сетевое хранилище; AVD чувствительны к скорости случайного доступа.
  • 🔒 Ошибки доступа к файлам — проверьте права на новую папку, особенно на Linux и macOS после копирования через sudo.
⚠️ Внимание: не редактируйте файлы внутри папки .avd, пока эмулятор запущен. Файлы снимков и userdata при этом могут быть повреждены, и устройство перестанет загружаться. Всегда дожидайтесь полного завершения работы эмулятора перед любыми операциями с его данными.
Как полностью пересоздать AVD, если перенос не помог

Если виртуальное устройство повреждено, проще создать новое, чем чинить старое. Откройте Device Manager в Android Studio, удалите проблемный AVD, затем вручную удалите оставшиеся файлы .ini и .avd из каталога AVD Home. После этого создайте устройство заново через мастер — вся конфигурация будет сгенерирована с корректными путями. Учтите, что установленные внутри эмулятора приложения и их данные при этом будут потеряны.

AVD Home и системные образы: в чём разница

Начинающие разработчики часто путают два каталога. ANDROID_SDK_ROOT (или путь, заданный в настройках Android Studio) указывает на сам SDK — платформы, build-tools, системные образы в подпапке system-images. ANDROID_AVD_HOME — только данные виртуальных устройств. Эти каталоги независимы: можно хранить SDK на одном диске, а AVD — на другом.

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

Часто задаваемые вопросы

Можно ли хранить AVD Home на сетевом диске?

Технически это возможно, но не рекомендуется: эмулятор интенсивно работает с файлами userdata и снимками, а сетевая задержка делает его работу крайне медленной, вплоть до таймаутов при загрузке. Для переноса лучше выбрать локальный диск.

Чем ANDROID_AVD_HOME отличается от ANDROID_SDK_HOME?

Переменная ANDROID_SDK_HOME исторически указывала на родительский каталог .android, внутри которого лежит папка avd. ANDROID_AVD_HOME указывает непосредственно на папку с AVD и имеет приоритет. Если заданы обе, используется ANDROID_AVD_HOME.

Android Studio не видит AVD после смены переменной. Что делать?

Полностью закройте IDE и запустите её заново — переменные окружения считываются при старте процесса. Если не помогло, проверьте через emulator -list-avds в новом окне терминала, видит ли система устройства. Отсутствие в списке означает неверный путь в переменной или отсутствие файлов в целевой папке.

Можно ли просто переместить папку .android целиком?

Можно, но тогда потребуется задать переменную ANDROID_SDK_HOME, указывающую на новое расположение, либо обе переменные. Учтите, что внутри .android хранятся также ключи отладки и кэши — переносите папку целиком, не выборочно.

Почему папка AVD занимает так много места?

Основной объём занимают образ userdata с установленными приложениями и файлы снимков состояния Quick Boot. Удалить ненужные снимки можно через Device Manager (пункт Wipe Data или Cold Boot), а лишние устройства — просто удалить вместе с их папками.