Rendere più veloce l'emulatore Android


251

L'emulatore Android è un po 'lento. Per alcuni dispositivi, come Motorola Droid e Nexus One, l'app funziona più velocemente nel dispositivo reale rispetto all'emulatore. Questo è un problema durante il test di giochi ed effetti visivi.

Come si fa a far funzionare l'emulatore il più velocemente possibile? Ho giocato con i suoi parametri ma non ho ancora trovato una configurazione che mostri un notevole miglioramento.


1
tutte le mie app funzionano più velocemente sul dispositivo

16
È divertente perché il simulatore di iPhone è esattamente l'opposto. Le app funzionano più lentamente sul dispositivo. Nella maggior parte dei casi preferisco un emulatore più lento, perché ti stimola a migliorare la tua app, ma a volte vuoi solo vederlo funzionare come su un dispositivo reale.
hpique,

1
È possibile farlo funzionare MOLTO più velocemente o normalmente usando VirtualBox - vedi stackoverflow.com/a/6058689/40961
David d C e Freitas

5
iOS e Windows Mobile usano i simulatori, mentre Android usa gli emulatori. I simulatori implementano nuovamente tutte le librerie e le API mobili utilizzando le librerie host e quindi sono veloci. Gli emulatori utilizzano le stesse librerie dei dispositivi reali, quindi è più lento. In termini di Android, se usi una macchina virtuale Android, sarà molto veloce. Forniamo un vm gratuito qui: leapdroid.com
huisinro,

2
... e quanto è folle che 6 anni dopo, e anche con HAXM e l'immagine del sistema x86 e un ambiente di sviluppo ben sviluppato, l'emulatore Android è ancora lento come melassa?
aroth,

Risposte:


229

Pagina Web ufficiale

~ 50% più veloce

Finestre:

  • Installa "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Extras
  • Installa "Intel x86 Atom System Images" => SDK-Manager / Android 2.3.3
  • Vai alla cartella principale dell'SDK Android e vai a extra \ intel \ Hardware_Accelerated_Execution_Manager. Eseguire il file IntelHaxm.exe da installare. (in Android Studio puoi accedere a: Impostazioni -> Android SDK -> Strumenti SDK -> Intel x86 Emulator Accelerator (programma di installazione HAXM))

  • Crea AVD con CPU / ABI "Intel atom x86"

  • Esegui l'emulatore e verifica nella console che HAXM sia in esecuzione (apri una finestra del prompt dei comandi ed esegui il comando: sc query intelhaxm)

inserisci qui la descrizione dell'immagine

Inoltre, non dimenticare di installare questo

inserisci qui la descrizione dell'immagine

PS durante la creazione di AVD aggiunge memoria di emulazione: Hardware / Nuovo / Dimensione ram dispositivo / valore di impostazione 512 o più

Linux:

  • Installa KVM: apri GOOGLE, scrivi "installazione kvm"
  • Crea AVD con CPU / ABI "Intel atom x86"
  • Esegui dalla riga di comando: emulatore -avd avd_name -qemu -m 512 -enable-kvm
  • Oppure esegui da Eclipse: Esegui / Esegui configurazioni / Scheda "Destinazione" -> controlla Intel x86 AVD e nella finestra "Opzioni di riga di comando emulatore aggiuntive" aggiungi: -qemu -m 512 -enable-kvm (fai clic su Esegui)

inserisci qui la descrizione dell'immagine

PS Per Fedora , per Ubuntu

OS-X:

  • In Android SDK Manager, installa l'immagine del sistema Atom Intel x86
  • In Android SDK Manager, installa Intel x86 Emulator Accelerator (HAXM)
  • Nel finder, vai al percorso di installazione di Intel Emulator Accelerator e installa IntelHAXM (apri il dmg ed esegui l'installazione). È possibile trovare la posizione posizionando il mouse sopra la voce Emulator Accelerator in SDK Manager.
  • Crea o aggiorna un AVD e specifica Intel Atom x86 come CPU. Intel x86 Emulator Accelerator (HAXM) che mostra la posizione

PS: controlla questo strumento, molto conveniente anche di prova


8
Questo funziona anche in OSX. È necessario installare /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgdopo aver scaricato il pacchetto dal gestore SDK.
Jarett Millard

5
Le istruzioni di Windows con "Usa GPU host" mi hanno dato un emulatore superveloce! (Ho un processore Intel supportato e una scheda grafica nVidia.) Le animazioni sono fluide e burrascose (il più delle volte ; altre volte, scatti molto piccoli)! Si noti che è necessario riavviare Eclipse affinché AVD Manager raccolga l' opzione CPU Intel Atom (x86) . Suggerimento: non allocare troppa RAM. Con 1 GB di RAM, l'emulatore non è stato avviato (con GPU) ma con 512 MB di RAM ha funzionato senza problemi e si è avviato molto rapidamente (di nuovo con GPU).
ADTC,

Ho scoperto che LogCat viene spammato con molti avvisi di traccia. Per filtrarli, utilizzare ^(?!.*(nativeGetEnabledTags)).*$come filtro di testo. Ho segnalato questo come un problema di bug . Inoltre, penso che devi spegnere correttamente il tuo dispositivo emulatore (tieni premuto il pulsante di accensione, quindi seleziona Spegni ) per evitare di avere errori quando lo avvii la prossima volta (potrei semplicemente chiudere l'emulatore ARM, ma con l'emulatore Intel, solo la chiusura sembra creare problemi).
ADTC,

Ti darei +100 se potessi. Funziona su Windows 8 e le prestazioni sono aumentate notevolmente!
Paolo M,

2
Ho dovuto disabilitare la tecnologia Hyper V prima attraverso il programma e le funzionalità sotto il pannello di controllo per farlo funzionare.
Mike Flynn,

34

AGGIORNAMENTO: ora che è disponibile un'immagine Intel x86, la risposta migliore è la più sopra.

Come ha giustamente sottolineato CommonsWare, l'emulatore è lento perché emula una CPU ARM, che richiede la traduzione in codici operativi Intel. Questa virtualizzazione mastica CPU.

Per rendere l'emulatore più veloce, devi dargli più CPU. Inizia con una CPU veloce o aggiorna se puoi.

Quindi, dai all'emulatore più CPU che hai:

  1. Disabilita Hyperthreading : poiché l'emulatore non sembra utilizzare più di un core, l'hyperthreading riduce effettivamente il tempo complessivo della CPU che l'emulatore otterrà. La disabilitazione di HT rallenterà le app che sfruttano più CPU. L'hyperthreading deve essere disabilitato nel BIOS.
  2. Fai funzionare l'emulatore su una CPU diversa da CPU 0 - Questo ha un impatto molto più piccolo rispetto alla disattivazione di HT, ma aiuta alcuni. Su Windows, è possibile specificare su quale CPU verrà eseguito un processo. Molte app masticheranno la CPU 0 e, di default, l'emulatore gira su CPU 0. Io cambio l'emulatore per farlo funzionare sull'ultimo. Si noti che su OS X non è possibile impostare l'affinità (consultare: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Vedo da qualche parte un miglioramento del 50% con questi due cambiamenti in atto.

Per impostare l'affinità del processore su Windows 7:

  1. Apri Task Manager
  2. Fai clic su Visualizza tutti i processi (per eseguire come amministratore, altrimenti non puoi impostare l'affinità del processore)
  3. Fare clic con il tasto destro su emulator.exe e selezionare Imposta affinità ...
  4. Nella finestra di dialogo Imposta affinità, selezionare solo l'ultima CPU

Nota: quando si modifica l'affinità in questo modo, viene modificata solo per la durata del processo. Al prossimo avvio, devi farlo di nuovo.

inserisci qui la descrizione dell'immagine


22
La percentuale di CPU è raddoppiata quando hai disabilitato l'hyper-threading perché hai dimezzato la quantità di processori logici.
Timothy003,

1
Funziona a meraviglia ma .. Sai come farlo su Ubuntu 11.10?
emeraldhieu,

1
@ Timothy003 sì, assolutamente corretto. E raddoppia la CPU utilizzata dall'emulatore.
mcohen75,

3
Si vede solo un raddoppio negli spettacoli del task manager numerico; non nella realtà. Se non stai eseguendo abbastanza software per generare abbastanza lavoro per avere l'equivalente di almeno 4 thread al 100% della CPU, le poche app che fanno un uso intenso della CPU otterranno comunque quasi l'intero core, non il mezzo core che il tuo ingenuo presupposto di che cosa sta visualizzando Task Manager.
Dan Fiddling By Firelight,

3
Per confermare ciò che dice @Dan Neely: ho un'app single core, che brucia solo il 100% della CPU. Quando ho HT mostra circa il 25%, senza mostra circa il 50%, ma in effetti calcola ciò che deve calcolare allo stesso tempo. Quindi nessuna differenza (almeno su Sandy Bridge).
bartosz.r,

17

Vorrei suggerire di dare una svolta a Genymotion . Funziona nel VirtualBox di Oracle e raggiungerà legittimamente 60 fps su un sistema moderato.

Ecco una screencap da uno dei miei seminari, in esecuzione su un modello di fascia bassa del 2012 MacBook Air:

Emulatore Nexus 7 a 56.6 fps

Se non riesci a leggere il testo, è un emulatore Nexus 7 a 56.6 fps. Il bonus aggiuntivo (grande!) È che Google Play e Google Play Services vengono forniti con le macchine virtuali.

(La fonte dell'animazione dimostrata può essere trovata qui .)


12

Abilitare l' accelerazione hardware GPU (oltre a Intel HAXM), se si utilizza API 15 v3 o più recente e SDK Tools v17 +. L'accelerazione grafica per l'emulatore sfrutta l'hardware grafico del tuo computer di sviluppo, in particolare la sua unità di elaborazione grafica (GPU), per rendere più veloce il disegno dello schermo. Questo dà un notevole aumento della velocità.

Per abilitare l'accelerazione grafica abilitata per impostazione predefinita sull'emulatore : quando si crea l'AVD, nella sezione Hardware, fare clic su Nuovo, selezionare l'emulazione GPU e impostare il valore su Sì.

Per abilitare l'accelerazione solo in fase di esecuzione : utilizzare il flag -gpu mentre si avvia l'emulatore in questo modo:

emulator -avd <avd_name> -gpu on

Fonte: tutorial sull'utilizzo dell'emulatore di Google .


10

Modifica Sebbene l'utilizzo delle immagini Intel ottenga alcuni miglioramenti delle prestazioni, le prestazioni ottenute utilizzando Genymotion sono molto maggiori. Vedi la risposta di Paul Lammertsma .

Risposta precedente

Con ADT rev 17 l'emulatore supporta l'esecuzione di immagini di sistema x86 in modalità virtualizzazione su Windows e Mac OS X. Ciò ha un impatto notevole sulle prestazioni.

Note ADT rev 17: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

Configurazione dell'accelerazione della macchina virtuale: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm


7

Di recente sono passato da un core 2 @ 2.5 con 3 GB di RAM a un i7 @ 1.73 con 8 GB di RAM (entrambi i sistemi eseguivano Ubuntu 10.10) e l'emulatore ora è almeno due volte più veloce. Lanciare più hardware sicuramente aiuta.


Questa non è davvero una soluzione: potrebbe far sì che l'emulatore abbia un throughput più elevato per volta, ma in realtà non lo farà funzionare più velocemente.
Più chiaro


4

Ho notato che per impostazione predefinita l'emulatore è solo Core 0, dove la maggior parte delle applicazioni Windows verrà impostata su "qualsiasi" core. Inoltre, se lo metti su un altro core (come l'ultimo core), potrebbe far impazzire l'emulatore. Se possibile, puoi provare a mettere le tue applicazioni di utilizzo della CPU pesante sugli altri core della CPU per aumentare la velocità.

Per quanto riguarda l'hardware, ottieni la CPU più veloce che puoi ottenere per le applicazioni single-core. Più di 2 core potrebbero non presentare un'enorme differenza in termini di prestazioni dell'emulatore.

Eclipse + l'emulatore Android consuma insieme una tonnellata di RAM. Consiglierei almeno 3 concerti di RAM perché ho usato un sistema con 2 concerti di RAM, e ha rallentato perché il sistema ha esaurito la RAM e ha iniziato a utilizzare il file di paging.

Sento che le migliori CPU per questo probabilmente avranno un clock alto (usa solo il clock come misura per le CPU della stessa serie tra l'altro), gestiranno bene le operazioni non SIMD e avranno un meccanismo turbo boost. Non ci sono molti benchmark basati su Java, ma nel complesso cercano benchmark applicativi come la compressione e l'ufficio. Non guardare ai giochi o ai media poiché quelli sono fortemente influenzati dal SIMD. Se ne trovi uno Java, ancora meglio.


4

Su I / O di Google di quest'anno (2011), Google ha dimostrato un emulatore più veloce. Il problema non è tanto sul codice byte tra ARM e x86 ma sul rendering del software eseguito da QEMU. Evitano il rendering di QEMU e inviano il rendering direttamente a un server X, credo. Hanno mostrato un gioco di macchine con performance e fps davvero buoni.

Mi chiedo quando sarà disponibile per gli sviluppatori ...


Qualche novità su questo emulatore? Come si chiamava?
Alcor,

Non ho notizie. Non ho seguito gli aggiornamenti dell'emulatore Android per l'ultimo anno o giù di lì.
Cesar,

3

Google ha recentemente annunciato un nuovo emulatore per Android. È molto più veloce e migliore di quello vecchio. Puoi trovare maggiori informazioni a riguardo qui .


1

Penso che sia perché la macchina virtuale clr utilizza cpu direttamente senza la traduzione del codice operativo. Potrebbe essere un'ottimizzazione per l'applicazione clr o potrebbe essere Windows Mobile / Windows Phone 7 avviato sul processore INTEL. Piattaforma Android basata su Linux e teoricamente puoi avviare Android su una macchina virtuale in ambiente i686. In questo caso macchine virtuali come vmware potrebbero eseguire alcuni codici operativi direttamente. Ma questa opzione sarà consentita solo se scrivi su Java. Perché Java interpreta il proprio codice byte o lo precompila prima dell'esecuzione. vedi: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks


1

Grazie @zest! Ha funzionato come un fascino. Alcune cose da notare: è necessario applicare l'aggiornamento rapido di Intel per HAXM per far fronte al problema di panico del kernel: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Inoltre, nota , se hai più di un abi, devi disinstallarne uno a causa di un bug nell'ultima versione dell'API Android (r19): https://code.google.com/p/android/issues/detail?id= 66740 (rimuovere armeabi-v7a in questo caso, poiché si desidera x86 abi). A parte i 45 minuti che mi sono occorsi per risolverli, è stato un esercizio molto gratificante in termini di aumento delle prestazioni dell'emulatore.




1

scegli un emulatore a bassa risoluzione (es. Nexus S) se non hai una buona scheda grafica (come me)


0

Sto usando la CPU Intel (86) / ABI. Ho creato un altro emulatore usando ARM (armeabi-v7a) e ho riscontrato un notevole miglioramento della velocità. Sto usando la piattaforma 4.1.2 API livello 16


0

Spero che questo ti possa aiutare.

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

Ha risolto il mio problema ...


0

Aggiorna il tuo attuale Android Studio ad Android Studio 2.0 e aggiorna anche le immagini di sistema.

L'emulatore di Android Studio 2.0 è circa 3 volte più veloce del precedente emulatore di Android e con i miglioramenti dell'ADB ora puoi inviare app e dati 10 volte più velocemente all'emulatore che a un dispositivo fisico. Come un dispositivo fisico, l'emulatore Android ufficiale include anche Google Play Services integrato, in modo da poter testare più funzionalità API. Infine, il nuovo emulatore ha nuove e ricche funzionalità per gestire chiamate, batteria, rete, GPS e altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.