Il Forum è consultabile solo in modalità lettura. Per domande o consigli iscriviti al nostro GRUPPO FACEBOOK / COMMUNITY cliccando qui

[Guida] Velocizzare l'emulatore

Discussione in 'Development' iniziata da Andreaaa, 13 Gen 2014.

Condividi questa Pagina

  1. Andreaaa

    Andreaaa Baby Droid

    Iscritto:
    29 Ago 2013
    Messaggi:
    9
    "Mi Piace":
    1
    Prima o poi, tutti gli svilupattori sono costretti ad avere a che fare con l'emulatore, che -indipendentemente da quanto sia potente il vostro hardware- sarà sempre lentissimo. Ma testare un'applicazione o fare degli screenshot su altri devices è spesso necessità, per questo vedremo cosa si può fare per renderlo più performante.

    1 - Decidere che architettura si utilizza

    Generalmente, i devices che girano Android hanno processori ARM, mentre i computer hanno processori x86. Uno dei motivi del rallentamento dell'emulatore è che deve "emulare" un sistema ARM e quindi trasformare tutte le chiamate da ARM a x86.

    Bisogna quindi decidere se è possibile testarla su un'architettura x86, quindi guadagnando in velocità e perdendo un minimo nell'attendibilità della simulazione, o se invece è necessario testarlo su un'architettura ARM.

    Come decido? Il tutto dipende dall'applicazione stessa. Se l'applicazione fa uso di chiamate di basso livello ed è sviluppata interagendo con il processore direttamente, è meglio testarla su un'architettura ARM poiché i risultati potrebbero variare. Se invece la vostra applicazione non fa nulla di questo (la maggior parte delle app), testarla su x86 non farà (quasi) sicuramente nessuna differenza.

    Come faccio a sapere se usa chiamate di basso livello o interagisce direttamente con il processore? Come regola generale, se non lo sapete è perché non lo fa, quindi x86 andrà bene per la vostra app.
     
    Ultima modifica: 13 Gen 2014
  2. Andreaaa

    Andreaaa Baby Droid

    Iscritto:
    29 Ago 2013
    Messaggi:
    9
    "Mi Piace":
    1
    2 - x86

    Se avete deciso di testare la vostra applicazione su x86, avete ora due possibilità: usare l'emulatore standard o GenyMotion.

    2.1 - Emulatore Standard

    Per continuare ad usare l'emulatore tradizionale, aprite l'SDK manager (fate partire l'eseguibile [percorso al SDK]/sdk/tools/android o direttamente da Eclipse, Window > Android SDK Manager) e sotto l'API di riferimento, selezionate "Intel Atom x86 System Image by Intel Corporation" e scaricatelo.

    Quando andrete a creare un nuovo AVD o ad editarne uno già esistente tramite l'AVD Manager ([percorso al SDK]/sdk/tools/android --avd, o direttamente da Eclipse, Window > Android Virtual Device Manager) sotto la voce CPU/ABI potrete scegliere "Intel Atom (x86)".

    Molta gente ha riportato dei miglioramenti soddisfacenti, personalmente i miei test hanno invece rilevato un leggero rallentamento. Per questo motivo vi presento l'alternativa, Genymotion.

    2.2 - GenyMotion

    GenyMotion è un emulatore sviluppato da terza parti che usando VirtualBox e Android-x86 riesce ad ottenere performances nettamente superiori all'emulatore tradizionale.

    Andate sul sito Genymotion, registratevi putroppo è necessario, e scaricate la versione gratuita. Se non state usante Windows, dovrete anche scaricarvi a parte VirtualBox, che potete trovare negli App Store dei vostri sistemi operativi o da www.virtual-box.org

    Quindi installate e fate partire GenyMotion. Vi chiederà anche qui di fare il log-in e poi potrete iniziare a creare o scaricare i vostri Device Virtuali.
    Fate partire il Device Virtuale sul quale volete testare l'applicazione è verra automaticamente visto sia da adb sia da eclipse. Se ciò non dovesse accadere, nel titolo della finestra dove gira l'emulatore, troverete l'indirizzo IP e andate a dare, via terminale, il comando "adb connect 000.000.0.00" sostiuendo a 000.000.0.00 il vero indirizzo IP.

    ---------- Post aggiornato alle 17:52 ----------

    3 - ARM

    Se invece avete scelto di testare la vostra applicazione su un'architettura ARM, non potrete aspettarvi dei miglioramenti come con GenyMotion, ma anche qui avrete due scelte: l'opzione Snapshot e l'opzione Host GPU. Entrambe sono attivabili durante la creazione o la modifica di un Device Virtuale tramite AVD Manager ([percorso all'SDK]/sdk/tools/android --avd, o da Eclipse, Window > Android Virtual Device Manager). Purtroppo, le due sono mutualmente esclusive, quindi dovrete scieglierne una sola.

    3.1 - Snapshot

    Questa opzione permette di sospendere lo stato dell'emulatore e riprenderla ad un nuovo avvio. Per essere attivata, in aggiunta ad attivarla nell'AVD Manager, sotto "Launch Options" sarà necessario attivare "Launch from Snapshot" e "Save to Snapshot".

    C'è da notare che questa opzione vi farà risparmiare del tempo alla partenza, che dovrebbe risultare molto più veloce, ma non modificherà la velocità dell'emulatore una volta partito.

    3.2 - Host GPU

    Questa opzione permette all'emulatore di non dover emulare una scheda grafica (che lo rallenta) ma di utilizzare quella reale presente nel Computer.

    Con questa opzione, non si migliorano i tempi di partenza ma una volta partito l'emulatore dovrebbe risultare più veloce.

    Per decidere quale delle due opzioni utilizzare, consiglio di provarle entrambe in quanto i miglioramenti possono cambiare molto a seconda dell'hardware della macchina e del consumo da parte dell'applicazione della scheda grafica.


    4 - Conclusioni

    Queste tecniche, nel complesso, dovrebbero riuscire a garantirvi un emulatore decisamente più usabile e performante.
    Spero che vi siano di aiuto e di essere stato sufficientemente chiaro, in caso di dubbi o problemi chiedete liberamente.

    Se qualcuno è a conoscenza di altri metodi non esiti a pubblicarli! ;)
     
  3. lufo88

    lufo88 Baby Droid

    Iscritto:
    6 Nov 2013
    Messaggi:
    10
    "Mi Piace":
    1
    Per i processori x86 è possibile anche usufruire di Intel HAXM
    La guida ufficiale di google è qui
    Using the Emulator | Android Developers

    Segnalano che è sperimentale, ma al momento non mi ha dato problemi.

    Per i non annglofili:
    nel SDK di Android, sezione extras scaricate
    Intel Hardware Accelerated Execution Manager
    Dopo andate nel percorso
    <sdk>/extras/intel/Hardware_Accelerated_Execution_Manager/
    dove sdk indica dove è stata installata la SDK di Android
    Ed eseguite il file
    IntelHAXM.exe.
    Assicuro che aumenta di molto le performance, a patto di usare un processore emulato x86 naturalmente.
    La cosa funziona sui sistemi windows xp (32 bit), vista (32/64bit) e 7 (32bit/64 bit).
    Non so se funziona su windows 8, ma ragionevolmente sì, l'articolo ufficiale non è aggiornato credo.
     
    Ultima modifica: 18 Gen 2014