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 | Останній стабільний | Мінімальний підтримуваний |
| 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.