AVD (Android Virtual Device) — είναι μια διαμόρφωση εξομοιωτή που μιμείται μια πραγματική συσκευή Android στον υπολογιστή του προγραμματιστή. Κάθε AVD περιλαμβάνει την επιλεγμένη έκδοση λειτουργικού συστήματος (System Image), τον τύπο συσκευής (τηλέφωνο, tablet, Wear OS), το μέγεθος οθόνης και την ποσότητα μνήμης. Σύμφωνα με το Google Android Developers, 2026, το AVD χρησιμοποιείται για τη δοκιμή εφαρμογών σε διαφορετικές εκδόσεις και διαμορφώσεις Android χωρίς την ανάγκη αγοράς δεκάδων φυσικών συσκευών. QEMU — ο υπερεπόπτης στον οποίο λειτουργεί ο εξομοιωτής.
Κύρια σημεία
AVD (Android Virtual Device) — είναι μια διαμόρφωση λογισμικού που περιγράφει μια εικονική συσκευή Android. Σε αντίθεση με ένα φυσικό τηλέφωνο, το AVD δεν απαιτεί υλικό — εκτελείται στον υπολογιστή μέσω του εξομοιωτή Android που βασίζεται στο QEMU. Ο προγραμματιστής δημιουργεί όσα AVD χρειάζονται για δοκιμή: για διαφορετικές εκδόσεις Android, μεγέθη οθόνης, ποσότητες μνήμης και πυκνότητες pixel.
Κάθε AVD συνδέεται με μια συγκεκριμένη SDK Platform. Αυτό σημαίνει ότι για να δημιουργήσετε ένα AVD με Android 14 (API Level 34), πρέπει πρώτα να εγκαταστήσετε την System Image αυτής της έκδοσης μέσω του SDK Manager. Η System Image είναι μια εικόνα του λειτουργικού συστήματος που περιλαμβάνει όλες τις εφαρμογές συστήματος, τις υπηρεσίες Google (αν έχει επιλεγεί η εικόνα Google APIs) και τα στοιχεία χρόνου εκτέλεσης. Η Google συνιστά τη χρήση εικόνων Google APIs με υπηρεσίες Google Play για μέγιστη συμβατότητα με πραγματικές συσκευές.
Το AVD είναι απαραίτητο στην ανάπτυξη για διάφορους λόγους. Πρώτον, επιτρέπει τη δοκιμή της εφαρμογής σε διαφορετικές εκδόσεις Android χωρίς αγορά δεκάδων συσκευών. Δεύτερον, το AVD υποστηρίζει Snapshots — αποθήκευση της κατάστασης του συστήματος, που επιταχύνει την εκκίνηση. Τρίτον, ο εξομοιωτής είναι ενσωματωμένος με το Android Studio: η εγκατάσταση APK, ο εντοπισμός σφαλμάτων και η καταγραφή λειτουργούν όπως σε μια φυσική συσκευή.
Το AVD υποστηρίζει διάφορους τύπους συσκευών: τηλέφωνα (Phone), tablet (Tablet), ρολόγια (Wear OS), τηλεοράσεις (Android TV) και αυτοκινητιστικά συστήματα (Android Automotive). Για κάθε τύπο, ο AVD Manager παρέχει έτοιμα προφίλ από την Google: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab και άλλα. Το προφίλ συσκευής καθορίζει το μέγεθος οθόνης, την ανάλυση, την πυκνότητα pixel (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). Αυτές οι παράμετροι επηρεάζουν την απόδοση της εφαρμογής και τη συμπεριφορά της σε έλλειψη μνήμης.
Πρόσθετες ρυθμίσεις περιλαμβάνουν: κάμερα (εξομοιωμένη ή σύνδεση webcam κεντρικού υπολογιστή), αισθητήρες (επιταχυνσιόμετρο, γυροσκόπιο), 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
# Χρήση στιγμιότυπων για γρήγορη εκκίνηση
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 — οι λειτουργίες εισόδου/εξόδου κατά τη φόρτωση του συστήματος και την εγκατάσταση 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, έλεγχο κύκλου ζωής και συμβατότητας με εκδόσεις λειτουργικού συστήματος. Για ακριβή δοκιμή κάμερας και αισθητήρων απαιτείται φυσική συσκευή.
Τουλάχιστον 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης