Chiunque si sia avventurato nella programmazione android avrà usato almeno una volta l’AVD. Questo strumento è estremamente potente, poichè permette di testare la propria applicazione su diversi sistemi emulati, procedimento essenziale visto la frammentazione (di dispositivi e versioni) che affligge Android. Purtroppo questo strumento presenta diversi limiti prestazionali, essendo spesso molto più lento di un terminale fisico. Fortunatamente Intel ci viene in aiuto grazie a HAXM ( Hardware Accelerated Execution Manager ).
[divider]
Virtualizzazione
L’emulatore di Android è basato su QEMU, che simula l’hardware fisico di un dispositivo. Questo significa che per ogni istruzione, generata in linguaggio ARM, bisogna fare la traduzione comprensibile al nostro processore, in istruzioni x86. Questa è una virtualizzazione a livello software, quindi estremamente lenta. Con la tecnologia VT-x di Intel invece questa virtualizzazione avviene via hardware all’interno del processore. Questo incrementa notevolmente le performance.
[divider]
Velocizzare l’emulatore Android
Installazione
Innanzitutto assicuratevi di avere un processore Intel che supporta la tecnologia VT-x. Ad esempio per il processore usato per le nostre prove ( i7 2630QM ) nella scheda relativa nel campo Intel Virtualization Tecnology compare uno “YES”. Inoltre dovrete aver già scaricato l’ SDK.
Per Windows/Mac
Aprite quindi l’Android SDK Manager (si può lanciare anche tramite Eclipse cliccando sull’icona corrispondente). Scarichiamo per le varie versione di Android supportate il pacchetto Intel x86 Atom System Image. Sotto la voce Extras inoltre trovate un pacchetto denominato Intel x86 Emulator Accelerator (HAXM). Scaricate anche questo. A questo punto l’SDK Manager vi segnalerà che HAXM è Installed: in realtà ha solo scaricato l’eseguibile, che troverete nella cartella C:\Programmi\Android\android-sdk\extras\Intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe (il percorso potrebbe cambiare a secondo della cartella di installazione del vostro SDK). Per Mac il procedimento è del tutto simile, tranne per l’estensione del file, IntelHAXM.dmg. Cliccate sull’eseguibile e seguite la procedura guidata. Potreste tuttavia incorrere in un problema, e visualizzare quest’errore:
Sicuri che il vostro processore supporti VT-x? In tal caso probabilmente non è stata abilitata la virtualizzazione: riavviate il computer, entrate nel BIOS e impostate la voce Virtualization Tecnology su Enabled.
Per Linux
Se usate questo sistema operativo invece avrete bisogno di KVM (Kernel-based Virtual Machine) , un’infrastruttura di virtualizzazione del kernel Linux. Per sapere se è supportato bisogna digitare da terminale il comando:
kvm-ok
Se vi restituisce la stringa “KVM acceleration can be used” tutto ok. Se invece appare “INFO: KVM is disabled by your BIOS” occorrerà andare nel BIOS e abilitare la virtualizzazione, come per Windows (vedi sopra ). Per installare KVM e altri pacchetti utili digitate invece:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
E per sicurezza ripetete il test. Bisogna inoltre aggiungere il proprio nome al gruppo KVM e al gruppo libvirtd, per ottenere i permessi. A tal fine digitate:
sudo adduser proprio_nome_utente kvm sudo adduser proprio_nome_utente libvirtd
[divider]
Creazione di un AVD
Siamo pronti ore per creare il nostro device virtuale. Apriamo Eclipse e clicchiamo sull’icona dell’Android Virtual Device Manager sulla barra degli strumenti, o in alternativa su Window/Android Virtual Device Manager. Clicchiamo ora su New, diamo un nome al nostro avd (ad esempio haxm_avd) e selezioniamo una versione di Android per la quale abbiamo scaricato precedentemente la x86 Atom System Image. Assicuratevi di impostare nel campo CPU/ABI la voce Intel Atom e non quella ARM. Per eseguirlo basterà selezionarlo e cliccare su Start. Come potete constatare voi stessi, l’aumento prestazionale è notevole. Si rileva una velocità generale di caricamento di 5-10 volte maggiore, a seconda del sistema preso in considerazione.
[divider]
Testare l’applicazione sull’ AVD
Non ci resta che testare la nostra applicazione sul nuovo terminale virtuale: da Eclipse andiamo su Run/Run Configuration. Nella scheda Target potremo decidere se far comparire ad ogni lancio un menù per la scelta del device, virtuale o fisico che sia (Always prompt to pick device ) oppure impostare come AVD di default quello creato al punto precedente: