Android Emulator — компонент Android Studio, который запускает полноценную виртуальную копию Android-устройства на компьютере разработчика. Эмулятор использует QEMU для трансляции ARM-инструкций на x86_64 архитектуру хоста. Документация Google описывает полный цикл настройки виртуальных устройств AVD и аппаратного ускорения.
Главное
Android Emulator — виртуальное Android-устройство, работающее на базе QEMU (Quick EMUlator) и эмулирующее аппаратную платформу Android. В отличие от iOS Simulator, Android Emulator полноценно транслирует ARM-инструкции, что позволяет запускать код, скомпилированный для мобильной архитектуры, на x86_64 хосте.
Google выпустила Android Emulator в 2007 году вместе с первой версией Android SDK. С тех пор эмулятор прошёл эволюцию от медленного ARM-only решения до высокопроизводительной системы с поддержкой GPU, аппаратного ускорения и эмуляции датчиков. По данным Google (Android Developer Blog, 2025), современный эмулятор с HAxM работает в 4-5 раз быстрее первого поколения.
Эмулятор поддерживает все компоненты Android-устройства: CPU, GPU, RAM, хранилище, сенсорный экран, акселерометр, гироскоп, GPS, камеру, батарею, NFC, Bluetooth и Wi-Fi. Разработчик может симулировать входящие звонки, SMS, различные уровни сигнала сети и геолокацию через Extended Controls.
Android Emulator использует системные образы (System Images), которые загружаются через SDK Manager. Каждый системный образ содержит полную копию Android-прошивки для выбранного API уровня и целевой архитектуры процессора. Доступны образы с разной архитектурой: x86_64 (рекомендуется с HAxM), ARM64 (для тестирования ARM-совместимости) и Google APIs (с предустановленными Google Play Services). Для Wear OS, Android TV и Automotive также есть отдельные образы.
// Проверка типа эмулятора в коде
val isEmulator = Build.FINGERPRINT
.contains("generic") ||
Build.PRODUCT.contains("sdk")
if (isEmulator) {
Timber.d("Приложение запущено в эмуляторе")
}AVD (Android Virtual Device) — конфигурация виртуального устройства для эмулятора. AVD Manager в Android Studio позволяет создавать устройства с любой комбинацией характеристик: модель, размер экрана, плотность пикселей, объём RAM, размер хранилища и версия Android.
| Параметр AVD | Рекомендация для разработки | Рекомендация для тестирования |
|---|---|---|
| Архитектура | x86_64 (с HAxM) | ARM64 (чистая эмуляция) |
| RAM | 2048-4096 MB | 1536-2048 MB |
| Внутреннее хранилище | 8-16 GB | 4-8 GB |
| API Level | Последний стабильный | Минимальный поддерживаемый |
| Google Play Services | Включить | По необходимости |
Создание AVD выполняется через Device Manager в Android Studio: выберите аппаратный профиль (Pixel, Nexus, Galaxy и другие), системный образ и настройте параметры. После создания устройство появляется в списке Run Configurations для непосредственного запуска приложения.
Эмулятор поддерживает Quick Boot — сохраняет состояние AVD как snapshot и восстанавливает его при следующем запуске. Время загрузки сокращается с 30-60 секунд до 2-5 секунд. Для сброса к чистому состоянию используйте Cold Boot Now в AVD Manager.
ARM-трансляция — ключевая технология Android Emulator, конвертирующая ARM-инструкции в x86_64 на лету. Без трансляции эмулятор мог бы запускать только x86_64 образы, что ограничивает тестирование. Google использует libhoudini для ARM→x86 трансляции и библиотеки Intel для HAXM-ускорения.
# Проверка статуса HAxM на Windows
sc query "IntelHaxm"
# Установка HAxM через SDK Manager
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"
# Запуск эмулятора с аппаратным ускорением
emulator -avd Pixel_9_API_35 -accel on -gpu autoIntel HAxM (Hardware Accelerated Execution Manager) — драйвер виртуализации для процессоров Intel VT-x, ускоряющий эмулятор в 3-5 раз. На Windows с процессором AMD используйте Windows Hyper-V Platform и WHPX. Без аппаратного ускорения эмулятор работает медленно, с задержками анимаций до 1-2 секунд.
Для macOS на Apple Silicon (M-серия) аппаратное ускорение работает нативно через Hypervisor.framework. По данным Google (Android Emulator Release Notes 2025), эмулятор на M2 Max достигает 95% производительности реального устройства при базовых операциях.
Выбор между эмулятором и реальным устройством зависит от этапа разработки. На эмуляторе удобно разрабатывать и отлаживать: быстрый запуск, моментальный деплой, Extended Controls для симуляции датчиков. На реальном устройстве — финальное тестирование производительности, батареи и работы с железом.
| Сценарий | Эмулятор | Реальное устройство |
|---|---|---|
| Разработка UI | Да (быстро) | Нет (долгий деплой) |
| Тестирование производительности | Нет (завышенные показатели) | Да (реальные замеры) |
| Эмуляция датчиков (GPS, NFC) | Да (Extended Controls) | Ограниченно |
| Энергопотребление | Не поддерживается | Да (Battery Historian) |
| Тестирование сети (2G/3G/4G/5G) | Да (симуляция скорости) | Да (с SIM-картой) |
| CI/CD автоматизация | Да (без физических устройств) | Сложно (ферма устройств) |
Производительность эмулятора с аппаратным ускорением часто выше реального бюджетного устройства. Поэтому финальные тесты проводите на реальных устройствах с целевым уровнем производительности.
Определение среды выполнения в Kotlin полезно для отключения некорректного кода или добавления отладочной информации. Android предоставляет Build.FINGERPRINT, Build.PRODUCT и Build.HARDWARE для этой цели.
object EmulatorDetector {
val isEmulator: Boolean
get() = Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.contains("emulator")
|| Build.HARDWARE == "ranchu"
|| Build.HARDWARE == "goldfish"
fun logEnvironment() {
if (isEmulator) {
Log.d("EmulatorDetector", "Среда: эмулятор")
}
}
}Использование эмулятор-детектора помогает при отладке: на эмуляторе можно включить расширенные логи, отключить анимации или заменить реальные вызовы API на моки. Избегайте проверки в продакшн-сборках, если это не требуется для бизнес-логики приложения.
Android Emulator используется для автоматизированного тестирования на CI-серверах. Для запуска тестов требуется создать AVD, запустить эмулятор и дождаться полной загрузки системы. Gradle Managed Devices упрощают этот процесс: конфигурация AVD описывается в build.gradle.kts.
// build.gradle.kts — Gradle Managed Devices
android {
testOptions {
managedDevices {
devices {
register<ManagedVirtualDevice>("pixel9Api35") {
device = "Pixel 9"
apiLevel = 35
systemImageSource = "google"
}
}
}
}
}Для запуска эмулятора вручную используйте командную строку: emulator -avd Pixel_9_API_35 -no-window -no-audio -gpu swiftshader_indirect. Флаг -no-window отключает графический интерфейс для серверной среды, а -gpu swiftshader_indirect обеспечивает программный рендеринг без GPU хоста.
Extended Controls в Android Emulator предоставляет мощные инструменты для симуляции сетевых условий: задержка (latency), пропускная способность (bandwidth) и тип сети (GPRS, EDGE, 3G, 4G, 5G). Это позволяет тестировать поведение приложения при медленном соединении без физической поездки в зону с плохим покрытием.
Симуляция датчиков включает акселерометр, гироскоп и магнитометр через виртуальные 3D-модели устройств. Для GPS можно загрузить GPX-файлы с маршрутами — эмулятор симулирует движение по координатам, что критично для тестирования навигационных приложений. Камера эмулируется через веб-камеру хоста или загрузку изображений.
Multi-display в Android Emulator поддерживает несколько экранов для планшетов и складных устройств. Extended Controls позволяют изменить ориентацию, размер экрана и плотность пикселей (DPI) без перезапуска эмулятора. Для тестирования foldable-устройств доступны режимы Foldable с переключением между сложенным и разложенным состоянием.
Эмулятор поддерживает не только смартфоны, но и Wear OS и Android TV. Для Wear OS доступны круглые и прямоугольные AVD-конфигурации, симуляция вращения безеля и жестов смахивания, а также тестирование взаимодействия с телефонным эмулятором. Для Android TV используется интерфейс с D-pad навигацией. Обе платформы поддерживают аппаратное ускорение и тестирование с Google Play Services, что важно для dev-цикла умных часов и телевизионных приложений.
Часто задаваемые вопросы
Android Emulator использует полноценную ARM-эмуляцию через QEMU с трансляцией инструкций, тогда как iOS Simulator компилирует код под архитектуру хоста. Android Emulator поддерживает GPU, камеру, датчики, Bluetooth, NFC — iOS Simulator не поддерживает большинство этих функций.
В Kotlin проверяйте Build.FINGERPRINT на наличие "generic" или "emulator", а также Build.HARDWARE на "ranchu" или "goldfish". Используйте Build.PRODUCT как дополнительный маркер — для эмулятора он содержит "sdk_google" или "google_sdk".
Включите Intel HAxM (Intel VT-x) или Windows Hyper-V Platform (WHPX) для процессоров AMD. Используйте x86_64 системные образы с аппаратным ускорением. Выделите не менее 4 ГБ RAM эмулятору в AVD Manager. Включите Quick Boot для snapshot-загрузки.
Да, Android Emulator поддерживает эмуляцию NFC начиная с Android 10 (API 29). Extended Controls → Phone → NFC позволяют отправлять NDEF-сообщения. Поддерживаются чтение/запись тегов, peer-to-peer и HCE режимы. Для полноценного тестирования используйте реальное устройство с NFC-чипом.
Для ежедневной разработки выбирайте x86_64 с Google APIs — максимальная производительность и полный набор сервисов. Для тестирования совместимости используйте ARM64 образы. Для CI — образы без Google Play Services, они меньше по размеру и быстрее загружаются.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также