AVD (Android Virtual Device) — это конфигурация эмулятора, которая имитирует реальное Android-устройство на компьютере разработчика. Каждый AVD включает выбранную версию ОС (System Image), тип устройства (телефон, планшет, Wear OS), размер экрана и объём памяти. По данным Google Android Developers, 2026, AVD используют для тестирования приложений на разных версиях и конфигурациях Android без необходимости покупать десятки физических устройств. QEMU — гипервизор, на котором работает эмулятор.
Главное
AVD (Android Virtual Device) — это программная конфигурация, описывающая виртуальное Android-устройство. В отличие от физического телефона, AVD не требует железа — он запускается на компьютере через эмулятор Android, основанный на QEMU. Разработчик создаёт столько AVD, сколько нужно для тестирования: под разные версии Android, размеры экрана, объёмы памяти и плотности пикселей.
Каждый AVD привязан к конкретной SDK Platform. Это значит, что для создания AVD с Android 14 (API Level 34) нужно сначала установить System Image этой версии через SDK Manager. System Image — это образ операционной системы, который включает все системные приложения, сервисы Google (если выбран образ Google APIs) и runtime-компоненты. Google рекомендует использовать образы Google APIs с сервисами Google Play для максимальной совместимости с реальными устройствами.
AVD незаменим при разработке по нескольким причинам. Во-первых, он позволяет тестировать приложение на разных версиях Android без покупки десятков устройств. Во-вторых, AVD поддерживает Snapshots — сохранение состояния системы, что ускоряет запуск. В-третьих, эмулятор интегрирован с Android Studio: установка APK, отладка и логирование работают так же, как на физическом устройстве.
AVD поддерживает различные типы устройств: телефоны (Phone), планшеты (Tablet), часы (Wear OS), телевизоры (Android TV) и автомобильные системы (Android Automotive). Для каждого типа AVD Manager предоставляет готовые профили от Google: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab и другие. Профиль устройства задаёт размер экрана, разрешение, плотность пикселей (dpi) и навигацию (жесты или кнопки).
| Тип устройства | Пример профиля | Разрешение | dpi |
|---|---|---|---|
| Phone | Pixel 8 | 1080x2400 | 420 |
| Phone | Pixel 9 Pro | 1280x2856 | 490 |
| Tablet | Pixel Tablet | 2560x1600 | 320 |
| Wear OS | Pixel Watch | 384x384 | 320 |
| Android TV | Android TV 4K | 1920x1080 | 240 |
Каждый AVD — это набор файлов конфигурации и образов. Основной конфигурационный файл — config.ini, который хранит параметры виртуального устройства: имя, тип, API Level, размер экрана, объём RAM и VM heap. Файл находится в каталоге $HOME/.android/avd/ИмяAVD.avd/ и может быть изменён вручную, хотя обычно его редактируют через AVD Manager.
Кроме config.ini, в каталоге AVD хранятся: userdata.img (образ пользовательских данных — приложения, настройки, файлы), system.img (ссылка на System Image установленной SDK Platform), cache.img (кэш) и sdcard.img (образ SD-карты). При выполнении Wipe Data удаляется userdata.img и создаётся новый пустой образ. Snapshots сохраняются в отдельной папке snapshots/ внутри каталога AVD.
System Image загружается отдельно от AVD — один образ может использоваться несколькими виртуальными устройствами. Системные образы хранятся в каталоге Android SDK: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/. Типы образов: google_apis (с сервисами Google), google_apis_playstore (с Google Play Store) и default (чистый AOSP без сервисов Google).
| Тип образа | Сервисы Google | Google Play | Для чего |
|---|---|---|---|
| AOSP (default) | Нет | Нет | Базовое тестирование, чистая Android |
| Google APIs | Да | Нет | Тестирование Google сервисов, Maps, FCM |
| Google Play | Да | Да | Полное тестирование с Play Store и лицензированием |
AVD Manager — это графический инструмент в Android Studio для создания и управления виртуальными устройствами. Открыть его можно через меню Tools → Device Manager или через иконку на панели инструментов. AVD Manager показывает список созданных устройств, их статус (запущен/остановлен), версию Android и доступные действия (запуск, остановка, wipe data, редактирование).
Для создания нового AVD нажмите кнопку Create device. Выберите профиль устройства из списка готовых — Google предоставляет профили для всех популярных устройств. После выбора профиля укажите System Image: версию Android и тип образа. Для новых проектов выбирайте последнюю стабильную версию с образом Google APIs. Затем настройте имя AVD, ориентацию экрана, объём RAM и VM heap. После создания AVD готов к запуску.
# 1. Список доступных System Images
sdkmanager --list | grep system-images
# 2. Установка System Image для API 35 с Google APIs
sdkmanager "system-images;android-35;google_apis;x86_64"
# 3. Создание AVD с именем pixel8_api35
avdmanager create avd -n pixel8_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d pixel_8
# 4. Запуск созданного AVD
emulator -avd pixel8_api35 -gpu host -memory 2048
# 5. Список всеx AVD
avdmanager list avd
AVD Manager позволяет детально настроить аппаратные характеристики виртуального устройства. Основные параметры: RAM (оперативная память, рекомендуемое значение 2048–4096 МБ), VM heap (размер кучи виртуальной машины, 256–512 МБ), Internal Storage (внутренняя память, 2–8 ГБ) и SD Card (виртуальная SD-карта). Эти параметры влияют на производительность приложения и его поведение при нехватке памяти.
Дополнительные настройки включают: камера (эмулированная или подключение веб-камеры хоста), датчики (акселерометр, гироскоп), NFC, Bluetooth и батарея. Например, для тестирования приложений с определением положения можно эмулировать поворот устройства через кнопки управления эмулятора или через ADB. Эмуляция датчиков позволяет тестировать сценарии, которые сложно воспроизвести на физическом устройстве.
| Параметр | Описание | Рекомендуемое значение |
|---|---|---|
| hw.ramSize | Оперативная память устройства | 2048 |
| vm.heapSize | Размер кучи виртуальной машины | 256 |
| hw.gpuEnabled | Аппаратное ускорение графики | yes |
| hw.gpuMode | Режим GPU (host/mesa) | host |
| disk.dataPartition.size | Размер раздела данных | 4096M |
| hw.camera | Тип эмуляции камеры | emulated |
Скорость работы AVD напрямую зависит от аппаратной виртуализации. На Windows используется Windows Hypervisor Platform (WHPX), на macOS — Hypervisor.Framework, на Linux — KVM. Если виртуализация отключена, AVD работает в режимечисто программной эмуляции, что в 10–20 раз медленнее. Для проверки включена ли виртуализация, запустите эмулятор с флагом -accel-check.
Второй ключевой фактор — выбор архитектуры System Image. Образы x86_64 работают значительно быстрее arm64-v8a на компьютерах с процессорами Intel и AMD, так как не требуют динамической трансляции инструкций ARM. Всегда используйте образы x86_64 для разработки на Windows и macOS с Intel-процессорами. На ARM-процессорах Mac (Apple Silicon) используйте нативные arm64-v8a образы.
# Запуск с аппаратной виртуализацией и GPU-ускорением
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4
# Проверка поддержки виртуализации
emulator -accel-check
# Запуск без графического интерфейса (для CI)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off
# Использование snapshots для быстрого запуска
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save
Для максимальной производительности AVD: выделите эмулятору минимум 2–4 ГБ RAM, включите GPU Host (использует видеокарту компьютера для рендеринга), отключите звук (флаг -no-audio), если он не требуется, и используйте Snapshots для быстрого возврата к чистому состоянию. Snapshots сохраняют полное состояние системы — запуск из снимка занимает 2–5 секунд вместо 30–60 секунд полной загрузки.
Также рекомендуется хранить AVD на SSD-диске — операции ввода-вывода при загрузке системы и установке APK значительно ускоряются. Для работы нескольких AVD одновременно увеличьте общий объём RAM на компьютере и используйте флаг -read-only для неизменяемых эмуляторов.
Полный контроль над AVD возможен через командную строку без Android Studio. Инструменты avdmanager и emulator входят в состав Android SDK и выполняют все операции: создание, удаление, запуск и настройку AVD. Командная строка особенно полезна в CI/CD-пайплайнах, где нет графического интерфейса, и для автоматизации тестирования.
# Создать AVD с кастомными параметрами
avdmanager create avd -n test_device \
-k "system-images;android-34;google_apis;x86_64" \
--device "pixel_8" \
--force
# Удалить AVD
avdmanager delete avd -n test_device
# Клонировать AVD (через копирование файлов)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd
# Сбросить данные AVD
emulator -avd test_device -wipe-data
# Установить APK на запущенный AVD
adb -s emulator-5554 install app-release.apk
После запуска AVD с ним можно работать через ADB (Android Debug Bridge), как с физическим устройством. ADB позволяет устанавливать приложения, запускать intents, эмулировать события (звонки, SMS, GPS), делать скриншоты и записывать видео экрана. Это делает AVD полноценной средой для автоматизированного тестирования.
# Список подключённых устройств (включая AVD)
adb devices
# Эмуляция входящего звонка
adb emu gsm call +15551234567
# Эмуляция GPS-координат
adb emu geo fix -122.084 37.422
# Сделать скриншот
adb exec-out screencap -p > screenshot.png
# Отправить SMS
adb emu sms send +15551234567 "Hello from AVD"
Иногда разработчику нужно определить в коде, запущено ли приложение на эмуляторе или на физическом устройстве. Это может понадобиться для отключения аналитики (чтобы не засорять продакшн-данные), включения расширенного логирования или отключения аппаратно-зависимых функций, которые не работают на эмуляторе. Google предоставляет стандартные методы проверки через Build класс и свойства системы.
object EmulatorDetector {
fun isEmulator(): Boolean {
return (Build.BRAND.startsWith("generic") &&
Build.DEVICE.startsWith("generic")) ||
Build.FINGERPRINT.startsWith("generic") ||
Build.FINGERPRINT.startsWith("unknown") ||
Build.HARDWARE.contains("goldfish") ||
Build.HARDWARE.contains("ranchu") ||
Build.MODEL.contains("google_sdk") ||
Build.MODEL.contains("Emulator") ||
Build.MODEL.contains("Android SDK")
}
}
// Использование
if (EmulatorDetector.isEmulator()) {
Log.d("App", "Running on emulator — enable debug mode")
}
Дополнительный способ — чтение системных свойств через Build.getRadioVersion() и проверка ro.kernel.qemu. На эмуляторе radio version возвращает null, а qemu-свойство установлено в 1. Этот метод более надёжен на старых версиях Android, где Build.FINGERPRINT может быть подменён производителем устройства.
fun isRunningOnEmulator(): Boolean {
// Проверка через radio version — на эмуляторе всегда null
val radioVersion = try {
Build.getRadioVersion()
} catch (e: Exception) {
null
}
if (radioVersion.isNullOrBlank()) return true
// Проверка через системные свойства
return try {
val props = ProcessBuilder()
.command("getprop", "ro.kernel.qemu")
.start()
.inputStream.bufferedReader().readText().trim()
props == "1"
} catch (e: Exception) {
false
}
}
Часто задаваемые вопросы
AVD работает на QEMU и не может полностью имитировать аппаратные особенности: реальную камеру, NFC, Bluetooth. AVD идеален для UI-тестирования, проверки lifecycle и совместимости с версиями ОС. Для точного тестирования камеры и датчиков нужно физическое устройство.
Минимум 2–3 AVD: самый новый API Level для проверки новых функций, минимальный поддерживаемый (minSdk) для совместимости и популярная модель устройства (Pixel 8 или Samsung Galaxy) для тестирования UI под конкретный экран.
Основные причины: отключена аппаратная виртуализация (WHPX, Hypervisor.Framework, KVM), мало RAM (менее 2 ГБ), отключён GPU Host. Включите -gpu host и увеличьте память до 2–4 ГБ — это ускорит эмулятор в 3–5 раз.
Да. Эмулятор запускается через emulator -avd Имя_AVD из командной строки. Для этого нужны Android SDK, Platform-Tools и установленная System Image. AVD Manager также доступен как консольная утилита avdmanager.
В AVD Manager выберите Wipe Data — это удалит userdata.img и вернёт эмулятор в исходное состояние. Из командной строки: emulator -avd Имя -wipe-data. Snapshots при этом сохраняются, если не удалить их отдельно.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также