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 извиквания с mock-ове. Избягвайте проверката в продукционни сборки, освен ако не се изисква от бизнес логиката на приложението.
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 с превключване между сгънато и разгънато състояние.
Емулаторът поддържа не само смартфони, но и Wear OS и Android TV. За Wear OS са налични кръгли и правоъгълни AVD конфигурации, симулация на въртене на bezel и жестове за плъзгане, както и тестване на взаимодействие с телефонния емулатор. За Android TV се използва интерфейс с D-pad навигация. И двете платформи поддържат хардуерно ускорение и тестване с Google Play Services, което е важно за цикъла на разработка на умни часовници и телевизионни приложения.
Често задавани въпроси
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 GB 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също