Note di rilascio dell'emulatore

Android Emulator è incluso in Android Studio.

Le versioni dell'emulatore precedenti alla 25.3.0 sono state distribuite come parte di Android SDK Tools.

Per assicurarti di avere la versione più recente, controlla la disponibilità di aggiornamenti in SDK Manager.

Per scaricare le versioni precedenti di Android Emulator, consulta l'archivio di download di Emulator.

Per le note di rilascio per le versioni di Emulator precedenti alla 25.3.0, consulta le note di rilascio di Android SDK Tools.

Per i problemi noti e la relativa risoluzione, consulta l'articolo Risoluzione dei problemi relativi all'emulatore.

33.1.24 (28 dicembre 2023)

Test eseguito con Android Studio Hedgehog Stable e Iguana Beta 1.

  • Risolvi il problema della webcam emulatore che non consente la registrazione dello schermo in formato mp4.
  • È stato risolto il problema che ha causato l'arresto anomalo dell'emulatore sullo schermo di YouTube di Pixel Fold quando il dispositivo è aperto durante la registrazione dello schermo.
  • Risolvi il problema a causa del quale Pixel Fold mostrava l'aspetto di un telefono diverso con la tastiera scollegata e inutilizzabile (risolto su Windows, Mac Intel e Linux)
  • Risoluzione del problema dell'aspetto dei sensori virtuali in modalità autonoma (risolto su Windows, Mac Intel e Linux)
  • Fornisci correzioni per alcuni arresti anomali, in particolare durante la chiusura dell'emulatore, sono stati corretti

33.1.23 (30 nov 2023)

Test eseguito con Android Studio Giraffe Patch 4 e versione stabile Hedgehog.

  • Nuova implementazione pieghevole per emulare meglio il dispositivo Pixel Fold, compatibile con la versione più recente dell'API 34
  • Upgrade del backend della grafica: abbiamo implementato il protocollo gfxstream per il nostro backend grafico. Questo miglioramento eleva le prestazioni grafiche e la stabilità complessive del tuo sistema. Inoltre, è stato introdotto il supporto per Vulkan 1.3 a partire dall'immagine di sistema con l'API 34
  • Richiesta di funzione: opzione per disattivare il gesto Pizzica per eseguire lo zoom o riassegnare la relativa scorciatoia da tastiera.
  • [Correzione di bug] Problema n. 302562962 Correggere l'arresto anomalo della webcam dell'emulatore quando si utilizza MacOS
  • [Correzione di bug] Problema n. 293503871 Risolvi il problema a causa del quale l'impostazione "Microfono" non veniva salvata al riavvio dell'emulatore
  • [Correzione di bug] Problema n. 270386314 Correggere l'errore dell'animazione per cui la barra laterale rimane aperta dopo che la schermata AVD viene ridotta a icona
  • [Correzione di bug] Problema n. 154896775 Strumento di correzione dei bug di invio

32.1.15 (29 ago 2023)

Test eseguito con Android Studio Giraffe Patch 1 e Hedgehog Canary 16.

  • Conformità ai requisiti HW GAS per i sensori nell'emulatore AAE
  • [Correzione di bug] Problema n. 266201208 Gli SMS in ebraico non vengono inviati sull'API 33
  • [Correzione di bug] Problema n. 257097404 L'emulatore non mostra l'ora corretta dopo l'attivazione dell'host sulle API 29 e 30
  • [Correzione di bug] Problema n. 228201899 Impossibile visualizzare Google Maps all'interno di Android Emulator Extended Controls

32.1.14 (27 giugno 2023)

Test eseguito con Android Studio Hedgehog Canary 8, Giraffe Beta 5 e Flamingo stabile.

  • Correggi gli orientamenti e le distorsioni della fotocamera dell'emulatore.
  • [Correzione di bug] Problema n. 257097404 "L'emulatore non mostra l'ora corretta dopo l'attivazione dell'host". Questo bug è ancora riproducibile per API 29 e API 30.
  • [Correzione di bug] Problema n. 243456582 "Le release di Android dopo l'API 30 potrebbero non essere avviate correttamente nell'emulatore sulle macchine Mac M1"

32.1.13 (22 maggio 2023)

Test eseguito con Android Studio Hedgehog Canary 2, Giraffe Beta 1 e Flamingo Stable.

32.1.12 (21 marzo 2023)

Test eseguito con Android Studio Giraffe Canary 10, Flamingo RC ed Electric Eel Patch 2.

  • [Correzione di bug] Problema n. 267647323 La rete non funziona sull'emulatore avviato da Android Studio
  • [Correzione di bug] Problema n. 268498686 Sfarfallio dello schermo dell'emulatore
  • [Correzione di bug] Problema n. 270034824 Le prestazioni dell'emulatore si sono ridotte dopo l'aggiornamento alla versione 33.1.1
  • [Correzione di bug] Problema n. 225541819 L'avvio di Chrome arresta l'emulatore su x86_64
  • [Correzione di bug] Problema n. 257097404 L'emulatore non mostra l'ora corretta dopo l'attivazione dell'host
  • Aggiungi report sugli arresti anomali per i dispositivi Apple M1

32.1.11 (8 febbraio 2023)

Test eseguito con Android Studio Giraffe Canary 2, Flamingo Beta 1 ed Electric Eel Patch 1.

  • Ottimizzazioni della velocità della rete
  • Supporto del mouse nell'emulatore incorporato
  • Miglioramenti a Virtio-snd
  • Disattiva l'utilizzo dei link simbolici durante la decompressione dell'emulatore Android durante l'installazione
  • Correggi l'arresto anomalo in emulator-check

31.3.14 (13 dicembre 2022)

Test eseguito con Android Studio Dolphin, Electric Eel RC1 e Flamingo Canary 9.

  • [Correzione di bug] È stato risolto il problema degli arresti anomali della durata di visualizzazione media che si verificano quando si accede al Play Store.

31.3.13 (27 ottobre 2022)

Test eseguito con Android Studio Dolphin, Electric Eel beta 2 e Flamingo Canary 5.

31.3.12 (10 ottobre 2022)

Test eseguito con Android Studio Dolphin ed Electric Anguilla beta 1.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • [Correzione di bug] Problema n. 247843000: errore di gestione del percorso relativo della durata di visualizzazione media
  • Aumenta le dimensioni del disco per API 24 e versioni successive

31.3.11 (23 settembre 2022)

Test eseguito con Android Studio Dolphin e Electric Eel Canary 10.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • [Correzione di bug] Arresto anomalo della funzionalità AVD dell'emulatore incorporato nella finestra dei controlli estesi
  • [Correzione di bug] Problema n. 183139207: problemi audio associati all'attivazione del microfono nell'emulatore
  • [Correzione di bug] Problema n. 229764024: bug permanente AVD che causa problemi di comportamento dell'interfaccia utente
  • [Correzione di bug] Errore durante l'avvio dell'API 33 AVD su Mac M1.
  • [Correzione di bug] Problema n. 243053479: velocità di rete bassa dopo l'aggiornamento dell'emulatore
  • [Correzione di bug] Problema n. 244617627: posizione di Maps non funzionante su Windows e Linux
  • [Correzione di bug] Problema n. 232971796: Pulsante "Chiama dispositivo" non funzionante nella pagina Controlli estesi > Telefono
  • Aggiorna Android Emulator a minigbm
  • Migrazione degli script di build in Python3

31.3.10 (18 agosto 2022)

Test eseguito con Android Studio Dolphin Beta 5 ed Electric Eel Canary 9.

Sono ora disponibili download autonomi dell'emulatore. Se riscontri problemi o arresti anomali con l'ultima release stabile, segnala un bug e valuta la possibilità di scaricare una versione precedentemente funzionante dagli archivi di download dell'emulatore.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Migliore supporto dei percorsi Unicode su Windows
  • Migliore gestione della disattivazione dell'emulatore in modo che possa avere successo un nuovo lancio dello stesso AVD.
  • Design AVD pieghevole aggiornato e impostazioni predefinite
  • Pulsanti dell'emulatore Wear aggiornati
  • Miglioramenti allo streaming audio gRPC
  • Comando della console dell'emulatore ridimensionabile aggiunto
  • Correzione di Chrome per l'API 31
  • [Correzione di bug] Autenticazione dell'Account Google non riuscita con GmsCore v21.42.18

31.2.10 (20 aprile 2022)

Test eseguito con Android Studio Dolphin Canary 8 e Chipmunk RC 1.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Aggiungi utilità per caricare le funzioni Vulkan con i fallback
  • [Correzione di bug] Correggere l'errore di generazione gcc8

31.2.9 (23 marzo 2022)

Test eseguito con Android Studio Dolphin Canary 7.

Questo aggiornamento include la seguente correzione:

  • [Correzione di bug] Ignorare la pressione della memoria durante il salvataggio dello snapshot su M1

31.2.8 (7 febbraio 2022)

Test eseguito con Android Studio Bumblebee Patch 1 e Chipmunk Canary 6.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • [Correzione di bug] Impossibile accedere alle app
  • [Correzione di bug] Problema n. 215368358: il comando "adb reboot" sulla piattaforma Intel causava l'arresto anomalo avd con "richiesta di arresto vcpu"

31.2.7 (1 febbraio 2022)

Test eseguito con Android Studio Bumblebee Patch 1 e Chipmunk Canary 6.

Questo aggiornamento include la seguente correzione:

  • [Correzione di bug] Errore relativo all'emulatore sulle macchine M1.

31.2.6 (20 gennaio 2022)

Test eseguito con Android Studio Arctic Fox, Bumblebee Beta 4 e Chipmunk Canary 6.

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Aggiunti pulsanti Wear all'emulatore Wear OS.
  • Sono state rese modificabili tutte le proprietà del veicolo nella scheda VHAL.
  • [Correzione di bug] Autenticazione dell'Account Google non riuscita con GmsCore v21.42.18.
  • [Correzione di bug] Netshaper non funzionava bene con VirtioWifi.
  • [Correzione di bug] Il comando della console del mouse dell'evento non ha funzionato.
  • Aggiunta del controllo KVM per creazione AVD locale.

31.1.3 (18 gennaio 2022)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Porte della console abilitate per Fuchsia.
  • Quando ridimensioni una finestra con più display, l'orientamento viene ignorato.
  • Wi-Fi: è stato aggiunto il supporto per filtrare i pacchetti unicast in base all'indirizzo MAC MAT.
  • Wi-Fi: è stato risolto l'arresto anomalo durante l'uso di vmnet.

30.9.5 (15 dicembre 2021)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Aggiunta la possibilità di ridimensionare facilmente una finestra delle dimensioni di un computer o di un tablet.
  • Aggiunto il supporto per l'input multi-touch da dispositivi host compatibili.
  • VirtioWifi: aggiunto supporto per la rete touch.
  • Input rotatorio attivato per le immagini di sistema Wear.
  • Risolto il problema di configurazione audio gRPC.
  • Riproduzione emulatore SensorReplay aggiornata per supportare i sensori Android standard.
  • È stato collegato l'emulatore a periferiche e dispositivi tramite USB con pass-through USB.

30.4.5 (23 febbraio 2021)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • macOS: sono stati risolti i problemi di distorsione dell'ingresso audio.
  • Aggiunto il supporto per virtio-vsock nello spazio utente.
  • Le immagini di sistema future utilizzeranno virtio-console per i messaggi logcat e del kernel.
  • Accelera il rendering di Vulkan.
  • Aggiunto il supporto per il debug degli snapshot in caso di test non riuscito.
  • virtio-gpu: definizioni aggiornate per supportare le enum di risorse blob più recenti.
  • Aggiunto il supporto degli snapshot per i trasporti grafici di tipo "asg".
  • macOS: è stato aggiunto il supporto per la creazione su macOS SDK 11.1 e versioni successive.
  • KVMclock abilitato per impostazione predefinita sulle immagini di sistema più recenti.
  • Aggiunto il supporto di un sensore della frequenza cardiaca agli emulatori Wear.
  • Rimosso backend libportability Vulkan.
  • Aggiunto il supporto di altre funzionalità nel simulatore del modem.

30.0.26 (16 agosto 2020)

Questo aggiornamento include diverse nuove funzionalità, miglioramenti alle funzionalità esistenti e correzioni di bug.

Supporto pieghevole con sensore di cerniera virtuale e vista 3D

  • Aggiunto il supporto dei sensori delle cerniere per i dispositivi pieghevoli. Sono necessarie un'immagine di sistema Android 11 e una configurazione AVD futura. I parametri delle cerniere e della vista pieghevole 3D sono ora integrati nelle preimpostazioni pieghevoli esistenti. Ad esempio, puoi utilizzare quanto segue con il file config.ini della AVD pieghevole 7.3:

    hw.sensor.hinge = yes
    hw.sensor.hinge.count = 1
    hw.sensor.hinge.type = 1
    hw.sensor.hinge.ranges = 180-360
    hw.sensor.hinge.defaults = 180
    hw.sensor.hinge.areas = 54.7-0
    hw.sensor.posture_list=4, 3
    hw.sensor.hinge_angles_posture_definitions=210-360, 180-210
    hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
    
  • Ora anche i dispositivi pieghevoli hanno un parametro di sottotipo. La proprietà config.ini hw.sensor.hinge.sub_type = hinge/fold è ora disponibile. Per ulteriori informazioni, consulta il post del blog sullo sviluppo per Android 11 con l'emulatore Android.

  • Il sensore dei cardini è ora abilitato per impostazione predefinita.

  • Se è configurato un dispositivo pieghevole, l'emulatore ora invia all'ospite aggiornamenti dei sensori dell'angolo della cerniera e modifiche della postura. I dispositivi pieghevoli esistenti ora aggiorneranno l'angolo e la posizione del sensore della cerniera quando vengono premuti i pulsanti di piegatura e apertura della barra degli strumenti.

Emulatore per host ARM64

  • Il codice sorgente dell'emulatore Linux ora supporta la compilazione incrociata da x86_64 agli host arm64, consentendo l'esecuzione di immagini di sistema arm64 con la virtualizzazione KVM. Al momento è supportato solo -gpu swiftshader_indirect (rendering host arm64 di Swiftshader), ma è possibile utilizzare anche un set compatibile di librerie libEGL/libGLESv2 di GPU host sostituendo lib64/gles_swiftshader con queste e poi riavviando con -gpu swiftshader_indirect. Anche gli snapshot potrebbero non funzionare (aggiungi -no-snapshot alla riga di comando). Istruzioni:

    mkdir emu
    cd emu
    repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1
    repo sync -qcj 12
    cd external/qemu
    pip install absl-py
    pip install urlfetch
    sudo apt-get install crossbuild-essential-arm64
    python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
    
  • Supporto per Apple Silicon in corso.

Supporto virtio-gpu

  • Aggiunto il supporto sul lato host per le prossime risorse blob coerenti dell'host virtio-gpu.
  • Per via di come funziona il rendering dell'emulatore, ora elaboriamo virtio-gpu virtqueue nel thread vcpu (perché il rendering viene comunque eseguito su altri thread). Il rendering virtio-gpu verrà abilitato in una futura versione dell'immagine di sistema e dell'emulatore.
  • In un'immagine di sistema futura, l'emulatore potrà eseguire tutte le immagini con uno stack basato su virtio-gpu.

Altre nuove funzionalità e miglioramenti

  • Il passthrough USB è ora disponibile su Windows che utilizza -qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>. (Questo dovrebbe funzionare anche su Linux e macOS)
  • Librerie WebRTC aggiornate a M83.
  • L'emulatore ora supporta lo streaming audio in container tramite WebRTC.
  • L'endpoint della barra darwinn è stato rimosso.
  • Ora è disponibile la decodifica CUDA VPx per i video, se la decodifica CUDA VPx è disponibile nell'hardware, tramite la variabile di ambiente ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1.
  • Su macOS, SSE 4.1 e 4.2 sono ora disponibili dall'interno del guest Android.
  • Su macOS, INVTSC è ora abilitato per impostazione predefinita. Questo può migliorare la precisione delle misurazioni dell'ora da parte dell'ospite.
  • Ora monitoriamo quale riquadro di controllo esteso è stato selezionato dall'utente nelle metriche.
  • L'emulatore Linux ora utilizza un orologio paravirtualizzato KVM quando la versione del kernel guest è >= 5,4 (immagini di sistema R o successive).
  • Emulator ora utilizza LZ4 per decomprimere i kernel ospite, rendendolo compatibile con la moderna pipeline del kernel.
  • Sono stati aggiunti comandi della console per ottenere la directory AVD dell'emulatore, il percorso del file di rilevamento nel caso d'uso incorporato in Studio e il percorso degli snapshot:

    adb emu avd path # Obtains path to AVD directory
    adb emu avd discoverypath # Obtains path to discovery file
    adb emu avd snapshotspath # Obtains path to snapshots folder
    adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
    
  • Per consentirti di risparmiare più facilmente lo spazio verticale sullo schermo, abbiamo aggiunto un'opzione che consente di nascondere il frame del dispositivo per la durata di visualizzazione media corrente in Controlli estesi > Impostazioni. Per nascondere i frame dei dispositivi a livello globale per tutti i AVD, abbiamo reso disponibile il flag delle funzionalità NoDeviceFrame, che può essere attivato avviando l'emulatore dalla riga di comando con il frame -feature NoDevice oppure, per bloccarlo, aggiungendo NoDeviceFrame = on a ~/.android/advancedFeatures.ini (crea questo file se non esiste già).

  • Nella pagina della rete mobile è stato aggiunto un elemento a discesa per attivare e disattivare il supporto della misurazione. Si tratta di un'operazione autonoma per le immagini di sistema meno recenti che non supportano l'opzione di monitoraggio della misurazione 5G.

    • È stato aggiunto anche il comando della console per lo stesso scopo: gsm meter on|off
  • Upgrade di Toolchain / build a C++17 eseguito.

Correzioni: emulatore incorporato

  • Ora la funzionalità Appunti dovrebbe funzionare.
  • È stato risolto il problema a causa del quale i caratteri maiuscoli venivano inseriti come caratteri minuscoli nell'emulatore.
  • È stato corretto il caricamento del token della console da un percorso Unicode nelle finestre.
  • SO_REUSEPORT messaggio di errore corretto su Linux.
  • Risolto il problema di danneggiamento degli snapshot durante l'invio di comandi relativi agli snapshot tramite gRPC, nonché quando si preme il pulsante di salvataggio degli snapshot nell'emulatore incorporato di Android Studio.
  • Quando utilizzi l'emulatore Linux incorporato in Studio, abbiamo riscontrato che, se l'operazione viene eseguita tramite Chrome Remote Desktop, esiste un bug per cui XDG_RUNTIME_DIR non è impostato e potrebbe causare la mancata visualizzazione dell'emulatore incorporato a causa dell'inserimento dei file di rilevamento dell'emulatore in XDG_RUNTIME_DIR. Puoi controllare lo stato del problema corrispondente nel tracker dei problemi di Chrome.

    Come soluzione alternativa, l'emulatore ora utilizza i file di rilevamento in una directory potenzialmente diversa basata sull'UID utente: /run/user/&lt;uid>.

  • emulatore incorporato: i dispositivi con angoli/intagli arrotondati ora modificano correttamente il loro layout per fare spazio agli angoli e agli incavi. Ciò richiede l'avvio a freddo degli emulatori.

  • L'endpoint gRPC ora supporta l'invio di SMS al dispositivo.

Correzioni generali

  • Abbiamo riscontrato problemi di compatibilità con l'emulatore Windows con Riot Vanguard attivo. L'emulatore di Windows ora rileva Vanguard anti-cheat e visualizza un messaggio di avviso se viene rilevato Vanguard.
  • Corretto l'errore FD_SETSIZE su Windows. Ora utilizziamo WSAEventSelect() anziché select() per stabilire connessioni senza blocco ai server di loopback.
  • È stato aggiunto il supporto della funzionalità CPUID F16C all'emulatore Linux con la correzione dei problemi durante l'esecuzione di alcune applicazioni ARM64 tramite traduzione NDK; macOS/Windows in corso.
  • È stata corretta la riproduzione del percorso gpx/KML in base ai timestamp.
  • È stato risolto il problema di mancato recapito all'avvio di MacO.
  • Se hw.audioInput=no e hw.audioOutput=no in config.ini, l'audio dell'emulatore è ora disattivato correttamente.
  • Risolto il problema per cui se la finestra dell'emulatore veniva ridotta a icona mentre la finestra dei controlli estesa era aperta ma non attiva, la finestra dei controlli estesi continuava a essere visualizzata durante il ridimensionamento della finestra dell'emulatore. Rimuoveremo completamente il comportamento (la richiesta con la finestra di controlli estesi attiva) in un aggiornamento futuro.
  • È stato risolto un bug instabile che causava la mancata connessione del Wi-Fi all'avvio dell'emulatore.
  • È stato risolto il problema di hang-on-exit quando l'emulatore generava comandi shell con timeout lunghi o indefiniti.
  • PC-bios aggiornato con correzioni per supportare meglio immagini di grandi dimensioni passate a -initrd; il BIOS precedente utilizzava un metodo molto inefficiente.
  • È stato risolto l'arresto anomalo durante la chiusura quando viene utilizzata l'opzione -wifi-server-port.
  • L'emulatore ora stampa un avviso se vengono passate opzioni non supportate a -prop (sono supportate solo le parti oggetti qemu.*).
  • Quando crei l'emulatore su Windows, ci dovrebbero essere meno possibilità di riscontrare errori irregolari nella scrittura sui file. Per ulteriori informazioni, consulta le istruzioni per la build di Windows.
  • Il pulsante di zoom disattivato per le AVD pieghevoli causava problemi.
  • L'emulatore ora segnala correttamente il tempo di avvio proveniente da un riavvio del dispositivo.
  • Linux: nel caso in cui le autorizzazioni KVM siano insufficienti, l'emulatore stampa le istruzioni di debug in modo più rapido.
  • È stato risolto il problema a causa del quale l'emulatore non riusciva ad avviare immagini di sistema recenti senza accelerazione.
  • È stato risolto il danneggiamento della memoria o l'arresto anomalo all'avvio da un rilevatore completato all'avvio.
  • È stata corretta la perdita di memoria durante sessioni di registrazione dello schermo lunghe.
  • Le icone dell'emulatore sono state aggiornate in modo da riflettere il branding di Studio 4.1.
  • È stato aggiunto un supporto migliore per il rilevamento delle sessioni remote su Windows.

Correzioni: decodifica video e grafica

  • Risolto un problema per cui l'ultimo gioco di Asphalt 9 veniva visualizzato con una schermata nera.
  • È stato rimosso lo spam relativo allo svuotamento del buffer mappato con NULL.
  • È stata corretta una condizione di gara durante l'eliminazione dello stato di Vulkan in seguito all'uscita da un'app Vulkan ospite.
  • Gli Shader di emulazione Vulkan ASTC/ETC2 sono ora integrati nella libreria libOpenglRender. Sarà più affidabile rispetto alla lettura dal file system.
  • Risolto un problema in Vulkan per cui, se eseguita con un'istanza Vulkan 1.0 sull'host, vkGetImageMemoryRequirements2KHR cancellava erroneamente il campo pNext dello struct VkMemoryRequirements2 restituito.
  • È stata corretta una perdita di memoria nel renderer Vulkan.
  • Risolto il problema di una recente regressione per cui la compilazione degli shardr GLSL ES 1.00 con nomi di variabili come isampler2D non riusciva a eseguire la compilazione.
  • È stato aggiornato il traduttore di mesh ANGLE con varie correzioni che risolvono i possibili errori di compilazione degli handle su Linux.
  • Ora blocchiamo l'emulatore se il framebuffer blit Shader di base non viene compilato, per tenere traccia del fenomeno.
  • È stato aggiornato il traduttore Shader ANGLE per stare al passo con ANGLE a monte. Questo ha risolto un problema relativo al danneggiamento della memoria durante la traduzione e il piegamento costante degli Shader OpenGL ES che utilizzavano matrici non quadrate. Il traduttore Shader è ora una libreria condivisa separata, libshadertranslator.dll.
  • Risolto un problema di inizializzazione di Vulkan su alcuni driver GPU, a causa del quale non sono state trovate alcune funzioni del dispositivo 1.1.
  • Vulkan: Abbiamo ripristinato l'utilizzo del caricatore predefinito, poiché a favore il sistema di caricamento Vulkan causava problemi in alcune configurazioni; cercheremo una soluzione migliore.
  • È stato risolto il problema relativo all'utilizzo della memoria esterna Vulkan in cui avrebbe potuto essere importato indici di tipi di memoria non corrispondenti sull'host.
  • È stato risolto il problema di emulazione di GL_ALIASED_POINT_SIZE_RANGE per cui l'enum non era supportata sull'host.
  • È stato risolto il problema a causa del quale, su alcune GPU host, non era possibile compilare gli mesh Skia a causa di errori relativi a GL_EXT_shader_framebuffer_fetch.
  • Poiché la nostra copia del renderer D3D9 ANGLE è stata rimossa alcune versioni fa, ora passiamo automaticamente anche gli utenti che si trovavano su quel renderer a d3d11 ANGLE se era selezionato nelle preferenze dell'interfaccia utente.
  • Sono state aggiunte ulteriori informazioni di debug all'inizializzazione di WGL su Windows per tenere traccia degli errori.
  • Quando hw.gltransport=virtio-gpu-pipe, le prestazioni vengono migliorate non eseguendo l'attivazione sull'host nei trasferimenti dall'host all'ospite.
  • Sono stati aggiunti ulteriori log di debug per i casi in cui l'emulazione di OpenGLES non riesce a essere inizializzata.
  • È stato risolto il problema relativo allo sfarfallio dei video di YouTube o alla mancata visualizzazione durante il caricamento dell'istantanea.
  • Per il momento siamo tornati alla decodifica software per libvpx, in quanto abbiamo riscontrato problemi con la decodifica hardware CUDA di libvpx. Se disponi di un'implementazione di decodifica hardware CUDA supportata sul lato host, la decodifica hardware di libvpx può essere riattivata tramite la variabile di ambiente ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1.

30.0.10 (30 aprile 2020)

Questo aggiornamento include il supporto per l'esecuzione dell'emulatore direttamente in Android Studio e sui dispositivi virtuali con la modalità finestra in formato libero attivata per impostazione predefinita.

Esegui l'emulatore in Android Studio

Ora Android Emulator può essere eseguito direttamente in Android Studio. Utilizza questa funzionalità per preservare lo spazio sullo schermo, spostarti rapidamente tra l'emulatore e la finestra dell'editor utilizzando i tasti di scelta rapida e per organizzare il flusso di lavoro dell'emulatore e dell'IDE in un'unica finestra dell'applicazione.

Modalità finestra in formato libero

Ora puoi creare una durata di visualizzazione media con la modalità finestra in formato libero attivata selezionando il profilo hardware per tablet in formato libero da 13,5" durante la creazione di un dispositivo virtuale in Android Studio. Questo profilo hardware richiede un'immagine di sistema con Android 11 Developer Preview 3 o versioni successive.

Problemi noti

Il ridimensionamento delle finestre in formato libero al momento non funziona a causa di problemi di trasferimento dello stato attivo a Window Manager. Questo problema verrà risolto in una futura release dell'immagine di sistema di Android 11.

30.0.0 (19 febbraio 2020)

Questo aggiornamento include immagini di sistema Android 11 (livello API 30) e prestazioni migliorate durante l'esecuzione di programmi binari ARM.

Immagini di sistema Android 11

Ora puoi creare una durata di visualizzazione media che esegue Android 11 selezionando una delle immagini di sistema del livello API 30 disponibili:

  • x86: include le ABI x86 e ARMv7.
  • x86_64: include ABI x86, x86_64, ARMv7 e ARM64.

Supporto per i programmi binari ARM su immagini di sistema Android 9 e 11

Se in precedenza non riuscivi a utilizzare l'emulatore Android perché la tua app dipendeva dai programmi binari ARM, ora puoi usare l'immagine di sistema Android 9 x86 o qualsiasi immagine di sistema Android 11 per eseguire la tua app. Non è più necessario scaricare un'immagine di sistema specifica per eseguire i programmi binari ARM. Queste immagini di sistema Android 9 e Android 11 supportano ARM per impostazione predefinita e offrono prestazioni notevolmente migliorate rispetto a quelle con emulazione ARM completa.

Problemi noti

  • Alcuni programmi binari di ARMv7 non possono essere eseguiti su immagini di sistema Android 11 x86 e x86_64. Valuta la possibilità di sviluppare ARM64 se scegli come target Android 11.

29.0.11 (29 maggio 2019)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Windows: l'emulatore ora si basa sulla DLL libgcc che forniamo anziché essere compilato con libgcc in modo statico.
  • Linux: aggiunto il supporto per logcat all'API gRPC. Per ulteriori informazioni su gRPC, consulta l'articolo sull'emulatore di flussi di dati gRPC (Linux).
  • L'emulatore ora include una build headless per guest x86 a 32 bit (qemu-system-i386). Questa funzionalità consente di eseguire immagini x86 a 32 bit per livelli API 26 e inferiori con la build headless. Tieni presente che per gli guest x86 a 32 bit con API 27 e versioni successive, l'emulatore utilizza il motore a 64 bit (qemu-system-x86_64) perché in queste immagini di sistema, mentre lo spazio utente è a 32 bit, il kernel è a 64 bit. Android Studio utilizza il kernel per selezionare i motori di emulazione.
  • Ora puoi specificare percorsi della libreria Qt personalizzati utilizzando la variabile di ambiente ANDROID_QT_LIB_PATH.
  • Ora puoi eseguire l'emulatore con programmi binari precedenti che utilizzano QEMU1 se gli eseguibili QEMU1 (emulator[64]-[x86|arm|etc]) si trovano nella directory dell'emulatore.
  • Windows: è stato risolto un problema che a volte causava il mancato avvio dell'emulatore con il messaggio "Richiesta di arresto di vCPU".
  • Risolto il problema di una barriera non necessaria per le pipeline nelle texture compresse emulate in Vulkan.
  • Risolto un errore che si verificava per le richieste proxy HTTP quando veniva utilizzata la codifica di trasferimento a blocchi. Per ulteriori informazioni, consulta i dettagli del commit.

29.0.9 (7 maggio 2019)

Questo aggiornamento include la seguente correzione:

  • Windows: è stato risolto un problema per cui la videocamera per la scena virtuale e la webcam non funzionavano nell'emulatore.

29.0.8 (6 maggio 2019)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Aggiunto il supporto per più display hardware virtuali quando è presente un servizio guest da enumerare e impostare ciascun display. Più display hardware virtuali saranno inclusi in un futuro aggiornamento dell'immagine del sistema di emulatore.
  • È stata aggiunta una nuova opzione della riga di comando: -delay-adb. Questa opzione sopprime l'elaborazione dei pacchetti ADB finché il guest non ha completato l'avvio (da un avvio a freddo). Questa opzione consente di risolvere i problemi che potrebbero verificarsi se utilizzi l'emulatore in un ambiente CI che lo riavvia e utilizza contemporaneamente anche DCM.
  • Risolto un errore che si verificava durante il caricamento degli snapshot in cui glIsRenderbuffer restituiva il valore errato.
  • Risolti alcuni problemi relativi allo stato inattivo al riavvio dell'ospite Android.
  • Windows: sono stati risolti i problemi che impedivano l'avvio dell'emulatore quando il nome utente Windows aveva spazi o caratteri non ASCII.

Problemi noti

  • La UI degli snapshot è disabilitata per le immagini di sistema relative ad auto e motori perché al momento gli snapshot non sono supportati per queste immagini di sistema.

29.0.6 (1 maggio 2019)

Questo aggiornamento include diverse nuove funzionalità, miglioramenti alle funzionalità esistenti e correzioni di bug.

Rimozione del supporto QEMU1 e di Windows a 32 bit

Per una migliore gestione dell'emulatore, non forniamo più i file binari QEMU1 e Windows a 32 bit. Se si utilizza Windows a 32 bit, non è possibile eseguire l'upgrade alla versione 29.0.6.

Requisiti per le immagini di sistema Android Q

Se vuoi eseguire una durata di visualizzazione media che utilizza un'immagine di sistema Android Q, ora devi utilizzare la versione 29.0.6 (questa versione di release) o successive.

Progetti per il miglioramento del marmo

Questo aggiornamento continua il nostro lavoro sull'iniziativa Project Marble annunciata all'Android Developer Summit a novembre 2018. Per ulteriori informazioni su altri miglioramenti di Project Marble nelle release precedenti, vedi Android Emulator: Project Marble Improvements.

Per questo aggiornamento, la maggior parte dei nostri sforzi di Project Marble è stata dedicata alla riduzione dell'utilizzo delle risorse dell'emulatore, ad esempio riducendo l'utilizzo della CPU da parte dell'emulatore quando inattivo. Abbiamo anche incluso modifiche che semplificano il lavoro con l'emulatore in una gamma più ampia di ambienti e abbiamo risolto problemi di qualità generali.

Le seguenti sezioni descrivono i miglioramenti di Project Marble inclusi in questo aggiornamento:

Miglioramenti del comportamento dell'audio dell'host

A partire dalla versione 28.0.3, l'emulatore blocca l'input audio dall'host per impostazione predefinita.

Se vuoi utilizzare i dati audio dell'host, puoi abilitare l'opzione andando a Controlli estesi > Microfono e attivando Il microfono virtuale utilizza l'input audio dell'host. Questa opzione viene disattivata automaticamente ogni volta che l'emulatore viene riavviato.

Se utilizzi la riga di comando, puoi anche attivare l'audio dell'host tramite l'opzione -allow-host-audio e puoi utilizzare i seguenti comandi ADB per attivare o disattivare rispettivamente i dati audio dell'host:

  • adb emu avd hostmicon
  • adb emu avd hostmicoff

Miglioramenti per le build di emulatori headless

A partire dalla versione 28.0.25, l'emulatore include un'opzione di build headless che può essere eseguita senza la UI. Puoi utilizzare build headless per configurare l'emulatore per i flussi di lavoro Docker e di integrazione continua (CI).

Con questo aggiornamento, abbiamo apportato ulteriori miglioramenti per consentire l'esecuzione dell'emulatore con un numero minimo di dipendenze. Su Linux, le build headless non includono più le librerie pulseaudio o libX11. Le librerie condivise dipendenti dal sistema non incluse nell'emulatore sono state ridotte al seguente elenco:

  • Linux-vdso.so.1
  • Libutil.so.1
  • Libm.so.6
  • Libdl.so.2
  • Librt.so.1
  • Libpthread.so.0
  • Libgcc_s.so.1
  • Libc.so.6
  • ld-linux-x86-64.so.2

Aggiornamento delle librerie della UI Qt alla versione 5.12 LTS

Questo aggiornamento include i seguenti miglioramenti rispetto alla release Qt 5.12 LTS:

  • Per evitare arresti anomali nella decodifica di libpng di Qt durante l'avvio di determinate immagini di sistema, l'emulatore ora utilizza la propria copia di libpng per decodificare le immagini PNG.
  • Per risolvere i problemi relativi ad alcune installazioni Linux contenenti versioni incompatibili di alcune librerie dipendenti da Qt, ora pacchettiamo libfreetype, libsoftokn, libsqlite3 e libxkbcommon con l'emulatore.
  • L'emulatore ora utilizza le librerie di windowing native della piattaforma per ottenere le dimensioni di monitoraggio, invece di utilizzare le librerie Qt che hanno restituito risultati inaffidabili.

Ottimizzazioni automatiche della CPU dopo l'avvio a freddo

Per gestire l'utilizzo della CPU, l'emulatore ora esegue i seguenti comandi ADB in un avvio a freddo dopo aver ricevuto un segnale boot complete:

adb shell settings put screen_off_timeout 214783647
Questo comando aumenta il timeout dello spegnimento schermo in modo che l'emulatore possa essere utilizzato in modalità batteria senza ricaricare. In modalità batteria, l'utilizzo della CPU in background è notevolmente ridotto.
In modalità di ricarica tramite CA, le operazioni in background di GMSCore, come gli aggiornamenti delle app, possono acquisire il controllo di tutti i core della CPU del dispositivo e, di conseguenza, della macchina dell'utente, senza avviso.
adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
Questo comando revoca le autorizzazioni di accesso al microfono per l'app Ricerca Google, riducendo notevolmente l'utilizzo della CPU in background nella schermata Home e in Avvio app quando l'app Ricerca Google è attiva.
Questo comando viene eseguito in aggiunta al comportamento predefinito dell'emulatore di disattivare l'audio dell'host per l'host. Inoltre, ciò fornisce automaticamente la mitigazione dell'utilizzo della CPU descritta per il rilevamento hotword a partire dalla release 28.0.23.

Nuove variabili di ambiente per il monitoraggio delle prestazioni

Ora puoi usare due nuove variabili di ambiente per consentire il monitoraggio dettagliato delle prestazioni dell'emulatore e dell'utilizzo delle risorse.

SHOW_PERF_STATS=1
Questa variabile di ambiente consente di monitorare l'utilizzo di CPU e RAM. Il monitoraggio dell'utilizzo della RAM distingue tra utilizzo della grafica e memoria totale residente.
ANDROID_EMU_TRACING=1
Questa variabile di ambiente consente di stampare ogni volta che un'operazione di input o di grafica richiede molto tempo (più di 1 ms).
Usiamo anche questa variabile di ambiente per contribuire a diagnosticare i problemi riscontrati dagli utenti di Windows con un numero maggiore di jank (frame ignorati) rispetto a quelli riscontrati dagli utenti su macOS o Linux.

Miglioramenti generali di Project Marble

Questo aggiornamento include anche i seguenti miglioramenti generali che fanno parte dell'iniziativa Project Marble:

  • Ora puoi mettere in pausa immediatamente tutte le vCPU nell'emulatore utilizzando i seguenti comandi della console:
    • adb emu avd pause
    • adb emu avd resume
  • Overhead ridotto per il disegno OpenGL. Questo miglioramento riduce l'utilizzo della CPU mentre l'emulatore riproduce le animazioni.
  • Ripristino del supporto del dispositivo di rete virtuale e1000 di QEMU principale. Puoi utilizzare questo dispositivo per configurare l'emulatore in un ambiente di rete in bridge. In un ambiente di rete con bridge, l'emulatore viene visualizzato sulla rete host e la rete host viene visualizzata nell'emulatore.
  • Per avviare l'emulatore vengono ora utilizzati programmi binari del BIOS appropriati per QEMU 2.12.
  • Versione di ffmpeg aggiornata alla versione 3.4.5 per la codifica e decodifica dei video.
  • Overhead notevolmente ridotto dell'I/O del loop principale di QEMU su macOS sostituendo il loop principale basato su select() con un loop principale basato su kqueue.
  • Dimensioni del buffer Logcat aumentate a 2 MB per risolvere i problemi relativi a EOF impreviste durante l'esecuzione di logcat con l'emulatore.
  • L'emulatore ora esporta la variabile di ambiente LC_ALL=C per impostazione predefinita. Questa modifica risolve i problemi di arresti anomali e di incompatibilità associati all'esecuzione dell'emulatore in diverse impostazioni internazionali.
  • Ora puoi monitorare l'utilizzo di CPU e RAM dell'emulatore usando le statistiche sulle prestazioni, a cui puoi accedere da Controlli estesi > Impostazioni > Avanzate > Statistiche sulle prestazioni. Usa queste statistiche per diagnosticare rapidamente i problemi se l'emulatore sembra utilizzare troppa CPU o RAM.
  • glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE ora utilizza il risultato della GPU host invece di uno emulato. Questa modifica consente di risolvere i problemi relativi alla mancata visualizzazione di immagini e asset a causa di un formato non corretto per la lettura.
  • Aggiunto il supporto per le estensioni OpenGL ES GL_EXT_texture_format_BGRA8888 e GL_APPLE_texture_format_BGRA8888, se queste estensioni sono supportate dall'host.
  • Sono state aggiunte ulteriori informazioni diagnostiche all'interfaccia utente della segnalazione di bug. Inoltre, puoi accedere alle segnalazioni di bug dalla console utilizzando i seguenti comandi:
    • telnet localhost 5554
    • avd bugreport
  • Sulle immagini di sistema Android Q, l'emulatore aumenta le dimensioni minime della RAM a 2 GB.
  • Sono state aggiunte ulteriori operazioni di logging e stampa ogni volta che OpenGL o l'hypervisor non viene inizializzato.
  • Se l'emulatore non riesce ad avviare un'istanza -read-only simultanea di una durata di visualizzazione media, l'emulatore ora tenta di riavviare il dispositivo -read-only AVD altre tre volte in 3 secondi. Questa modifica aumenta le probabilità che l'emulatore sia in grado di avviare istanze -read-only simultanee una durata di visualizzazione media se non viene eseguita la pulizia dei file inattivi di altre istanze scrivibili di questa durata di visualizzazione.
  • Per le immagini di sistema future, l'emulatore ora supporta Hardware Composer 2.0. Questa modifica dovrebbe ridurre il sovraccarico del driver durante l'esecuzione della maggior parte delle animazioni.
  • La build dell'emulatore ora si basa su CMake/Ninja.
  • Nella UI dei controlli estesi dell'emulatore, sono state ripristinate le linee di divisione nella tabella delle scorciatoie da tastiera.
  • Ora gli utenti possono scegliere di fornire al nostro team metriche sull'utilizzo di CPU e RAM in un intervallo di 10 secondi. Utilizziamo queste metriche per arricchire i nostri dati sull'utilizzo delle risorse dell'emulatore con casi d'uso diversi dei nostri utenti, il che ci consente di rendere l'emulatore più efficiente e reattivo.

Correzioni generali di Project Marble

Questo aggiornamento include anche le seguenti correzioni generali che fanno parte dell'iniziativa Project Marble:

  • Sono stati risolti i problemi di contrazione e i frame errati visualizzati sui sistemi con GPU Intel durante l'utilizzo delle immagini di sistema Android Q.
  • Sono stati risolti i problemi a causa del quale veniva visualizzata una schermata nera durante l'utilizzo delle immagini di sistema di Android Q con skin per Pixel 2 XL (o qualsiasi skin con un'incavo o con angoli arrotondati).
  • Risolto un problema per cui l'opzione della riga di comando -partition-size non impostava le dimensioni della partizione dati.
  • Risolto il problema per cui, in alcune situazioni, pulseaudio nell'emulatore Linx ruotava e occupava l'intero core della CPU.
  • Sono stati risolti i problemi di accesso alla memoria oltre i limiti durante l'elaborazione di texture compresse.
  • Sono stati corretti gli errori GL che si verificavano sull'host in glTexSubImage2D durante l'aggiornamento di determinati buffer Gralloc (con formato RGB 565, RGB10A2, RGB(A)16F).
  • Risolto un problema di visualizzazione nelle immagini di sistema Android Q con istantanee in cui la geometria dell'area notifiche veniva visualizzata con un'impostazione del divisore di istanze non corretta.
  • Sono stati risolti alcuni problemi di arresto anomalo e blocchi difficili da riprodurre al momento del lancio a causa della perdita di indicatori da parte di Qt o della presenza di stati incoerenti e incoerenti all'avvio di Qt.
  • Risolti numerosi problemi di contemporaneità. Ora siamo in grado di creare l'emulatore Linux con ThreadSanitizer (TSAN), che può facilmente individuare bug altrimenti difficili da riprodurre.
  • Per gli utenti Linux: abbiamo riscontrato che, su alcuni kernel host, il kernel Android guest può uscire e uscire su KVM con un errore hardware generico. Quando questo succede, l'emulatore verrà ora abort() per aumentare la possibilità di debug (in precedenza l'emulatore si era bloccato).
  • Per gli utenti Linux: per praticità delle configurazioni CI, puoi utilizzare la nuova opzione della riga di comando -stdouterr-file <file-name> per reindirizzare sia stdout sia stderr a un file.
  • Risolto un problema per cui SO_REUSEADDR veniva utilizzato in modo errato. Per ulteriori informazioni, consulta i dettagli del commit.
  • Risolto un problema di lunga data con l'emulatore Windows a causa del quale i sottoprocessi, ad esempio i comandi ADB, non si avviavano se il nome utente conteneva spazi.
  • Risolto il problema di inizializzazione mancante dell'RCU nei thread delle vCPU HAXM. Questa soluzione può risolvere alcuni arresti anomali e condizioni di gara.
  • È stato risolto un arresto anomalo che si verificava con determinati pattern di salvataggio e caricamento di snapshot dall'interfaccia utente degli snapshot utilizzando immagini di sistema Android Q recenti.
  • Risolto il problema per cui la videocamera della scena virtuale risultava vuota quando l'emulatore veniva inizializzato da uno snapshot se una macro AR era in riproduzione quando veniva salvato lo snapshot.
  • Risolto il problema per cui alcuni utenti con configurazioni di Remote Desktop visualizzavano una schermata nera quando avviavano l'emulatore su Linux. Per evitare che questo accada, l'emulatore ora configura MESA_RGB_VISUAL esplicitamente. Per ulteriori informazioni, consulta i dettagli del commit.
  • È stato risolto un problema a causa del quale i pulsanti di rotazione venivano visualizzati nei AVD TV.
  • Risolto un problema per cui, se l'emulatore era sempre impostato in alto, la finestra dei controlli estesi veniva visualizzata ogni volta che l'emulatore veniva ruotato.

Profili hardware per dispositivi pieghevoli

L'emulatore ora include profili hardware per i dispositivi pieghevoli. Per usare questi nuovi profili hardware, devi usare Android Studio 3.5 Canary 10 o versioni successive.

Esistono due profili hardware pieghevoli che puoi utilizzare per creare una durata di visualizzazione media:

  • 7,3" Pieghevole: 1536 x 2152 aperto, 840 x 1960 piegato 4,6"
  • 8" Pieghevole: 2200 x 2480 aperto, 1480 x 2480 piegato

Quando esegui l'emulatore utilizzando uno di questi profili hardware, puoi chiudere e aprire il dispositivo utilizzando le azioni di piegatura e espansione nella barra degli strumenti dell'emulatore, i comandi della console o le seguenti scorciatoie da tastiera:

  • Fold: Ctrl + F (Command + F su macOS)
  • Apri: Ctrl + U (Command + U su macOS)

Macro AR

L'emulatore ora include macro AR che possono aiutarti a testare le azioni AR più comuni. Ad esempio, puoi utilizzare una macro per reimpostare lo stato predefinito di tutti i sensori del dispositivo.

Per maggiori informazioni, consulta l'articolo Testare le azioni AR comuni con le macro.

Supporto di Vulkan (Windows, Linux)

Gli utenti Windows e Linux possono ora testare le app Vulkan con Android Emulator fino a Vulkan 1.1 quando utilizzano un'immagine di sistema compatibile (Android Q beta 3 o versioni successive per Vulkan 1.1, Android Q Beta 2 per Vulkan 1.0) e una GPU host compatibile (inclusa la maggior parte delle GPU Intel, NVIDIA e AMD del 2014 e versioni successive).

Per attivare il supporto di Vulkan, devi aggiungere i seguenti flag funzionalità al file ~/.android/advancedFeatures.ini (crea il file se non esiste):

  • Vulkan = on
  • GLDirectMem = on

Supporto iniziale per sviluppatori ROM

Gli sviluppatori di ROM che stanno creando i target sdk_phone_x86 o sdk_phone_x86_64 (userdebug, eng varianti) sul ramo AOSP master ora possono eseguire un emulatore abilitato per Vulkan.

Questo supporto è ancora sperimentale ed è destinato principalmente agli sviluppatori che lavorano su immagini di sistema, driver e motori di gioco. Mancano ancora molte estensioni. Tuttavia, la memoria HOST_COHERENT è supportata e ora dovresti essere in grado di eseguire gli esempi del tutorial sull'API Vulkan.

Se usi linux, puoi provare questa procedura utilizzando i seguenti comandi:

mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem

Rendering Skia con Vulkan

Le GPU NVIDIA e AMD che supportano Vulkan supportano anche l'interoperabilità zero-copy con OpenID tramite l'estensione GL_EXT_memory_objects. L'emulatore sfrutta questa capacità per fornire un modo completo per eseguire il rendering dell'interfaccia utente Android utilizzando le API Skia Vulkan.

Se disponi di una GPU NVIDIA o AMD che supporta Vulkan, usa i seguenti comandi per testare il rendering Skia con un'immagine di sistema compatibile (Android Q Beta 3 e versioni successive):

adb shell
su
setprop debug.hwui.renderer skiavk
stop
start

Supporto macOS per Vulkan

Il supporto di macOS è ancora sperimentale, ma l'emulatore include già le API Swiftshader, MoltenVK e libportability (gfx-rs). Puoi sperimentare con queste API impostando le seguenti variabili di ambiente:

  • Swiftshader: ANDROID_EMU_VK_ICD=swiftshader
  • MoltenVK: ANDROID_EMU_VK_ICD=moltenvk
  • libportability: ANDROID_EMU_VK_ICD=portability

Problemi noti

A volte HAXM non riesce a mappare la memoria coerente Vulkan al guest e arresta l'emulatore. Questo problema verrà risolto in un prossimo aggiornamento di HAXM.

Emulatore di streaming gRPC (Linux)

Cerchiamo sempre di rendere l'emulatore il più versatile possibile, consentendo il rendering e l'interattività della GPU host nella più vasta gamma di contesti di esecuzione. I nostri utenti di CI e Remote Desktop hanno da tempo i seguenti problemi:

  • L'invio programmatico di comandi di input all'emulatore prevede l'esecuzione di comandi shell adb che possono presentare un overhead elevato oppure l'utilizzo della console Telnet, che è più veloce, ma potrebbe non funzionare con alcune configurazioni di rete.
  • Gli utenti di CI spesso eseguono emulatori headless, che possono rendere difficile rilevare problemi che richiedono che lo schermo sia visibile o interattivo.
  • Gli utenti di Remote Desktop spesso non possono interagire con l'emulatore quando utilizzano il rendering GPU dell'host, poiché il rendering della GPU è spesso legato ai display non virtuali dell'host.

Per risolvere questo problema, quando viene eseguito su una macchina Linux, l'emulatore ora gestisce un servizio gRPC. gRPC è un framework generale per RPC che funziona su HTTP.

Per impostazione predefinita, il servizio gRPC dell'emulatore è disabilitato, ma puoi attivare il servizio utilizzando la seguente opzione della riga di comando, dove <port> è la porta su cui l'emulatore deve gestire le richieste gRPC (di solito 5556):

-grpc <port>

Una volta avviato il servizio, i comandi gRPC possono essere emessi dai client. L'insieme di comandi corrente consente sia di inviare eventi di input sia di ricevere screenshot. Questi comandi consentono di risolvere i seguenti problemi:

  • I comandi di input possono essere inviati all'emulatore con un overhead ridotto tramite HTTP. HTTP consente inoltre di inviare comandi in configurazioni di rete aggiuntive.
  • I comandi degli screenshot possono essere inviati per eseguire una query sulla schermata corrente, anche se l'emulatore è in esecuzione headless. Per l'interattività, gli eventi di input possono essere inviati anche all'emulatore.
  • Gli utenti di Remote Desktop possono eseguire l'emulatore headless sul display principale con rendering accelerato da GPU, mentre utilizzano gRPC per acquisire screenshot e inviare eventi di input per interagire con l'emulatore.

Per un elenco completo dei comandi disponibili, consulta questo protobuf.

Per aiutarti a iniziare a utilizzare gRPC, abbiamo fornito alcuni client di esempio a cui puoi fare riferimento.

Al momento sono inclusi i seguenti esempi:

  • Un servizio basato su Go che può essere utilizzato per eseguire query sugli stati dell'emulatore.
  • Un'app React che dimostra l'interattività remota tramite screenshot e RPC di input. Questo esempio richiede la versione 3.7.0 o successiva di protobuf.
  • Un esempio Python che esegue una query sulla configurazione della VM dell'emulatore e poi invia una serie di comandi.

28.0.25 (29 marzo 2019)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

Creazione emulatore headless

È stato difficile configurare l'emulatore con Docker e altri flussi di lavoro di integrazione continua (CI) a causa delle aspettative implicite che il sistema è in grado di supportare Qt insieme alle sue dipendenze di libreria condivisa (tra gli altri problemi).

Come primo passo per risolvere il problema abbiamo introdotto una variante dell'emulatore con file eseguibili QEMU che non dipendono da Qt. Su Linux è ancora presente un link a libX11, ma speriamo di rimuoverlo a breve.

Per utilizzare l'emulatore headless, esegui l'emulatore dalla riga di comando come di consueto, ma sostituisci la chiamata binaria dell'emulatore con emulator-headless. Per ulteriori informazioni, consulta l'aggiornamento della release 28.1.8 Canary.

  • Sono stati corretti gli spasmi e la visualizzazione errata del frame sulle GPU Intel durante l'esecuzione di immagini di sistema Android Q.
  • Sono stati risolti i problemi a causa del quale veniva visualizzata la schermata nera durante l'utilizzo di immagini di sistema Android Q con le skin di Pixel 2 XL.
  • Per avviare l'emulatore vengono ora utilizzati gli ultimi programmi binari del BIOS. Questa modifica può contribuire a ridurre gli errori di "richiesta di arresto di vCPU" che si verificano a volte quando avvia l'emulatore su Windows.
  • È stato eseguito il backporting di una correzione per il problema "Visualizzazione errata durante il ripristino delle immagini di sistema Android Q da un'istantanea".
  • Gli utenti riscontravano problemi con gli emulatori"non autorizzati" a causa di una modifica incompatibile in ADB nella versione 28.0.2 degli strumenti della piattaforma. Ora puoi utilizzare ADB in sicurezza dalla piattaforma-tools 28.0.2 con l'emulatore. Se riscontri problemi con gli emulatori "non autorizzati", svolgi i seguenti passaggi per la risoluzione dei problemi:
    1. Esci da tutti gli emulatori.
    2. Elimina entrambi i file ~/.android/adbkey e ~/.android/adbkey.pub.
    3. Esegui questo comando: adb kill-server
    4. Esegui questo comando: adb devices
    5. Cancella i dati della durata di visualizzazione media.
    6. Riavvia l'emulatore.

28.0.23 (29 gennaio 2019)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

Input audio dell'host disattivato per impostazione predefinita

Un recente post su Reddit descriveva in dettaglio come il sistema operativo Android guest utilizzasse sempre l'audio del microfono host, consentendo così il funzionamento imprevisto del comando "Ok Google". Siamo spiacenti e collaboreremo con il team Android per accertarci che il rilevamento hotword sia disattivato anche nell'immagine di sistema.

Per risolvere questo problema, abbiamo apportato le seguenti modifiche:

  • I dati audio dell'host effettivi sono ora ridotti per impostazione predefinita. Quando l'ospite usa il microfono, il silenzio viene trasmesso al posto dell'audio dell'organizzatore.
  • Se vuoi utilizzare i dati audio dell'host, ora puoi abilitare l'opzione andando a Controlli estesi > Microfono e attivando Il microfono virtuale utilizza l'input audio dell'host. Questa opzione viene disabilitata automaticamente ogni volta che l'emulatore viene riavviato.

Aggiornamenti sulle indagini sull'utilizzo della CPU

Durante le nostre indagini su Project Marble, abbiamo notato che l'utilizzo elevato di CPU nell'emulatore rientra generalmente nelle tre categorie seguenti:

In caso di inattività: aggiornamenti automatici delle app nelle immagini del Play Store

Abbiamo scoperto che, a intervalli casuali, tutte le app installate vengono aggiornate, anche quando l'utente non ha eseguito l'accesso. Durante il processo, l'utilizzo della CPU è determinato dal numero di core x 100% (in genere circa il 400%) in GMSCore e dex2oat. Puoi mitigare questo problema disattivando gli aggiornamenti automatici delle app nell'app Play Store.

In caso di inattività: rilevamento hotword

Quando si è nella schermata Home e senza alcuna app in primo piano, è possibile utilizzare una buona CPU (circa il 25% con picchi fino al 50%). Ciò è causato dal rilevamento della hotword che invia costantemente ping all'host. Non puoi mitigare questo problema disattivando l'input audio dell'host, perché il costo della CPU è causato principalmente dal tempo necessario per raggiungere l'ospite dall'host. Tuttavia, puoi mitigare il problema revocando le autorizzazioni di accesso al microfono dall'app Google.

Quando l'attività è attiva, a volte in caso di inattività: animazioni

La terza fonte di un elevato utilizzo della CPU è costituita dalle animazioni. Abbiamo scoperto che ottimizzando lo stack del driver di grafica, è possibile ridurre l'utilizzo della CPU anche quando l'emulatore non è inattivo. Nell'ambito di Project Marble, implementeremo le ottimizzazioni dei driver di grafica incrementalmente.

28.0.22 (21 dicembre 2018)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Risolto un problema di lunga data per cui, in alcune impostazioni, l'emulatore Mac veniva riavviato o il kernel panic durante il salvataggio Quickboot. (Problema 120951634)
  • Quando utilizzi un file mappato come snapshot della RAM, l'emulatore ora annulla la mappatura della mappatura del file in modo esplicito all'uscita.

28.0.20 (11 dicembre 2018)

Questo aggiornamento include i seguenti miglioramenti e correzioni:

  • Risolto un problema su Windows che causava il blocco dell'emulatore al caricamento degli snapshot con alcuni modelli di GPU Intel.
  • Risolto un problema che causava uno stato del dispositivo ADB unauthorized quando veniva utilizzata una località ANDROID_SDK_HOME non standard.
  • Risolto un problema su Windows che causava l'arresto anomalo dell'emulatore durante l'avvio delle immagini di sistema con l'accelerazione della CPU disabilitata.
  • È stato risolto il problema di visualizzazione dell'emulatore in pixel. Il sottocampionamento dovrebbe funzionare.
  • Risolto il problema su macOS 10.14 e versioni successive per cui il controllo mouselook della scena virtuale poteva diventare troppo sensibile a causa di un'interazione con nuove impostazioni di sicurezza dell'accessibilità.
  • Risolto un errore nel calcolo del fuso orario che poteva causare il cambio sporadico dell'orologio dell'emulatore.
  • Sono stati corretti gli errori di rendering in varie app di motore cocos2d e Unreal.
  • È stato aggiunto il supporto nell'emulatore per il Wi-Fi peer-to-peer. Ora due emulatori possono comunicare tra loro direttamente tramite Wi-Fi se usi l'immagine più recente del Play Store di Pie. Per utilizzare la funzionalità peer-to-peer Wi-Fi, avvia due periodi di prova di utilizzo (AVD) con gli stessi argomenti -wifi-server-port e -wifi-client-port:
    • emulator @<server-avd-name> -wifi-server-port 9999
    • emulator @<client-avd-name>-wifi-client-port 9999
  • È stato aggiunto il supporto di più webcam su Windows utilizzando dimensioni dei fotogrammi incompatibili e ridimensionandole in modo dinamico per adattarle alle impostazioni della videocamera sull'ospite Android.

28.0.16 (novembre 2018)

Questo aggiornamento include diverse nuove funzionalità, miglioramenti alle funzionalità esistenti e correzioni di bug.

Utilizzo delle risorse

L'emulatore ora utilizza meno RAM complessiva, soprattutto quando si utilizzano immagini di sistema con livello API 28 o superiore. Queste immagini di sistema includono un maggiore utilizzo della memoria per i driver di grafica lato ospite.

Inoltre, abbiamo migliorato l'utilizzo delle risorse nelle seguenti aree:

  • Riduzione dell'utilizzo della memoria dell'emulatore durante i test di lunga durata. Se continui a riscontrare problemi di utilizzo della memoria durante i test a lunga esecuzione, crea un problema che descriva il tuo caso d'uso in Issue Tracker.
  • Ha ridotto l'utilizzo della CPU durante l'esecuzione di app con animazioni.
  • Risolto un problema per cui il contesto di QEMU AIO poteva essere divulgato su Windows.

Esegui contemporaneamente più istanze di una singola durata di visualizzazione media

Ora puoi avviare più istanze della stessa durata di visualizzazione media ed eseguirle contemporaneamente. Le istanze che avvii dopo la prima sono di sola lettura e le modifiche apportate al disco virtuale guest vengono ignorate all'uscita.

Per eseguire contemporaneamente più istanze della stessa durata di visualizzazione (AVD), avvia qualsiasi istanza dopo la prima istanza dalla riga di comando utilizzando il flag -read-only.

Questa funzionalità è resa possibile copiando i file QCOW2 associati alle parti scrivibili dell'immagine Android. Per aiutarti a gestire lo spazio su disco, abbiamo anche integrato lo strumento a riga di comando qemu-img per consentirti di eseguire il pre-commit dei file QCOW2 prima di avviare più istanze.

Inoltre, quando utilizzate insieme alla funzionalità Snapshot di RAM guest supportati da file , più istanze AVD condividono lo snapshot AVD principale Quickboot come origine comune di RAM guest copia-on-write. Questa proprietà indica che le istanze condividono gran parte della RAM in comune. Utilizza questa funzionalità per eseguire test che richiedono l'esecuzione contemporanea di più dispositivi.

Apprezziamo il tuo feedback su possibili casi d'uso che fanno parte del tuo normale flusso di lavoro interattivo o CI. Crea i problemi o dai un voto positivo in Issue Tracker.

Snapshot di RAM guest basati su file

Preallocando e mappando la RAM ospite come file, l'emulatore ora può salvare gli snapshot Quickboot durante il runtime, invece di svolgere tutte le operazioni all'uscita. Se al momento riscontri lunghi tempi di risparmio quando chiudi gli emulatori, abilita questa funzionalità per migliorare le prestazioni di Quickboot. Per impostazione predefinita, uno snapshot Quickboot viene salvato all'uscita e ricaricato ogni volta, ad esempio durante la sospensione e la riattivazione di un dispositivo reale.

Poiché la RAM guest Android viene ora salvata automaticamente per impostazione predefinita, se vuoi definire uno stato del dispositivo ed eseguire ripetutamente il caricamento da questo stato, devi comunicare all'emulatore di ignorare le modifiche dopo ogni sessione. Puoi eseguire questa operazione nei seguenti modi:

  • Usa i flag -no-snapshot-save o -read-only quando avvii l'emulatore dalla riga di comando.
  • Vai a Controlli estesi > Snapshot > Impostazioni e imposta Salvare automaticamente lo stato attuale in Avvio rapido? su No.
  • Dopo aver selezionato questa opzione, dovrai riavviare l'emulatore. Se l'emulatore è impostato sul salvataggio automatico, puoi eseguire il comando seguente per impostare un checkpoint:
    adb emu avd snapshot remap 0
    
    Dopo aver eseguito questo comando, lo snapshot Quickboot dell'emulatore rimarrà in quel checkpoint. Esegui di nuovo lo stesso comando per caricare l'emulatore dal tuo checkpoint.

Gli snapshot acquisiti e caricati tramite la funzione UI degli snapshot come facevano in precedenza, senza mappatura dei file.

Poiché si tratta di una grande modifica al funzionamento di Quickboot, apprezzeremmo molto il tuo feedback su se migliora le prestazioni di Quickboot e sul tipo di problemi che riscontri durante l'utilizzo. In caso di problemi, puoi disattivare questa funzionalità aggiungendo la seguente riga al file ~/.android/advancedFeatures.ini:

QuickbootFileBacked = off

Quando avvii l'emulatore da uno snapshot (utilizzando l'opzione della riga di comando -snapshot o avviando da uno snapshot in Gestione AVD), l'emulatore disattiva sia il salvataggio automatico per gli snapshot di Quickboot sia il salvataggio degli snapshot Quickboot all'uscita. In questo modo ridurrai le probabilità che lo snapshot di Avvio rapido venga sovrascritto involontariamente ed eviti percorsi di fallback lenti che non utilizzano snapshot Quickboot supportati da file.

QEMU 2.12

Abbiamo ribasato la nostra variante di QEMU da QEMU 2.9 a QEMU 2.12. Questo aggiornamento include le seguenti modifiche di QEMU:

Di seguito sono riportate alcune importanti modifiche che interessano l'emulatore di Android:

  • x86: gdbstub ora fornisce l'accesso ai registri SSE.
  • Immagini disco: il blocco delle immagini viene aggiunto e abilitato per impostazione predefinita. Più processi QEMU non possono scrivere nella stessa immagine purché l'host supporti il blocco OFD o posix, a meno che le opzioni non siano specificate diversamente.
  • qemu-img: qemu-img resize supporta la preallocazione delle nuove parti dell'immagine.
  • La riduzione di QCOW2 è ora supportata in qemu e qemu-img.

Accessibilità

  • Sono stati risolti i problemi relativi agli screen reader e aggiunto un migliore supporto per questi strumenti nell'interfaccia utente di Registrazione dello schermo e Snapshot.
  • Ha reso le icone di notifica Avvio rapido più accessibili per gli utenti daltonici.

Grafica

  • Risolto un problema di accesso alla memoria al di fuori dei limiti che poteva verificarsi per i puntatori dell'array Vertex OpenGL ES.
  • Alcune GPU meno recenti non supportavano OpenGL 2.1 o versioni successive (obbligatorio) o presentavano altri problemi di affidabilità. Questi problemi potrebbero causare l'arresto anomalo dell'emulatore all'avvio, il blocco o essere inutilizzabile con l'impostazione GPU predefinita. Ora l'emulatore passa automaticamente al renderer Swiftshader se rileva che queste GPU sono in uso.
  • Risolto un problema per cui l'emulatore non pubblicava il framebuffer corretto se FBO != 0 era associato a eglSwapBuffers.
  • È stato risolto il problema a causa del quale il display Android virtuale veniva visualizzato solo nell'angolo in alto a sinistra. Riteniamo che ciò sia dovuto a variabili di ambiente Qt configurate in modo errato. L'emulatore ora esegue l'override di tutte le variabili di ambiente relative al ridimensionamento Qt.
  • Risolto un problema per cui l'emulatore si arrestava in modo anomalo in alcune situazioni durante il caricamento delle app GLES1 da uno snapshot.
  • Sono stati risolti i problemi di contemporaneità in OpenGL e nell'avvio di thread di rendering che potevano causare liberazioni doppie o dati danneggiati.
  • Android Emulator ora supporta il supporto di texture compresse ASTC LDR (GL_KHR_texture_compression_astc_ldr) per le immagini di sistema che utilizzano il livello API 28 o successivo.
  • Ora la maggior parte delle GPU moderne dovrebbe essere in grado di avviare l'emulatore con OpenGL ES 3.x abilitato per impostazione predefinita senza utilizzare il flag funzionalità GLESDynamicVersion.
  • L'API -gpu guest (rendering software nell'ospite) è stata ritirata. Le immagini di sistema per il livello API 28 o successivo passano automaticamente all'utilizzo di Swiftshader (-gpu swiftshader_indirect).
  • Se l'emulatore viene avviato dalla riga di comando utilizzando il flag -no-window, il renderer predefinito sarà Swiftshader.

Posizione

  • Ora l'emulatore può aggiornare il orientamento insieme alla posizione di latitudine e longitudine. Il sensore virtuale del magnetometro si adatta in modo dinamico al nord magnetico, deducendo il movimento durante la riproduzione di un file GPX o KML.
  • Ora è possibile impostare la velocità del dispositivo nella pagina Posizione.
  • Durante la riproduzione di un file GPX o KML, la velocità viene impostata automaticamente e pari a zero al termine della riproduzione.
  • L'altitudine non è più limitata tra -1000 e +10.000 metri.
  • Risolto il problema per cui la posizione GPS virtuale non veniva aggiornata periodicamente a meno che la finestra dei controlli estesi non fosse stata aperta almeno una volta.

Fotocamera

Su Windows, ora sono supportate più webcam perché l'emulatore ridimensiona dinamicamente i fotogrammi delle videocamere inviati dalla webcam. Questa funzionalità impedisce inoltre che gli errori nella consegna dei frame causino il blocco dell'emulatore.

Play Store

Per risolvere i problemi relativi all'esaurimento dello spazio su disco nelle immagini del Play Store, l'emulatore ora ridimensiona automaticamente la partizione dei dati utente a 6 GB quando viene eseguita con una durata di visualizzazione media del Play Store aggiornata.

Miglioramenti e correzioni generali della qualità

  • Alcuni utenti hanno segnalato che l'emulatore è lento. Abbiamo identificato una possibile causa per cui la directory temporanea dell'emulatore termina con troppi file inattivi. Per risolvere il problema, l'emulatore non archivia più i file per il controllo di attività ADB in quella directory. Tuttavia, può anche essere utile eliminare i contenuti della cartella. La cartella si trova in una delle seguenti posizioni, a seconda del sistema operativo:
    • Windows: C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
    • macOS o Linux: /tmp/android-<username>/*
  • Se l'emulatore non può avviarsi a causa di RAM libera insufficiente, viene visualizzato un messaggio di errore. Se usi Windows e noti che la RAM è libera, ma non riesci comunque ad avviare l'emulatore, è possibile che l'addebito per commit sia stato superato. Per ricevere assistenza in merito a questo problema, visita la pagina per la risoluzione dei problemi dell'emulatore.
  • L'opzione della riga di comando -sysdir ora sostituisce correttamente la directory delle immagini di sistema dedotte.
  • Il modem virtuale ora supporta la query +MAI sulle informazioni sull'attività del modello.
  • Risolti vari problemi relativi a perdite di memoria, danneggiamento della memoria e utilizzo della CPU. Se riscontri arresti anomali, perdite di memoria o un altro utilizzo elevato di risorse, crea un problema in Issue Tracker.
  • Risolto un problema che riappariva su macOS 10.14 a causa del quale l'utilizzo di cuffie Bluetooth con l'emulatore deteriorava l'audio a livello globale. Per evitare questo problema, l'emulatore ora evita di usare l'audio Bluetooth quando viene eseguito su macOS. (Problema 37070892)
  • Risolto un problema su Windows in cui l'orologio dell'emulatore non si trovava nel fuso orario corretto.
  • È stato risolto il problema di lentezza dell'emulatore e il problema si blocca nei sistemi Linux con dischi rigidi rotanti (HDD).
  • Sono stati risolti alcuni avvisi di compilazione che potrebbero causare il danneggiamento dello stack su macOS.
  • Sono stati risolti i problemi che potevano comportare la generazione di report fuorvianti relativi al blocco.
  • Risolto un problema relativo all'eliminazione dei pool di thread che poteva causare un arresto anomalo se uno dei thread non veniva creato correttamente.
  • Risolto un problema su macOS per cui i timer diventavano inaffidabili, causando blocchi e altri comportamenti anomali. Se l'emulatore si blocca su macOS, crea un problema in Issue Tracker.
  • Risolto il problema per cui la chiusura dell'emulatore disattivava l'interfaccia utente, ma non chiudeva effettivamente l'emulatore.
  • Sono stati risolti i problemi relativi a arresti anomali sporadici, tra cui un'interruzione dovuta all'apertura di troppe istanze di /dev/urandom.
  • Risolto un problema per cui l'emulatore non si avviava dopo la prima volta in caso di chiusura forzata di ADB.
  • La build MIPS è stata rimossa. Se hai ancora bisogno di MIPS, crea un problema in Issue Tracker.
  • Risolto il problema per cui le connessioni ADB si danneggiavano al caricamento degli snapshot.
  • Risolto il problema per cui la finestra dell'emulatore presentava un'immagine residua o un teletrasporto fuori schermo quando si ripristinava un'istantanea con l'orientamento del dispositivo diverso da quello predefinito della funzionalità di visualizzazione in tempo reale.
  • Sono stati risolti i problemi relativi agli arresti anomali durante il salvataggio degli snapshot.
  • Su Linux, i file system btrfs possono causare rallentamenti estremi perché l'emulatore salva automaticamente gli snapshot e utilizza la funzionalità di copia su scrittura per i dispositivi dei dischi virtuali. Ti consigliamo di eliminare la directory ~/.android/avd e di eseguire il seguente comando nella directory ~/.android/avd vuota:
    chattr +C
    
    In questo modo vengono creati nuovi snapshot in una cartella in cui la funzionalità di copia su scrittura è disabilitata.

HAXM 7.3.2

Vorremmo menzionare di nuovo HAXM 7.3.2 perché deve essere installato per far funzionare correttamente le immagini di sistema recenti nell'emulatore. HAXM 7.3.2 dovrebbe già essere disponibile nel canale stabile e può anche essere installato manualmente da https://github.com/intel/haxm/releases.

Ecco un paio di problemi risolti in questa versione di HAXM:

  • Sono stati risolti arresti anomali casuali dei sistemi operativi guest che utilizzano un kernel Linux recente (>= 4.6). Ad esempio, Ubuntu 18.04 (#39, #74).
  • Risolto il bug dell'emulatore di istruzioni x86 che poteva causare un arresto anomalo dell'host (#93).

Ritiro di Windows a 32 bit

A causa del basso utilizzo e degli elevati costi di manutenzione, abbiamo in programma di ritirare la versione a 32 bit dell'emulatore Android che funziona su Windows. Implementeremo un piano di transizione prima della rimozione e della fine del ciclo di vita per la versione a 32 bit dell'emulatore Android. Tuttavia, stiamo cercando attivamente qualsiasi feedback o dubbio in merito a questa modifica futura.

Facci sapere nella pagina Issue Tracker se al momento utilizzi la versione a 32 bit dell'emulatore Android che funziona su Windows e facci sapere come possiamo collaborare al meglio con te in futuro.

27.3.10 (agosto 2018)

Questo aggiornamento include la seguente correzione di bug:

Correzione della configurazione delle dimensioni della RAM

Alcuni utenti hanno segnalato che l'emulatore è lento. Abbiamo identificato una possibile causa per cui le dimensioni della RAM AVD nel file config.ini di AVD venivano impostate in modo errato.

Per mitigare il problema, l'emulatore aumenta il livello minimo di RAM per le immagini che utilizzano il livello API 26 o superiore al livello predefinito di Android Studio di 1536 MB. Se il file config.ini di AVD non riporta hw.ramSize in megabyte, crea un problema in Issue Tracker. Puoi trovare il file config.ini nella seguente posizione:

~/.android/avd/<avdname>.avd/config.ini

27.3.9 (luglio 2018)

Questo aggiornamento include i seguenti miglioramenti e correzioni di bug:

Messaggi di errore migliorati per Windows Hypervisor Platform

Alcuni utenti hanno avuto difficoltà a diagnosticare il motivo per cui l'inizializzazione di Windows Hypervisor Platform (WHPX) non è riuscita quando hanno attivato un emulatore WHPX. Per aiutarti a diagnosticare questi problemi, abbiamo aggiunto messaggi di errore più informativi. Puoi abilitare questi messaggi di errore eseguendo l'emulatore dalla riga di comando con il flag -verbose.

Correzioni generali

  • Sono stati corretti gli errori OpenGL che si verificavano durante il caricamento di un'istantanea nell'app Fotocamera.

27.3.8 (luglio 2018)

Questo aggiornamento include diverse nuove funzionalità, miglioramenti alle funzionalità esistenti e correzioni di bug.

Istantanee

Ora puoi salvare più snapshot AVD per una determinata configurazione dispositivo e scegliere quali snapshot salvati caricare quando avvii l'emulatore.

A partire da Android Studio 3.2 Canary 13, ogni configurazione del dispositivo include un controllo nelle impostazioni avanzate della finestra di dialogo Configurazione dispositivo virtuale, che ti consente di specificare lo snapshot della durata di visualizzazione media da caricare all'avvio della durata di visualizzazione media.

Per supportare questa espansione delle funzionalità degli snapshot, abbiamo aggiunto una categoria Snapshot alla finestra di dialogo Controlli estesi. Questo nuovo riquadro contiene i controlli per salvare e caricare gli snapshot AVD, inclusi i controlli per salvare e caricare lo snapshot di avvio rapido che era disponibile in precedenza nel riquadro Impostazioni.

Puoi modificare il nome e la descrizione di ogni istantanea salvata.

Per maggiori dettagli, vedi Snapshot.

HAXM 7.2.0

HAXM 7.2.0 è ora disponibile in tutti i canali.

Questo aggiornamento include correzioni di bug e un supporto migliorato per grandi quantità di RAM. Inoltre, con l'aggiornamento HAXM e l'emulatore 27.3 e versioni successive, gli snapshot caricano i contenuti nella RAM on demand anziché caricare l'intero snapshot all'avvio del dispositivo virtuale. Questa modifica dovrebbe ridurre notevolmente il tempo necessario per caricare uno snapshot.

Per maggiori dettagli, consulta Configurazione dell'accelerazione VM.

27.2.9 (maggio 2018)

Questo aggiornamento include diverse nuove funzionalità, miglioramenti alle funzionalità esistenti e correzioni di bug.

Registrazione dello schermo

Ora puoi registrare video e audio dall'emulatore Android e salvare la registrazione in un file WebM o GIF animato.

I controlli relativi alla registrazione dello schermo si trovano nella scheda Registrazione schermo della finestra Controlli estesi.

Suggerimento: puoi aprire i controlli della registrazione dello schermo anche premendo Ctrl + Maiusc + R (Command + Maiusc + R su Mac).

Per avviare la registrazione dello schermo, fai clic sul pulsante Avvia registrazione nella scheda Registrazione dello schermo. Per interrompere la registrazione, fai clic su Interrompi la registrazione.

I controlli per la riproduzione e il salvataggio del video registrato si trovano nella parte inferiore della scheda Registrazione schermo. Per salvare il video, scegli WebM o GIF dal menu in fondo alla scheda e fai clic su Salva.

Puoi anche registrare e salvare una registrazione dello schermo dall'emulatore utilizzando il seguente comando nella riga di comando:

adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm

Screenshot

Puoi acquisire screenshot dalla riga di comando con uno dei seguenti comandi:

  • screenrecord screenshot [destination-directory]
  • adb emu screenrecord screenshot [destination-directory]

Gli screenshot vengono salvati in formato PNG.

Videocamera virtuale per scene e ARCore

Ora è ancora più semplice sviluppare e testare app di realtà aumentata (AR) con ARCore con la nuova fotocamera virtuale, che consente di sperimentare l'esperienza AR in un ambiente virtuale.

Per informazioni sull'utilizzo della videocamera per la scena virtuale nell'emulatore, vedi Eseguire app AR nell'emulatore Android.

Immagini del Google Play Store su Pixel

Il Google Play Store è ora abilitato per le immagini dei dispositivi Pixel e Pixel 2. Ciò è indicato in Gestione durata media in Android Studio 3.2 e versioni successive con il logo di Google Play nella colonna Play Store. Le AVD in cui è attivo il Google Play Store hanno una scheda Google Play nella finestra di dialogo Controlli estesi, che offre un pratico pulsante per aggiornare Google Play Services sul dispositivo.

Istantanee

Ora puoi caricare un'istantanea di Avvio rapido senza riavviare l'emulatore. Per caricare uno snapshot, apri la finestra Controlli estesi nella pagina Impostazioni e fai clic sul pulsante Carica ora.

Abbiamo apportato molti miglioramenti al caricamento e al salvataggio degli snapshot per migliorare l'efficienza dell'utilizzo delle risorse e ridurre al minimo il tempo richiesto da ogni operazione. Se continui a riscontrare salvataggi insolitamente lunghi, segnala il problema, fornendo i dettagli di CPU, RAM e impostazioni di eventuali software antivirus, firewall o di sicurezza in esecuzione.

Rendering con Skia

Quando utilizzi immagini per l'API 27 o versioni successive, l'emulatore può eseguire il rendering dell'interfaccia utente di Android con Skia, che può eseguire il rendering in modo più fluido ed efficiente.

Per il momento, per utilizzare Skia devi abilitarla esplicitamente.

Per attivare il rendering Skia, utilizza i seguenti comandi nella shell adb:

  su
  setprop debug.hwui.renderer skiagl
  stop
  start

Fotocamera

Su Windows, Android Emulator ora utilizza Media Foundation come backend della webcam, il che migliora notevolmente le prestazioni e la frequenza fotogrammi per l'acquisizione con la webcam, fino a 720p a 30 f/s.

Su Mac, ora è possibile utilizzare insieme webcam0 e webcam1.

Vari

L'opzione della riga di comando -phone-number-prefix è stata modificata in -phone-number [number], che consente di impostare il numero di telefono completo.

Ora puoi utilizzare indirizzi SMS alfanumerici.

Correzioni

  • La versione Linux dell'emulatore Android è ora realizzata utilizzando una moderna Toolchain Clang C++. Questa modifica risolve il problema dell'avvio dell'emulatore che non riesce a causa di errori libGL e libstdc++.
  • Sono state corrette diverse cause di arresti anomali e blocchi.
  • Per evitare arresti anomali e blocchi causati da uno spazio libero su disco insufficiente, l'emulatore ora verifica se lo spazio libero su disco è sufficiente all'avvio e non si avvierà a meno che non siano disponibili almeno 2 GB.
  • Risolto un problema che impediva il rendering di alcuni giochi Unity.
  • Risolto il problema DNS che impediva all'emulatore di connettersi alla rete.
  • Risolto un problema che causava il mancato funzionamento delle modifiche alla memoria interna assegnata a un AVD tramite la finestra di dialogo Configurazione dispositivo virtuale.
  • Risolto il problema di molti processi ADB creati e non arrestati correttamente.
  • Risolto un problema che causava la mancata risposta dei pulsanti di rotazione e di altre parti dell'interfaccia utente a meno che non fosse aperta la finestra dei controlli estesi.
  • Risolto un problema per cui la copia e incolla dall'host non funzionava a meno che la finestra di dialogo dei controlli estesi non fosse stata aperta almeno una volta.
  • Il rettangolo di ridimensionamento dell'emulatore senza frame è stato aggiornato per seguire meglio il tema visivo dell'emulatore.
  • Telefono e SMS sono ora disattivati correttamente quando è attiva la modalità aereo.
  • Risolto un problema che causava la disattivazione della funzionalità SMS e cellulare dopo il caricamento di uno snapshot.
  • Non riceverai più falsi messaggi di avviso che comunicano “Unable to open... \pstore.bin. Permission denied.”
  • Risolto un problema che impediva il riposizionamento della durata di visualizzazione media su alcuni schermi Mac.
  • Sono stati risolti i problemi relativi allo sfarfallio e allo schermo vuoto sui computer MacBook Pro più recenti durante l'esecuzione di AVD con skin di Pixel 2 XL.
  • Sono stati risolti i problemi relativi alle schermate vuote quando si passava alla modalità con zoom mentre era attivo un emulatore senza frame.
  • Risolto un problema che causava lo scorrimento dell'interfaccia del dispositivo e dei contenuti dell'emulatore fuori sincronizzazione quando si aumentava lo zoom.

Se continui a riscontrare blocchi o altre instabilità, segnala il problema.

27.1.12 (marzo 2018)

Questo aggiornamento include correzioni per i seguenti problemi:

  • Qualità audio Bluetooth ridotta dopo l'avvio dell'emulatore. (Problema 37095756)
  • Le posizioni inviate a un emulatore sono state inviate a tutti. (Problema 73450633)
  • La posizione GPS impostata utilizzando la console è stata sostituita dai valori impostati utilizzando Controlli estesi > Posizione nella Graphic User Interface. (Problema 73471760)

Se continui a riscontrare blocchi o altre instabilità, segnala il problema.

Grazie a questo aggiornamento, a un'immagine di sistema corrente e a una versione di anteprima di Android Studio, puoi utilizzare Android Emulator per eseguire applicazioni di realtà aumentata create con ARCore. Per istruzioni e requisiti dettagliati, vedi Eseguire app AR nell'emulatore Android.

27.1.10 (febbraio 2018)

  • Risoluzione acquisizione fotocamera

    Ora è possibile acquisire fotogrammi da 720p da una webcam collegata.

    Per funzionare con le immagini di sistema Android 8.1 (livello API 27) e versioni successive, qualsiasi webcam collegata deve essere in grado di acquisire frame da 720p.

  • Correzioni

    • Risolto un problema che causava la visualizzazione a volte di un'immagine distorta o completamente verde nell'acquisizione della webcam.
    • Risolto un problema che rendeva possibile visualizzare il seguente messaggio anche in assenza di un blocco effettivo: "emulator: ERROR: Detected a suspended thread 'Qt event loop'". Nessuna risposta per 15.000 ms".

Se continui a riscontrare blocchi o altre instabilità, segnala il problema.

27.1.7 (febbraio 2018)

  • Finestra dell'emulatore senza frame:

    Per impostazione predefinita, gli emulatori con file delle skin del dispositivo ora vengono mostrati senza un frame della finestra circostante. Per mostrare il frame della finestra circostante, attiva Mostra la cornice della finestra intorno al dispositivo nel riquadro Impostazioni della finestra Controlli estesi.

  • Miglioramenti dell'Avvio rapido per rendere più efficiente l'utilizzo delle istantanee AVD:

    • Puoi salvare uno snapshot AVD in qualsiasi momento utilizzando il pulsante Salva ora nel riquadro Impostazioni della finestra di dialogo Controlli estesi.
    • L'emulatore riduce il tempo necessario per salvare uno snapshot in molti casi salvando solo la differenza tra lo stato attuale e lo snapshot salvato in precedenza.

    Per i dettagli, consulta la documentazione sull'avvio rapido.

  • L'emulatore è stato aggiornato per usare QEMU 2.9.

    Tra i miglioramenti degni di nota figurano:

    • I/O ottimizzato e blocco dei thread di I/O più granulare per prestazioni migliori.
    • Sono stati risolti bug da QEMU 2.8 (26.1.4).
    • Nuova implementazione del backend HAXM.

    Consulta l'elenco completo delle modifiche nel log delle modifiche di QEMU 2.9.

  • Implementazione di Swiftshader conforme a OpenGL ES 3.0:

    Il renderer Swiftshader dell'emulatore ora è pienamente conforme a OpenGL ES 3.0. Per maggiori dettagli sul renderer Swiftshader, consulta la sezione Impostazioni > Avanzate di Controlli estesi.

  • Correzioni

    • Risolto il problema per cui la condivisione degli appunti non funzionava a meno che l'opzione Attiva condivisione appunti non fosse stata disattivata e attivata.
    • È stato risolto un problema di blocco durante l'utilizzo del backend del rendering Swiftshader con AVD a bassa risoluzione.

27.0.5 (gennaio 2018)

  • ANGLE per il rendering su Windows è ora disattivato per impostazione predefinita.

    Se ANGLE funziona meglio, puoi riabilitarlo con il flag della riga di comando -gpu angle_indirect. In alternativa, apri la finestra dei controlli estesi, vai a Impostazioni > Avanzate e seleziona ANGLE D3D11 per l'impostazione del renderer OpenGL ES.

  • Risolto il problema per cui Maiusc + B non digitava una lettera B maiuscola.

27.0.2 (dicembre 2017)

  • La nuova funzionalità Avvio rapido fornisce tempi di avvio dell'emulatore più rapidi, basati su un'istantanea della tua istanza AVD.

    L'Avvio rapido è abilitato per impostazione predefinita per tutte le AVD. Anche se la prima volta che avvii una AVD, è necessario eseguire un avvio a freddo (proprio come quando si accende un dispositivo), tutti gli avvii successivi sono veloci e il sistema viene ripristinato allo stato in cui hai chiuso l'emulatore (in modo simile alla riattivazione di un dispositivo).

    Se vuoi controllare quando l'emulatore salva uno snapshot, apri la finestra dei controlli estesi dell'emulatore e fai clic su Impostazioni. Qui puoi selezionare una delle seguenti impostazioni per Salva lo stato di avvio rapido all'uscita:

    • : salva sempre l'istantanea di avvio rapido quando chiudi l'emulatore. Questa è l'impostazione predefinita.
    • No: non salvare mai l'istantanea di avvio rapido; esegui sempre un avvio a freddo.
    • Chiedi: viene chiesto se salvare o meno l'istantanea di avvio rapido quando chiudi l'emulatore.

    La tua selezione si applica solo alla durata di visualizzazione media attualmente aperta.

    Per ulteriori informazioni, consulta la documentazione relativa all'avvio rapido.

  • Aggiunto il supporto per OpenGL ES 3 per Mac (per immagini di sistema che utilizzano il livello API 24 e livelli successivi, API di Google e ABI x86).

  • Per una maggiore stabilità nelle app OpenGL ES 2 o versioni successive, l'emulatore ora utilizza il profilo principale OpenGL, se disponibile.

  • Nuove opzioni per il rendering con Swiftshader / ANGLE:

    • -gpu swiftshader_indirect: Variante più veloce e stabile di Swiftshader che funziona con Avvio rapido.
    • -gpu angle_indirect (solo Windows): variante più stabile di ANGLE D3D che funziona anche con Avvio rapido.

    Le opzioni precedenti -gpu swiftshader e -gpu angle sono state ritirate. Nella finestra Controlli estesi, le opzioni "SwiftShader" e "ANGLE" per l'impostazione del renderer OpenGL ES in Impostazioni > Avanzate ora utilizzano le varianti *_indirect.

  • Correzione di altri bug di vario tipo.

26.1.4 (agosto 2017)

Questa è una release secondaria con correzioni di bug e i seguenti miglioramenti alla configurazione della GPU:

  • Attiva l'animazione all'avvio durante l'esecuzione sul renderer ANGLE
  • Disattiva GLES3 durante l'esecuzione nel renderer ANGLE

26.1.3 (agosto 2017)

Si tratta di una release secondaria con correzioni di bug, miglioramenti delle prestazioni e piccole modifiche alle funzionalità.

  • Ora è necessaria questa versione per utilizzare le immagini di sistema Android 8.0 più recenti. Sono conformi agli alti e includono partizioni vendor.img separate.
  • Il nuovo HAXM 6.2.0 è ora disponibile (controlla SDK Manager) e include i seguenti aggiornamenti:
    • Utilizzo della memoria migliorato. Il set di dati di picco di memoria fissato da HAXM non corrisponde più alle dimensioni della RAM dell'AVD; al contrario, la memoria viene impaginata on demand. Questo dovrebbe consentire all'emulatore di funzionare in modo più affidabile su macchine con quantità di RAM inferiori.
    • L'emulatore con HAXM 6.2.0 ora può avviarsi più velocemente su macOS, saltando una lunga fase di inizializzazione.
  • Miglioramenti alla configurazione della GPU
    • Sono stati risolti i problemi relativi alla schermata nera all'avvio durante il rendering del software lato ospite tramite il passaggio al rendering del software lato host con Swiftshader. Le ultime revisioni delle immagini di sistema per i livelli API 19-25 con le API di Google devono avere un rendering lato ospite funzionante.
    • Risolto un problema per cui l'emulatore passava a un renderer software a causa del rilevamento della presenza di GPU Intel meno recenti, ma in realtà l'emulatore era in esecuzione su una GPU discreta. Quali GPU passeranno al rendering ANGLE o Swiftshader:
      • Le iGPU Intel meno recenti hanno problemi con i driver OpenGL e ANGLE D3D. Gli utenti con Intel HD Graphics 3xxx e versioni precedenti utilizzeranno Swiftshader.
      • Alcuni utenti hanno segnalato l'impossibilità di usare le immagini di livello API 25 a causa di un bug per cui "Avvio app Pixel continua a interrompersi". Sembra che si tratti di un problema del driver in alcuni modelli Intel HD 4xxx. Passeranno quindi all'utilizzo automatico ANGLE.
    • Per ottenere risultati ottimali con l'emulazione della GPU, ti consigliamo di utilizzare una GPU NVIDIA o AMD discreta o una GPU Intel più recente (Iris, HD 5xxx, HD 5xx/6xx).
    • Risolto un problema per cui l'emulatore non si avviava (non è stato possibile inizializzare l'emulazione OpenID) se la modalità di visualizzazione iniziale era configurata con hw.gpu.mode=host e l'emulatore veniva avviato in un client di desktop remoto.
    • Sono state chiarite le impostazioni "Livello API OpenGL ES (richiede il riavvio)"; è stata aggiunta un'opzione per eseguire il downgrade da OpenGL ES 3 a OpenGL ES 2 in caso di problemi o per eseguire test su livelli API OpenGL ES inferiori.
    • Il renderer Mesa è deprecato; ora verrà effettuato il passaggio automatico di hw.gpu.mode=mesa per l'utilizzo di Swiftshader sull'host.
  • Miglioramenti per macOS:
    • L'emulatore è ora completamente compatibile con macOS 10.13 High Sierra tramite Hypervisor.Framework o HAXM 6.2.0.
    • Hypervisor.framework è ora abilitato per impostazione predefinita su macOS per le immagini x86 a 32 bit al fine di migliorare le prestazioni e la compatibilità con macOS. Se riscontri problemi specifici, invia una segnalazione di bug e aggiungi HVF = off a ~/.android/advancedFeatures.ini (crea questo file se non esiste).
    • Risolti i problemi senza connessione a internet o l'impossibilità di collegare il debugger durante l'utilizzo di Hypervisor.framework.
    • Per migliorare la compatibilità e le prestazioni dell'acquisizione con webcam, l'acquisizione della fotocamera basata su QTKit è stata sostituita con una con buffer basata su AVFoundation.
  • Aggiunto il supporto per il Wi-Fi in alcune immagini di sistema (attualmente solo il livello API 25). È disponibile un punto di accesso chiamato "AndroidWifi" a cui Android si connette automaticamente. Il supporto del Wi-Fi può essere disattivato eseguendo l'emulatore con il parametro della riga di comando -feature -Wifi.
  • Alcuni utenti hanno sollevato il dubbio che le immagini di sistema del Play Store a dimensioni fisse non avessero spazio di archiviazione sufficiente. Di conseguenza, abbiamo aumentato le dimensioni a 2 GB per impostazione predefinita (da 800 MB).
  • È stata aggiunta una scorciatoia da tastiera (Ctrl+Maiusc+U) per aprire la pagina dell'interfaccia utente per la segnalazione di bug direttamente dalla pagina delle impostazioni.
  • Risolto un problema per cui, se veniva utilizzata una CPU meno recente con Intel x86 EPT ma senza UG, l'emulatore non si avviava se era configurato più di un core.
  • Risolto il problema per cui HyperV veniva rilevato in modo errato se l'emulatore era in esecuzione in un hypervisor Xen.
  • Risolto il problema per cui l'emulatore si arrestava in modo anomalo all'avvio in alcune configurazioni Linux.

26.1.2 (luglio 2017)

Questa release include nuove funzioni e miglioramenti delle prestazioni.

  • È stata aggiunta la possibilità di definire una configurazione proxy HTTP personalizzata nei controlli estesi (fai clic su Altro , quindi su Impostazioni e Proxy). Per impostazione predefinita, l'emulatore utilizza le impostazioni del proxy HTTP di Android Studio, ma questa schermata ti consente di definire una configurazione manuale del proxy.

  • Aggiunto il supporto VNC per la GPU in modalità ospite, in modo che l'emulatore possa essere visualizzato e controllato da remoto. Ad esempio, puoi avviare l'emulatore e consentire a VNC di ascoltare la porta 5901 come segue:

    1. Esegui: emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
    2. Apri un visualizzatore VNC, ad esempio un visualizzatore thinvnc, per collegarlo alla porta 5901.

      • Per utilizzare il client di condivisione dello schermo integrato di Mac, è richiesta una password VNC all'avvio dell'emulatore. Per impostare una password, usa questo comando:

        emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio

        Quindi, inserisci change vnc password nella console e inserisci una password.

    Android O non è attualmente supportato per la modalità VNC.

  • È stato aggiunto un pulsante Segnala un bug nella schermata della guida dei controlli estesi (fai clic su Altro , quindi su Guida e Guida dell'emulatore). Se fai clic su Segnala un bug, si apre una finestra di dialogo in cui puoi vedere i dettagli della segnalazione di bug, ad esempio lo screenshot, le informazioni di configurazione della funzionalità AVD e il log della segnalazione di bug. Puoi quindi salvare il report per te o segnalare problemi con l'emulatore.

  • Aggiunto il sensore del giroscopio all'emulatore e al pannello dei sensori virtuali. Ciò richiede il funzionamento di un'immagine di sistema con supporto giroscopio (attualmente i livelli API 24 e 25).

  • È stato aggiunto il DNS preferito dall'host all'elenco DNS di Qemu su Windows, quando più interfacce di reti virtuali sull'host introducono più indirizzi DNS non funzionanti per l'emulatore.

  • È stato aggiunto il supporto sperimentale di macOS Hypervisor.Framework per immagini x86 a 32 bit su macOS 10.10 e versioni successive tramite flag del server, che dovrebbero migliorare il tempo di avvio e le prestazioni.

    • Se riscontri problemi, aggiungi la riga HVF = off in ~/.android/advancedFeatures.ini.
  • OpenGL ES 3.x è ora abilitato per impostazione predefinita per le immagini di sistema e le GPU host che supportano OpenGL ES 3. Al momento solo gli host Android O (livello API 26) e Windows/Linux supportano OpenGL ES 3.

    • Se riscontri problemi con OpenGL ES 3, aggiungi la riga GLESDynamicVersion = off in ~/.android/advancedFeatures.ini.
  • L'emulatore ora utilizza FBO fuori schermo OpenGL per tutto il rendering, ad eccezione della pubblicazione finale dell'immagine di visualizzazione, che dovrebbe aiutare a risolvere problemi di coerenza dei colori su tutte le piattaforme.

  • Dopo aver raccolto i dati su problemi di rallentamento improvviso dell'emulatore, abbiamo stabilito che il problema potrebbe essere dovuto a un'interazione tra i driver Intel OpenGL meno recenti e gli aggiornamenti di Windows. Di conseguenza, per gli utenti con Intel HD 4000, 3000, 2000 (e GPU correlate) il rendering è ora impostato per impostazione predefinita su un rendering D3D (ANGLE) o su Swiftshader (renderer del software).

26.0.0 (marzo 2017)

Questa release è compatibile con il livello API 26. Include inoltre una serie di miglioramenti delle prestazioni e correzioni di bug.

Revisione secondaria 26.0.3 (maggio 2017)

  • Aggiunge flag di funzionalità aggiornabili online per risolvere rapidamente i problemi derivanti da configurazioni hardware problematiche. Ciò consente a Google di implementare correzioni e funzionalità dipendenti dalle configurazioni utente aggiornando i flag lato server. Se rilevi problemi relativi a hardware specifici, segnala un bug per consentirci di esaminare il problema.
  • Nuovo supporto dell'input rotatorio per le immagini di sistema con livello 25 dell'API Android Wear. Per emulare la manopola di input rotante su un dispositivo Wear, fai clic sulla scheda Input rotatorio nella finestra estesa.
  • Ora la finestra di dialogo di Crash Reporting è ridimensionabile e non reimposta più Quando inviare i report sugli arresti anomali a Chiedi senza input.
  • L'emulatore a 32 bit richiede ora che la dimensione massima della RAM AVD sia inferiore o uguale a 512 MB, per evitare che l'emulatore esaurisca lo spazio disponibile nello spazio di indirizzi virtuali di 2 GB.
  • Aggiunge il supporto per i percorsi assoluti nelle immagini dell'emulatore.
  • Aggiunge nella finestra estesa per le immagini del Google Play Store una nuova scheda che mostra la versione di Play Services, nonché un pulsante per controllare la disponibilità di aggiornamenti per Play Services.
  • Aggiunge un menu a discesa per selezionare il renderer OpenGL nella pagina Impostazioni emulatore. Se riscontri problemi con il driver OpenGL su un computer Windows, prova a utilizzare le opzioni ANGLE (D3D11) o ANGLE (D3D9) (è necessario riavviare). Se riscontri problemi con il driver OpenGL su un computer non Windows, prova a utilizzare il renderer software Swiftshader (richiede un riavvio).
  • È stato corretto un arresto anomalo raro all'uscita quando l'emulatore riceve i comandi exit e minimize.
  • Risolve un problema di scalabilità durante la modifica dei display su un computer Mac. (Problema 268296)
  • Risolve un problema per cui l'emulatore occupa il 300% della CPU e lo conserva dopo aver ripristinato il computer host dalla modalità di sospensione o quando l'emulatore è in esecuzione da molto tempo.
  • È stato corretto un arresto anomalo durante la chiusura dell'emulatore.

Aggiornamenti con HAXM v6.1.1 (marzo 2017)

Nota: HAXM v6.1.1 è disponibile per gli utenti Mac tramite SDK Manager a partire dal 30 marzo e sarà presto disponibile per gli utenti Windows.

La versione 26.0.0 dell'emulatore Android supporta HAXM v6.1.1, che include i seguenti aggiornamenti:

  • Abilita l'emulazione delle Performance Monitoring Unit (PMU). (Problema 223377)
  • Corregge la coesistenza con VirtualBox e Docker sui Mac. (Numero 197915)
  • Riesamina il messaggio di errore di installazione visualizzato quando il programma di installazione non riesce a rilevare Intel VT-x su Windows, in genere perché Hyper-V è abilitato.
  • Aggiunge il supporto per l'accelerazione dell'emulatore Android in una VM Windows basata su Hyper-V. Questo aggiornamento richiede che l'istanza Hyper-V host (quella che gestisce la VM Windows o l'ospite) utilizzi la versione più recente di Hyper-V con la virtualizzazione nidificata abilitata. Hyper-V deve essere disabilitato nell'istanza Hyper-V guest (la VM Windows).

Dipendenze

  • SDK Platform-Tools per Android versione 25.0.4 o successive.
  • Android SDK Tools versione 26.0.0 o successive.

Nuove funzionalità e correzioni di bug

  • Compatibile con il livello API 26.
  • Completamente conforme a GLES 2.0. Data una GPU host con driver OpenGL desktop conformi, l'emulatore ora trasmette il 100% dell'elenco mustpass di Android CTS dEQP-GLES2. Questa versione è stata rilasciata per le immagini x86 di livello API 24 (revisione 11 e versioni successive) e sarà presto inclusa in tutte le immagini di sistema.
  • Prestazioni di riproduzione video migliorate. L'emulatore ora memorizza tutti i buffer di colore video nella memoria condivisa host/ospite ed esegue la conversione finale da YUV a RGB nella GPU. Al momento, il formato 1080p30 dovrebbe essere ben raggiungibile dalla maggior parte dei sistemi. Questa versione è stata rilasciata per le immagini x86 di livello API 24 (revisione 11 e successive) e sarà presto inclusa in tutte le immagini di sistema.
  • Ora l'emulatore annulla correttamente la registrazione dall'elenco adb devices all'uscita e chiude le porte TCP aperte sui computer Linux.
  • le connessioni ADB sono ora più affidabili. Un emulatore in esecuzione viene rilevato più velocemente e non passa più allo stato "offline" o "non autorizzato".

25.3.0 (marzo 2017)

A partire da questa release, Android Emulator verrà rilasciato separatamente da SDK Tools. Questa release contiene una serie di miglioramenti delle prestazioni, nuove funzionalità e correzioni di bug.

Revisione secondaria 25.3.1 (marzo 2017)

  • Risolto un arresto anomalo che si verificava su alcune configurazioni GPU disattivando GLAsyncExchange per impostazione predefinita. Questa funzionalità è stata aggiunta nella versione 25.3.0 per migliorare la durata dei frame e i frame al secondo per giochi e video, ma causa un errore dell'emulatore su alcune configurazioni di macchine sconosciute. Puoi abilitarlo manualmente aprendo il file android_sdk/emulator/lib/advancedFeatures.ini e impostando GLAsyncSwap = on.

Dipendenze

  • SDK Platform-Tools per Android versione 24 o successiva.
  • Revisione Strumenti SDK Android 25.3.0.

Nuove funzionalità e correzioni di bug

  • Motore di emulazione aggiornato a QEMU 2.7, che include tutte le correzioni di bug recenti, le prestazioni migliorate e le nuove funzionalità.
  • Supporto del nuovo IPv6.
  • L'emulatore ora utilizza SwiftShader come renderer software puro sull'host.
  • Miglioramenti delle prestazioni di Android Pipe: Android Pipe, il principale canale di comunicazione tra l'emulatore e il sistema operativo Android, è ora in ordine di velocità più veloce, ha una latenza minore e offre migliori prestazioni multi-thread. Ciò causa una serie di miglioramenti delle prestazioni dell'emulatore, tra cui:
    • Migliorata la velocità di push/pull di ADB.
    • Migliore supporto dell'accelerazione 3D.
    • Maggiore reattività dell'emulatore.
    • Prestazioni grafiche migliorate.
  • L'emulatore ora utilizza i buffer lato GPU (glBindBuffers/glBufferData) quando vengono richiesti dal guest, riducendo l'overhead della CPU in alcune app.
  • Supporto audio migliorato.
  • I/O del disco più veloce: l'emulatore ora utilizza thread separati per inviare l'I/O del disco, con conseguente minore latenza e migliore velocità effettiva (~1,5 volte la velocità di I/O sequenziale, ~5 volte la velocità di I/O ad accesso casuale). Ciò riduce anche il numero di svuotamenti su disco, determinando un carico molto inferiore per i dispositivi fisici.
  • L'emulatore ora utilizza file sparsi per l'avvio del disco sulle macchine Windows, accelerando sia il primo avvio sia gli avvii di cancellazione dei dati. Durante la creazione o la reimpostazione di una durata di visualizzazione media, l'emulatore ora scrive su disco 100-200 MB di dati, anziché 2 GB o più.
  • Vari miglioramenti alla GUI:
    • L'emulatore ora utilizza Qt 5.7.0, che include correzioni di bug e miglioramenti delle prestazioni.
    • L'inizializzazione dell'interfaccia utente non tenta più di caricare tutti i file eseguibili dell'emulatore come plug-in Qt, quindi è notevolmente più breve, soprattutto sugli HDD.
    • Le interazioni con l'interfaccia utente sono ora più rapide e fluide, incluse la rotazione, il ridimensionamento delle finestre e il caricamento e la chiusura delle finestre dei controlli estesi.