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 режими са пребацивањем између склопљеног и расклопљеног стања.
Емулатор подржава не само паметне телефоне, већ и Wear OS и Android TV. За Wear OS доступне су округле и правоугаоне AVD конфигурације, симулација окретања безела и гестова превлачења, као и тестирање интеракције са емулатором телефона. За Android TV користи се интерфејс са D-pad навигацијом. Обе платформе подржавају хардверско убрзање и тестирање са Google Play Services, што је важно за развојни циклус паметних сатова и телевизијских апликација.
Често постављана питања
Android Emulator користи потпуну ARM емулацију преко QEMU-а са транслацијом инструкција, док iOS Simator компајлира код за архитектуру хоста. 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође