AVD (Android Virtual Device) — proqramçının kompüterində real Android cihazını təqlid edən emulator konfiqurasiyasıdır. Hər bir AVD seçilmiş OS versiyasını (System Image), cihaz növünü (telefon, planşet, Wear OS), ekran ölçüsünü və yaddaş miqdarını əhatə edir. Google Android Developers, 2026 məlumatına görə, AVD onlarla fiziki cihaz almaq zərurəti olmadan tətbiqləri müxtəlif Android versiyaları və konfiqurasiyalarında test etmək üçün istifadə olunur. QEMU — emulatorun işlədiyi hipervizordur.
Əsas məqamlar
AVD (Android Virtual Device) — virtual Android cihazını təsvir edən proqram konfiqurasiyasıdır. Fiziki telefondan fərqli olaraq, AVD aparat tələb etmir — o, QEMU əsaslı Android emulatoru vasitəsilə kompüterdə işə salınır. Proqramçı test üçün lazım olan qədər AVD yaradır: müxtəlif Android versiyaları, ekran ölçüləri, yaddaş həcmləri və piksel sıxlıqları üçün.
Hər bir AVD müəyyən SDK Platform-a bağlıdır. Bu o deməkdir ki, Android 14 (API Level 34) ilə AVD yaratmaq üçün əvvəlcə SDK Manager vasitəsilə bu versiyanın System Image-ni quraşdırmaq lazımdır. System Image — bütün sistem tətbiqlərini, Google xidmətlərini (əgər Google APIs təsviri seçilibsə) və runtime komponentlərini özündə birləşdirən əməliyyat sistemi təsviridir. Google tövsiyə edir maksimum uyğunluq üçün Google Play xidmətləri ilə Google APIs təsvirlərindən istifadə etməyi.
AVD proqramlaşdırmada bir neçə səbəbə görə əvəzolunmazdır. Birincisi, onlarla cihaz almadan tətbiqi müxtəlif Android versiyalarında test etməyə imkan verir. İkincisi, AVD Snapshots — sistem vəziyyətinin saxlanmasını dəstəkləyir, bu da işə salmanı sürətləndirir. Üçüncüsü, emulator Android Studio ilə inteqrasiya olunub: APK quraşdırma, debug və loglama fiziki cihazda olduğu kimi işləyir.
AVD müxtəlif cihaz növlərini dəstəkləyir: telefonlar (Phone), planşetlər (Tablet), saatlar (Wear OS), televizorlar (Android TV) və avtomobil sistemləri (Android Automotive). Hər bir növ üçün AVD Manager Google-dan hazır profillər təqdim edir: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab və digərləri. Cihaz profili ekran ölçüsünü, qətnaməni, piksel sıxlığını (dpi) və naviqasiyanı (jestlər və ya düymələr) təyin edir.
| Cihaz növü | Nümunə profil | Qətnamə | 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 |
Hər bir AVD konfiqurasiya faylları və təsvirlər dəstidir. Əsas konfiqurasiya faylı — config.ini, virtual cihazın parametrlərini saxlayır: ad, növ, API Level, ekran ölçüsü, RAM və VM heap həcmi. Fayl $HOME/.android/avd/AVDAdı.avd/ kataloqunda yerləşir və əl ilə dəyişdirilə bilər, baxmayaraq ki, adətən AVD Manager vasitəsilə redaktə edilir.
config.ini-dən əlavə, AVD kataloqunda saxlanılır: userdata.img (istifadəçi məlumatlarının təsviri — tətbiqlər, parametrlər, fayllar), system.img (quraşdırılmış SDK Platform-un System Image-nə istinad), cache.img (keş) və sdcard.img (SD kart təsviri). Wipe Data yerinə yetirilərkən userdata.img silinir və yeni boş təsvir yaradılır. Snapshots AVD kataloqu daxilində ayrıca snapshots/ qovluğunda saxlanılır.
System Image AVD-dən ayrı yüklənir — bir təsvir bir neçə virtual cihaz tərəfindən istifadə edilə bilər. Sistem təsvirləri Android SDK kataloqunda saxlanılır: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/. Təsvir növləri: google_apis (Google xidmətləri ilə), google_apis_playstore (Google Play Store ilə) və default (Google xidmətləri olmadan təmiz AOSP).
| Təsvir növü | Google xidmətləri | Google Play | Nə üçün |
|---|---|---|---|
| AOSP (default) | Yox | Yox | Əsas test, təmiz Android |
| Google APIs | Bəli | Yox | Google xidmətlərinin, Maps, FCM testi |
| Google Play | Bəli | Bəli | Play Store və lisenziyalaşdırma ilə tam test |
AVD Manager — Android Studio-da virtual cihazları yaratmaq və idarə etmək üçün qrafik alətdir. Onu Tools → Device Manager menyusu və ya alətlər panelindəki işarə vasitəsilə açmaq olar. AVD Manager yaradılmış cihazların siyahısını, onların statusunu (işləyir/dayandırılıb), Android versiyasını və mövcud əməliyyatları (işə salma, dayandırma, wipe data, redaktə) göstərir.
Yeni AVD yaratmaq üçün Create device düyməsini sıxın. Hazır profillər siyahısından cihaz profilini seçin — Google bütün məşhur cihazlar üçün profillər təqdim edir. Profil seçdikdən sonra System Image göstərin: Android versiyası və təsvir növü. Yeni layihələr üçün Google APIs təsviri ilə ən son stabil versiyanı seçin. Sonra AVD adını, ekran oriyentasiyasını, RAM və VM heap həcmini konfiqurasiya edin. Yaradıldıqdan sonra AVD işə salmağa hazırdır.
# Mövcud System Images siyahısı
sdkmanager --list | grep system-images
# Google APIs ilə API 35 üçün System Image quraşdırılması
sdkmanager "system-images;android-35;google_apis;x86_64"
# pixel8_api35 adı ilə AVD yaradılması
avdmanager create avd -n pixel8_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d pixel_8
# Yaradılmış AVD-nin işə salınması
emulator -avd pixel8_api35 -gpu host -memory 2048
# Bütün AVD-lərin siyahısı
avdmanager list avd
AVD Manager virtual cihazın aparat xüsusiyyətlərini ətraflı konfiqurasiya etməyə imkan verir. Əsas parametrlər: RAM (operativ yaddaş, tövsiyə olunan dəyər 2048–4096 MB), VM heap (virtual maşın yığınının ölçüsü, 256–512 MB), Internal Storage (daxili yaddaş, 2–8 GB) və SD Card (virtual SD kart). Bu parametrlər tətbiqin performansına və yaddaş çatışmazlığı zamanı davranışına təsir edir.
Əlavə parametrlərə daxildir: kamera (emulə edilmiş və ya host veb-kameranın qoşulması), sensorlar (akselerometr, giroskop), NFC, Bluetooth və batareya. Məsələn, mövqe təyini ilə tətbiqləri test etmək üçün emulatorun idarəetmə düymələri və ya ADB vasitəsilə cihazın fırlanmasını emulə etmək olar. Sensorların emulasiyası fiziki cihazda çətin təkrarlanan ssenariləri test etməyə imkan verir.
| Parametr | Təsvir | Tövsiyə olunan dəyər |
|---|---|---|
| hw.ramSize | Cihazın operativ yaddaşı | 2048 |
| vm.heapSize | Virtual maşın yığınının ölçüsü | 256 |
| hw.gpuEnabled | Qrafikin aparat sürətləndirilməsi | yes |
| hw.gpuMode | GPU rejimi (host/mesa) | host |
| disk.dataPartition.size | Məlumat bölməsinin ölçüsü | 4096M |
| hw.camera | Kamera emulasiyasının növü | emulated |
AVD-nin iş sürəti birbaşa aparat virtualizasiyasından asılıdır. Windows-da Windows Hypervisor Platform (WHPX), macOS-da Hypervisor.Framework, Linux-da KVM istifadə olunur. Virtualizasiya söndürülübsə, AVD təmiz proqram emulasiyası rejimində işləyir, bu da 10–20 dəfə yavaşdır. Virtualizasiyanın açıq olub-olmadığını yoxlamaq üçün emulatoru -accel-check flagı ilə işə salın.
İkinci əsas amil System Image arxitekturasının seçimidir. x86_64 təsvirləri Intel və AMD prosessorlu kompüterlərdə arm64-v8a-dan əhəmiyyətli dərəcədə sürətli işləyir, çünki ARM təlimatlarının dinamik tərcüməsini tələb etmir. Intel prosessorlu Windows və macOS-da proqramlaşdırma üçün həmişə x86_64 təsvirlərindən istifadə edin. Mac (Apple Silicon) ARM prosessorlarında yerli arm64-v8a təsvirlərindən istifadə edin.
# Aparat virtualizasiyası və GPU sürətləndirilməsi ilə işə salma
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4
# Virtualizasiya dəstəyinin yoxlanılması
emulator -accel-check
# Qrafik interfeysi olmadan işə salma (CI üçün)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off
# Sürətli işə salma üçün snapshot-lardan istifadə
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save
Maksimum AVD performansı üçün: emulatora ən azı 2–4 GB RAM ayırın, GPU Host-u aktivləşdirin (render üçün kompüterin video kartından istifadə edir), səsi söndürün (-no-audio flagı), əgər tələb olunmursa, və təmiz vəziyyətə sürətli qayıtmaq üçün Snapshots-dan istifadə edin. Snapshots sistemin tam vəziyyətini saxlayır — şəkildən işə salma 30–60 saniyə tam yükləmə əvəzinə 2–5 saniyə çəkir.
Həmçinin AVD-ni SSD diskdə saxlamaq tövsiyə olunur — sistem yükləməsi və APK quraşdırılması zamanı giriş-çıxış əməliyyatları əhəmiyyətli dərəcədə sürətlənir. Eyni anda bir neçə AVD ilə işləmək üçün kompüterdə ümumi RAM miqdarını artırın və dəyişməz emulatorlar üçün -read-only flagından istifadə edin.
AVD üzərində tam nəzarət Android Studio olmadan əmr sətrindən mümkündür. avdmanager və emulator alətləri Android SDK-nın tərkibinə daxildir və bütün əməliyyatları yerinə yetirir: AVD-nin yaradılması, silinməsi, işə salınması və konfiqurasiyası. Əmr sətri xüsusilə qrafik interfeysi olmayan CI/CD pipeline-larında və test avtomatlaşdırması üçün faydalıdır.
# Xüsusi parametrlərlə AVD yarat
avdmanager create avd -n test_device \
-k "system-images;android-34;google_apis;x86_64" \
--device "pixel_8" \
--force
# AVD-ni sil
avdmanager delete avd -n test_device
# AVD-ni klonla (faylları kopyalamaqla)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd
# AVD məlumatlarını sıfırla
emulator -avd test_device -wipe-data
# İşləyən AVD-də APK quraşdır
adb -s emulator-5554 install app-release.apk
AVD işə salındıqdan sonra onunla ADB (Android Debug Bridge) vasitəsilə fiziki cihaz kimi işləmək olar. ADB tətbiqləri quraşdırmağa, intent-ləri işə salmağa, hadisələri (zənglər, SMS, GPS) emulə etməyə, ekran şəkilləri çəkməyə və ekran videosunu yazmağa imkan verir. Bu, AVD-ni avtomatlaşdırılmış test üçün tam hüquqlu mühitə çevirir.
# Qoşulmuş cihazların siyahısı (AVD daxil olmaqla)
adb devices
# Daxil olan zəngin emulasiyası
adb emu gsm call +15551234567
# GPS koordinatlarının emulasiyası
adb emu geo fix -122.084 37.422
# Ekran şəkli çək
adb exec-out screencap -p > screenshot.png
# SMS göndər
adb emu sms send +15551234567 "Hello from AVD"
Bəzən proqramçı kodda tətbiqin emulator və ya fiziki cihazda işə salındığını müəyyən etməlidir. Bu, analitikanı söndürmək (prodakşn məlumatlarını çirkləndirməmək üçün), genişləndirilmiş loglamanı aktivləşdirmək və ya emulatorda işləməyən aparatdan asılı funksiyaları söndürmək üçün lazım ola bilər. Google Build sinfi və sistem xüsusiyyətləri vasitəsilə yoxlama üçün standart metodlar təqdim edir.
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")
}
}
// İstifadə
if (EmulatorDetector.isEmulator()) {
Log.d("App", "Running on emulator — enable debug mode")
}
Əlavə üsul — Build.getRadioVersion() vasitəsilə sistem xüsusiyyətlərini oxumaq və ro.kernel.qemu-nu yoxlamaq. Emulatorda radio version null qaytarır, qemu xüsusiyyəti isə 1 olaraq təyin edilir. Bu üsul Build.FINGERPRINT-in cihaz istehsalçısı tərəfindən dəyişdirilə biləcəyi köhnə Android versiyalarında daha etibarlıdır.
fun isRunningOnEmulator(): Boolean {
// Radio version vasitəsilə yoxlama — emulatorda həmişə null
val radioVersion = try {
Build.getRadioVersion()
} catch (e: Exception) {
null
}
if (radioVersion.isNullOrBlank()) return true
// Sistem xüsusiyyətləri vasitəsilə yoxlama
return try {
val props = ProcessBuilder()
.command("getprop", "ro.kernel.qemu")
.start()
.inputStream.bufferedReader().readText().trim()
props == "1"
} catch (e: Exception) {
false
}
}
Tez-tez verilən suallar
AVD QEMU üzərində işləyir və aparat xüsusiyyətlərini tam təqlid edə bilməz: real kamera, NFC, Bluetooth. AVD UI testi, lifecycle yoxlaması və OS versiyaları ilə uyğunluq üçün idealdır. Kamera və sensorların dəqiq testi üçün fiziki cihaz lazımdır.
Minimum 2–3 AVD: ən yeni API Level yeni funksiyaları yoxlamaq üçün, minimum dəstəklənən (minSdk) uyğunluq üçün və məşhur cihaz modeli (Pixel 8 və ya Samsung Galaxy) müəyyən ekran altında UI testi üçün.
Əsas səbəblər: aparat virtualizasiyası söndürülüb (WHPX, Hypervisor.Framework, KVM), az RAM (2 GB-dan az), GPU Host söndürülüb. -gpu host-u aktivləşdirin və yaddaşı 2–4 GB-a qədər artırın — bu emulatoru 3–5 dəfə sürətləndirəcək.
Bəli. Emulator emulator -avd AVD_Adı vasitəsilə əmr sətrindən işə salınır. Bunun üçün Android SDK, Platform-Tools və quraşdırılmış System Image lazımdır. AVD Manager həmçinin avdmanager konsol yardımçı proqramı kimi mövcuddur.
AVD Manager-də Wipe Data seçin — bu userdata.img-i siləcək və emulatoru ilkin vəziyyətə qaytaracaq. Əmr sətrindən: emulator -avd Ad -wipe-data. Snapshots ayrıca silinməyibsə, qorunur.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun