AVD (Android Virtual Device), geliştiricinin bilgisayarında gerçek bir Android cihazını simüle eden bir emülatör yapılandırmasıdır. Her AVD, seçilen bir işletim sistemi sürümünü (System Image), cihaz türünü (telefon, tablet, Wear OS), ekran boyutunu ve bellek kapasitesini içerir. Google Android Developers, 2026'ya göre, AVD'ler düzinelerce fiziksel cihaz satın almadan farklı Android sürümleri ve yapılandırmalarında uygulamaları test etmek için kullanılır. QEMU, emülatörün üzerinde çalıştığı hipervizördür.
Önemli Noktalar
AVD (Android Virtual Device), sanal bir Android cihazını tanımlayan bir yazılım yapılandırmasıdır. Fiziksel bir telefondan farklı olarak, AVD donanım gerektirmez — QEMU tabanlı Android emülatörü aracılığıyla bir bilgisayarda çalışır. Bir geliştirici, test için ihtiyaç duyduğu kadar AVD oluşturur: farklı Android sürümleri, ekran boyutları, bellek kapasiteleri ve piksel yoğunlukları için.
Her AVD belirli bir SDK Platform'a bağlıdır. Bu, Android 14 (API Level 34) ile bir AVD oluşturmak için önce SDK Manager aracılığıyla bu sürümün System Image'ini yüklemeniz gerektiği anlamına gelir. System Image, tüm sistem uygulamalarını, Google hizmetlerini (Google APIs görüntüsü seçilmişse) ve çalışma zamanı bileşenlerini içeren bir işletim sistemi görüntüsüdür. Google, gerçek cihazlarla maksimum uyumluluk için Google Play hizmetlerini içeren Google APIs görüntülerinin kullanılmasını önerir.
AVD, geliştirmede çeşitli nedenlerle vazgeçilmezdir. Birincisi, düzinelerce cihaz satın almadan farklı Android sürümlerinde uygulamayı test etmeye olanak tanır. İkincisi, AVD, sistem durumunu kaydederek başlatmayı hızlandıran Anlık Görüntüleri (Snapshot) destekler. Üçüncüsü, emülatör Android Studio ile entegredir: APK yükleme, hata ayıklama ve günlük kaydı, fiziksel bir cihazdaki gibi çalışır.
AVD çeşitli cihaz türlerini destekler: telefonlar, tabletler, Wear OS saatler, Android TV ve Android Automotive. Her tür için AVD Manager, Google'dan hazır profiller sağlar: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab ve diğerleri. Cihaz profili, ekran boyutunu, çözünürlüğü, piksel yoğunluğunu (dpi) ve gezinmeyi (jestler veya düğmeler) tanımlar.
| Cihaz türü | Örnek profil | Çözünürlük | 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 |
Her AVD, bir dizi yapılandırma dosyası ve görüntüden oluşur. Ana yapılandırma dosyası, sanal cihazın parametrelerini (ad, tür, API Level, ekran boyutu, RAM ve VM heap boyutu) depolayan config.ini dosyasıdır. Dosya, $HOME/.android/avd/AVDAdı.avd/ dizininde bulunur ve manuel olarak değiştirilebilir, ancak genellikle AVD Manager aracılığıyla düzenlenir.
config.ini'ye ek olarak, AVD dizininde şunlar depolanır: userdata.img (kullanıcı verisi görüntüsü — uygulamalar, ayarlar, dosyalar), system.img (yüklü SDK Platform'un System Image'ına bağlantı), cache.img (önbellek) ve sdcard.img (SD kart görüntüsü). Wipe Data gerçekleştirildiğinde, userdata.img silinir ve yeni bir boş görüntü oluşturulur. Anlık Görüntüler, AVD dizini içinde ayrı bir snapshots/ klasöründe kaydedilir.
System Image, AVD'den ayrı olarak indirilir — bir görüntü birden çok sanal cihaz tarafından kullanılabilir. Sistem görüntüleri Android SDK dizininde depolanır: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/. Görüntü türleri: google_apis (Google hizmetleriyle), google_apis_playstore (Google Play Store ile) ve default (Google hizmetleri olmadan saf AOSP).
| Görüntü türü | Google hizmetleri | Google Play | Amaç |
|---|---|---|---|
| AOSP (default) | Hayır | Hayır | Temel test, saf Android |
| Google APIs | Evet | Hayır | Google hizmetleri, Maps, FCM testi |
| Google Play | Evet | Evet | Play Store ve lisanslama ile tam test |
AVD Manager, Android Studio'da sanal cihazlar oluşturmak ve yönetmek için grafiksel bir araçtır. Tools → Device Manager menüsü veya araç çubuğu simgesi aracılığıyla açılabilir. AVD Manager, oluşturulan cihazların listesini, durumlarını (çalışıyor/durdu), Android sürümünü ve kullanılabilir eylemleri (başlat, durdur, verileri sil, düzenle) gösterir.
Yeni bir AVD oluşturmak için Create device düğmesine tıklayın. Hazır listeden bir cihaz profili seçin — Google tüm popüler cihazlar için profiller sağlar. Bir profil seçtikten sonra System Image'i belirtin: Android sürümü ve görüntü türü. Yeni projeler için Google APIs görüntüsüyle en son kararlı sürümü seçin. Ardından AVD adını, ekran yönünü, RAM ve VM heap boyutunu yapılandırın. Oluşturulduktan sonra AVD başlatılmaya hazırdır.
# 1. Kullanılabilir System Images listesi
sdkmanager --list | grep system-images
# 2. Google APIs ile API 35 için System Image yükleme
sdkmanager "system-images;android-35;google_apis;x86_64"
# 3. pixel8_api35 adında AVD oluşturma
avdmanager create avd -n pixel8_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d pixel_8
# 4. Oluşturulan AVD'yi başlatma
emulator -avd pixel8_api35 -gpu host -memory 2048
# 5. Tüm AVD'leri listeleme
avdmanager list avd
AVD Manager, sanal cihazın donanım özelliklerinin ayrıntılı olarak yapılandırılmasına olanak tanır. Ana parametreler: RAM (rastgele erişim belleği, önerilen değer 2048–4096 MB), VM heap (sanal makine heap boyutu, 256–512 MB), dahili depolama (2–8 GB) ve SD kart (sanal SD kart). Bu parametreler uygulama performansını ve düşük bellek koşullarındaki davranışını etkiler.
Ek ayarlar şunları içerir: kamera (emüle edilmiş veya ana bilgisayar web kamerası bağlantısı), sensörler (ivmeölçer, jiroskop), NFC, Bluetooth ve pil. Örneğin, konum algılamalı uygulamaları test etmek için emülatör kontrol düğmeleri veya ADB aracılığıyla cihaz dönüşü simüle edilebilir. Sensör emülasyonu, fiziksel bir cihazda yeniden oluşturulması zor olan senaryoları test etmeye olanak tanır.
| Parametre | Açıklama | Önerilen değer |
|---|---|---|
| hw.ramSize | Cihaz RAM'i | 2048 |
| vm.heapSize | Sanal makine heap boyutu | 256 |
| hw.gpuEnabled | Donanım grafik hızlandırması | yes |
| hw.gpuMode | GPU modu (host/mesa) | host |
| disk.dataPartition.size | Veri bölümü boyutu | 4096M |
| hw.camera | Kamera emülasyon türü | emulated |
AVD hızı doğrudan donanım sanallaştırmasına bağlıdır. Windows'ta Windows Hypervisor Platform (WHPX), macOS'ta — Hypervisor.Framework, Linux'ta — KVM kullanılır. Sanallaştırma devre dışı bırakılırsa, AVD saf yazılım emülasyon modunda çalışır ve bu 10–20 kat daha yavaştır. Sanallaştırmanın etkin olup olmadığını kontrol etmek için emülatörü -accel-check bayrağıyla çalıştırın.
İkinci temel faktör System Image mimarisinin seçimidir. x86_64 görüntüleri, Intel ve AMD işlemcili bilgisayarlarda arm64-v8a'dan önemli ölçüde daha hızlı çalışır çünkü ARM talimatlarının dinamik çevirisini gerektirmezler. Intel işlemcili Windows ve macOS'ta geliştirme için her zaman x86_64 görüntüleri kullanın. Mac ARM işlemcilerde (Apple Silicon), yerel arm64-v8a görüntüleri kullanın.
# Donanım sanallaştırması ve GPU hızlandırmasıyla başlatma
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4
# Sanallaştırma desteğini kontrol etme
emulator -accel-check
# GUI olmadan çalıştırma (CI için)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off
# Hızlı başlatma için anlık görüntüleri kullanma
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save
Maksimum AVD performansı için: emülatöre en az 2–4 GB RAM ayırın, GPU Host'u etkinleştirin (işleme için bilgisayarın grafik kartını kullanır), gerekli değilse sesi kapatın (-no-audio bayrağı) ve temiz bir duruma hızlı dönüş için Anlık Görüntüleri kullanın. Anlık Görüntüler sistemin tam durumunu kaydeder — bir anlık görüntüden başlatma, 30–60 saniyelik tam önyükleme yerine 2–5 saniye sürer.
Ayrıca AVD'nin bir SSD sürücüsünde saklanması önerilir — sistem başlatma ve APK yükleme sırasındaki G/Ç işlemleri önemli ölçüde hızlanır. Birden çok AVD'yi aynı anda çalıştırmak için bilgisayardaki toplam RAM miktarını artırın ve değişmez emülatörler için -read-only bayrağını kullanın.
Android Studio olmadan komut satırından AVD'ler üzerinde tam kontrol mümkündür. avdmanager ve emulator araçları Android SDK'nın bir parçasıdır ve tüm işlemleri gerçekleştirir: AVD oluşturma, silme, başlatma ve yapılandırma. Komut satırı, grafik arayüzün bulunmadığı CI/CD boru hatlarında ve test otomasyonu için özellikle kullanışlıdır.
# Özel parametrelerle AVD oluşturma
avdmanager create avd -n test_device \
-k "system-images;android-34;google_apis;x86_64" \
--device "pixel_8" \
--force
# AVD silme
avdmanager delete avd -n test_device
# AVD kopyalama (dosyaları kopyalayarak)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd
# AVD verilerini sıfırlama
emulator -avd test_device -wipe-data
# Çalışan AVD'ye APK yükleme
adb -s emulator-5554 install app-release.apk
Bir AVD başlatıldıktan sonra, fiziksel bir cihazda olduğu gibi ADB (Android Debug Bridge) aracılığıyla onunla çalışılabilir. ADB, uygulama yükleme, intent başlatma, olayları (arama, SMS, GPS) simüle etme, ekran görüntüsü alma ve ekran videosu kaydetme olanağı sağlar. Bu, AVD'yi otomatik test için tam teşekküllü bir ortam haline getirir.
# Bağlı cihazları listeleme (AVD dahil)
adb devices
# Gelen arama simülasyonu
adb emu gsm call +15551234567
# GPS koordinatları simülasyonu
adb emu geo fix -122.084 37.422
# Ekran görüntüsü alma
adb exec-out screencap -p > screenshot.png
# SMS gönderme
adb emu sms send +15551234567 "Hello from AVD"
Bazen geliştiricinin, uygulamanın bir emülatörde mi yoksa fiziksel bir cihazda mı çalıştığını kod içinde belirlemesi gerekir. Bu, analitiği devre dışı bırakmak (üretim verilerini kirletmemek için), genişletilmiş günlük kaydını etkinleştirmek veya emülatörde çalışmayan donanıma bağlı işlevleri devre dışı bırakmak için gerekli olabilir. Google, Build sınıfı ve sistem özellikleri aracılığıyla standart kontrol yöntemleri sağlar.
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")
}
}
// Kullanım
if (EmulatorDetector.isEmulator()) {
Log.d("App", "Running on emulator — enable debug mode")
}
Ek bir yöntem, Build.getRadioVersion() aracılığıyla sistem özelliklerini okumak ve ro.kernel.qemu'yu kontrol etmektir. Emülatörde, radio version null döndürür ve qemu özelliği 1 olarak ayarlanır. Bu yöntem, Build.FINGERPRINT'in cihaz üreticisi tarafından taklit edilebildiği eski Android sürümlerinde daha güvenilirdir.
fun isRunningOnEmulator(): Boolean {
// radio version ile kontrol — emülatörde her zaman null
val radioVersion = try {
Build.getRadioVersion()
} catch (e: Exception) {
null
}
if (radioVersion.isNullOrBlank()) return true
// Sistem özellikleri ile kontrol
return try {
val props = ProcessBuilder()
.command("getprop", "ro.kernel.qemu")
.start()
.inputStream.bufferedReader().readText().trim()
props == "1"
} catch (e: Exception) {
false
}
}
Sıkça Sorulan Sorular
AVD QEMU üzerinde çalışır ve donanım özelliklerini tam olarak simüle edemez: gerçek kamera, NFC, Bluetooth. AVD, UI testi, yaşam döngüsü kontrolü ve işletim sistemi sürüm uyumluluğu için idealdir. Doğru kamera ve sensör testi için fiziksel bir cihaz gereklidir.
En az 2–3 AVD: yeni özellikleri kontrol etmek için en son API Level, uyumluluk için minimum desteklenen (minSdk) ve belirli bir ekranda UI testi için popüler bir cihaz modeli (Pixel 8 veya Samsung Galaxy).
Ana nedenler: donanım sanallaştırması devre dışı (WHPX, Hypervisor.Framework, KVM), yetersiz RAM (2 GB'den az), GPU Host kapalı. -gpu host'u etkinleştirin ve belleği 2–4 GB'a çıkarın — bu, emülatörü 3–5 kat hızlandıracaktır.
Evet. Emülatör, komut satırından emulator -avd AVD_Adı ile başlatılır. Bunun için Android SDK, Platform-Tools ve yüklü bir System Image gereklidir. AVD Manager ayrıca avdmanager adlı bir konsol yardımcı programı olarak da kullanılabilir.
AVD Manager'da Wipe Data'yı seçin — bu, userdata.img'yi silecek ve emülatörü başlangıç durumuna döndürecektir. Komut satırından: emulator -avd Ad -wipe-data. Anlık Görüntüler ayrı olarak silinmezse korunur.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun