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 је спреман за покретање.
# Листа доступних System Images
sdkmanager --list | grep system-images
# Инсталација System Image за API 35 са Google APIs
sdkmanager "system-images;android-35;google_apis;x86_64"
# Креирање AVD са именом pixel8_api35
avdmanager create avd -n pixel8_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d pixel_8
# Покретање креираног AVD-а
emulator -avd pixel8_api35 -gpu host -memory 2048
# Листа свих AVD-а
avdmanager list avd
AVD Manager омогућава детаљно подешавање хардверских карактеристика виртуелног уређаја. Главни параметри: RAM (оперативна меморија, препоручена вредност 2048–4096 MB), VM heap (величина хипа виртуелне машине, 256–512 MB), Internal Storage (интерна меморија, 2–8 GB) и 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
# Коришћење snapshot-ова за брзо покретање
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save
За максималне перформансе AVD-а: додијелите емулатору најмање 2–4 GB RAM-а, укључите GPU Host (користи графичку картицу рачунара за рендеровање), искључите звук (заставица -no-audio), ако није потребан, и користите Snapshots за брзи повратак у чисто стање. Snapshots чувају потпуно стање система — покретање из снимка траје 2–5 секунди уместо 30–60 секунди потпуног учитавања.
Такође се препоручује чување AVD-а на SSD диску — I/O операције при учитавању система и инсталацији 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 омогућава инсталирање апликација, покретање intent-ова, емулацију догађаја (позиви, 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 GB), искључен GPU Host. Укључите -gpu host и повећајте меморију на 2–4 GB — то ће убрзати емулатор 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође