Android Emulator — cos'è e come funziona l'emulazione

Autore: IT Sectr Pubblicato: 2026-02-09 Tempo di lettura: 8 min

Android Emulator è un componente di Android Studio che esegue una copia virtuale completa di un dispositivo Android sul computer dello sviluppatore. L'emulatore utilizza QEMU per tradurre le istruzioni ARM nell'architettura x86_64 dell'host. Documentazione Google descrive il ciclo completo di configurazione dei dispositivi virtuali AVD e dell'accelerazione hardware.

Punti chiave

  • Android Emulator — emulazione completa basata su QEMU con supporto per traduzione ARM, GPU, sensori e NFC
  • AVD Manager — strumento per creare e configurare dispositivi virtuali con selezione del livello API, architettura e caratteristiche hardware
  • HAxM e Hyper-V — accelerazione hardware per aumentare le prestazioni dell'emulatore di 3-5 volte
  • Verifica nel codice — Build.FINGERPRINT e Build.PRODUCT consentono di rilevare l'esecuzione nell'emulatore in Kotlin
  • Emulazione sensori — accelerometro, giroscopio, NFC, GPS e fotocamera sono supportati nell'emulatore

Cos'è Android Emulator?

Android Emulator è un dispositivo Android virtuale che funziona su QEMU (Quick EMUlator) ed emula la piattaforma hardware Android. A differenza di iOS Simulator, Android Emulator traduce completamente le istruzioni ARM, consentendo al codice compilato per architettura mobile di essere eseguito su un host x86_64.

Google ha rilasciato Android Emulator nel 2007 insieme alla prima versione di Android SDK. Da allora, l'emulatore si è evoluto da una soluzione lenta solo ARM a un sistema ad alte prestazioni con supporto GPU, accelerazione hardware ed emulazione di sensori. Secondo Google (Android Developer Blog, 2025), l'emulatore moderno con HAxM funziona 4-5 volte più velocemente della prima generazione.

L'emulatore supporta tutti i componenti di un dispositivo Android: CPU, GPU, RAM, storage, schermo tattile, accelerometro, giroscopio, GPS, fotocamera, batteria, NFC, Bluetooth e Wi-Fi. Lo sviluppatore può simulare chiamate in arrivo, SMS, vari livelli di segnale di rete e geolocalizzazione tramite Extended Controls.

Immagini di sistema per l'emulatore

Android Emulator utilizza immagini di sistema scaricate tramite SDK Manager. Ogni immagine di sistema contiene una copia completa del firmware Android per il livello API selezionato e l'architettura del processore target. Sono disponibili immagini con diverse architetture: x86_64 (raccomandata con HAxM), ARM64 (per test di compatibilità ARM) e Google APIs (con Google Play Services preinstallati). Immagini separate sono disponibili anche per Wear OS, Android TV e Automotive.

kotlin
// Verifica del tipo di emulatore nel codice
val isEmulator = Build.FINGERPRINT
    .contains("generic") ||
    Build.PRODUCT.contains("sdk")

if (isEmulator) {
    Timber.d("L'app è in esecuzione nell'emulatore")
}

Configurazione di AVD in Android Studio

AVD (Android Virtual Device) è una configurazione di dispositivo virtuale per l'emulatore. AVD Manager in Android Studio consente di creare dispositivi con qualsiasi combinazione di caratteristiche: modello, dimensione dello schermo, densità di pixel, quantità di RAM, dimensione dello storage e versione Android.

Parametro AVDRaccomandazione per sviluppoRaccomandazione per test
Architetturax86_64 (con HAxM)ARM64 (emulazione pura)
RAM2048-4096 MB1536-2048 MB
Storage interno8-16 GB4-8 GB
Livello APIUltimo stabileMinimo supportato
Google Play ServicesAttivaSecondo necessità

Creazione AVD viene eseguita tramite Device Manager in Android Studio: seleziona un profilo hardware (Pixel, Nexus, Galaxy e altri), un'immagine di sistema e configura i parametri. Dopo la creazione, il dispositivo appare nell'elenco Run Configurations per l'esecuzione immediata dell'app.

Modalità Snapshot per avvio rapido

L'emulatore supporta Quick Boot — salva lo stato dell'AVD come snapshot e lo ripristina all'avvio successivo. Il tempo di avvio si riduce da 30-60 secondi a 2-5 secondi. Per resettare a uno stato pulito, usa Cold Boot Now in AVD Manager.

Traduzione ARM e accelerazione hardware

Traduzione ARM è una tecnologia chiave di Android Emulator che converte le istruzioni ARM in x86_64 al volo. Senza traduzione, l'emulatore potrebbe eseguire solo immagini x86_64, limitando i test. Google utilizza libhoudini per la traduzione ARM→x86 e librerie Intel per l'accelerazione HAXM.

bash
# Verifica dello stato HAxM su Windows
sc query "IntelHaxm"

# Installazione di HAxM tramite SDK Manager
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"

# Avvio dell'emulatore con accelerazione hardware
emulator -avd Pixel_9_API_35 -accel on -gpu auto

Intel HAxM (Hardware Accelerated Execution Manager) è un driver di virtualizzazione per processori Intel VT-x che accelera l'emulatore di 3-5 volte. Su Windows con processore AMD, utilizza Windows Hyper-V Platform e WHPX. Senza accelerazione hardware, l'emulatore funziona lentamente, con ritardi di animazione fino a 1-2 secondi.

Su macOS con Apple Silicon (serie M), l'accelerazione hardware funziona nativamente tramite Hypervisor.framework. Secondo Google (Android Emulator Release Notes 2025), l'emulatore su M2 Max raggiunge il 95% delle prestazioni di un dispositivo reale per le operazioni di base.

Emulatore vs dispositivo reale

La scelta tra emulatore e dispositivo reale dipende dalla fase di sviluppo. Sull'emulatore è comodo sviluppare e fare debug: avvio rapido, deploy immediato, Extended Controls per la simulazione di sensori. Su un dispositivo reale — test finali di prestazioni, batteria e funzionamento con l'hardware.

ScenarioEmulatoreDispositivo reale
Sviluppo UISì (veloce)No (deploy lento)
Test prestazioniNo (metriche gonfiate)Sì (misure reali)
Emulazione sensori (GPS, NFC)Sì (Extended Controls)Limitato
Consumo energeticoNon supportatoSì (Battery Historian)
Test rete (2G/3G/4G/5G)Sì (simulazione velocità)Sì (con SIM)
Automazione CI/CDSì (nessun dispositivo fisico)Difficile (device farm)

Le prestazioni dell'emulatore con accelerazione hardware sono spesso superiori a quelle di un dispositivo reale economico. Pertanto, esegui i test finali su dispositivi reali con il livello di prestazioni target.

Verifica dell'emulatore nel codice Kotlin

Rilevare l'ambiente di esecuzione in Kotlin è utile per disabilitare codice errato o aggiungere informazioni di debug. Android fornisce Build.FINGERPRINT, Build.PRODUCT e Build.HARDWARE per questo scopo.

kotlin
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", "Ambiente: emulatore")
        }
    }
}

Usare un rilevatore di emulatore aiuta durante il debug: sull'emulatore puoi attivare log avanzati, disabilitare animazioni o sostituire chiamate API reali con mock. Evita la verifica nelle build di produzione a meno che non sia richiesta dalla logica di business dell'app.

Test delle app sull'emulatore

Android Emulator viene utilizzato per test automatizzati su server CI. Per eseguire i test, è necessario creare un AVD, avviare l'emulatore e attendere il caricamento completo del sistema. Gradle Managed Devices semplifica questo processo: la configurazione dell'AVD è descritta in build.gradle.kts.

kotlin
// build.gradle.kts — Gradle Managed Devices
android {
    testOptions {
        managedDevices {
            devices {
                register<ManagedVirtualDevice>("pixel9Api35") {
                    device = "Pixel 9"
                    apiLevel = 35
                    systemImageSource = "google"
                }
            }
        }
    }
}

Per avviare l'emulatore manualmente, usa la riga di comando: emulator -avd Pixel_9_API_35 -no-window -no-audio -gpu swiftshader_indirect. Il flag -no-window disabilita l'interfaccia grafica per ambienti server, e -gpu swiftshader_indirect fornisce rendering software senza GPU host.

Emulazione di rete e sensori

Extended Controls in Android Emulator fornisce potenti strumenti per simulare le condizioni di rete: latenza, larghezza di banda e tipo di rete (GPRS, EDGE, 3G, 4G, 5G). Ciò consente di testare il comportamento dell'app in connessione lenta senza spostarsi fisicamente in un'area con copertura scarsa.

Simulazione sensori include accelerometro, giroscopio e magnetometro tramite modelli 3D virtuali di dispositivi. Per il GPS, puoi caricare file GPX con percorsi — l'emulatore simula il movimento lungo le coordinate, fondamentale per testare app di navigazione. La fotocamera viene emulata tramite webcam host o caricamento di immagini.

Multi-display in Android Emulator supporta più schermi per tablet e dispositivi pieghevoli. Extended Controls consente di modificare orientamento, dimensione dello schermo e densità di pixel (DPI) senza riavviare l'emulatore. Per testare i dispositivi pieghevoli, sono disponibili modalità Foldable con commutazione tra stato piegato e aperto.

Android Emulator per Wear OS e Android TV

L'emulatore supporta non solo smartphone ma anche Wear OS e Android TV. Per Wear OS, sono disponibili configurazioni AVD rotonde e rettangolari, simulazione di rotazione della lunetta e gesture di scorrimento, nonché test di interazione con un emulatore telefonico. Per Android TV viene utilizzata un'interfaccia con navigazione D-pad. Entrambe le piattaforme supportano accelerazione hardware e test con Google Play Services, importante per il ciclo di sviluppo di app per smartwatch e TV.

Domande frequenti

In cosa differisce Android Emulator da iOS Simulator?

Android Emulator utilizza emulazione ARM completa tramite QEMU con traduzione di istruzioni, mentre iOS Simulator compila codice per l'architettura dell'host. Android Emulator supporta GPU, fotocamera, sensori, Bluetooth, NFC — iOS Simulator non supporta la maggior parte di queste funzionalità.

Come verificare nel codice se l'app è in esecuzione nell'emulatore?

In Kotlin, controlla Build.FINGERPRINT per "generic" o "emulator", e Build.HARDWARE per "ranchu" o "goldfish". Usa Build.PRODUCT come marcatore aggiuntivo — per l'emulatore contiene "sdk_google" o "google_sdk".

Come accelerare Android Emulator?

Attiva Intel HAxM (Intel VT-x) o Windows Hyper-V Platform (WHPX) per processori AMD. Usa immagini di sistema x86_64 con accelerazione hardware. Alloca almeno 4 GB di RAM all'emulatore in AVD Manager. Attiva Quick Boot per il caricamento tramite snapshot.

Si può testare NFC in Android Emulator?

Sì, Android Emulator supporta l'emulazione NFC a partire da Android 10 (API 29). Extended Controls → Phone → NFC consente di inviare messaggi NDEF. I modi lettura/scrittura tag, peer-to-peer e HCE sono supportati. Per test completi, usa un dispositivo reale con chip NFC.

Quali immagini di sistema sono migliori per AVD?

Per lo sviluppo quotidiano, scegli x86_64 con Google APIs — massime prestazioni e set completo di servizi. Per test di compatibilità, usa immagini ARM64. Per CI — immagini senza Google Play Services, sono più piccole e si avviano più velocemente.

Riepilogo

  • Android Emulator — emulazione completa di dispositivo Android su QEMU con supporto per traduzione ARM, GPU, sensori e NFC
  • AVD Manager — configurazione di dispositivi virtuali con selezione di architettura, livello API, RAM e caratteristiche hardware
  • Accelerazione hardware — HAxM, Hyper-V e WHPX aumentano le prestazioni dell'emulatore di 3-5 volte
  • Rilevamento ambiente — Build.FINGERPRINT, Build.PRODUCT e Build.HARDWARE per rilevare l'esecuzione nell'emulatore
  • Extended Controls — simulazione di GPS, NFC, sensori, chiamate in arrivo e SMS per test di scenari
  • Automazione CI — Gradle Managed Devices e immagini x86_64 per test CI efficienti
  • Quick Boot — modalità snapshot riduce il tempo di avvio dell'emulatore a 2-5 secondi

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche