Genymotion, l’alternativa ad AVD (Android Virtual Device)

L’SDK di Android (incluso nel plugin ADT per Eclipse e nel nuovo IDE Android Studio), include già un sistema per emulare vari device, AVD (Android Virtual Device). Il problema di AVD è che è estremamente lento, soprattutto nell’emulazione di device ARM (il sistema deve convertire continuamente istruzioni ARM in istruzioni x86, rendendo pessima l’esperienza d’uso); le cose migliorano emulando device con SoC Intel Atom e sfruttando l’accelerazione hardware tramite Intel HAXM, disponibile tra i componenti di ADT o Android Studio. Però anche questo sistema ha dei problemi, ha una velocità accettabile, ma è abbastanza instabile (a me ha causato vari BSOD sotto Windows 8.1, con AVD incluso in Android Studio 0.4.2 ed emulando un device con SoC Atom e Android 4.4.2).
Se avete necessità di provare le vostre applicazioni in un emulatore ed AVD è lento e instabile potete ripiegare su Genymotion.

Genymotion è un emulatore espressamente progettato per i developer (ma anche non), infatti offre diversi strumenti per facilitare loro il compito di testare app su diversi device virtuali, come ad esempio l’integrazione con Android Studio e ADT Bundle (Eclipse+ADT), la possibilità di emulare l’orientamento del device, le fotocamere, il GPS, lo stato della batteria e altre cose incluse nelle versioni a pagamento. Si, Genymotion viene offerto in 3 versioni, una gratuita per utilizzo personale e due a pagamento, la differenza sta nel supporto commerciale, per la possibilità di emulare altre feature e altri strumenti.

Genymotion versions

Confronto tra le diverse versioni (clicca per ingrandire)

Il funzionamento di Genymotion è abbastanza semplice, attraverso VirtualBox, vengono emulati i diversi device disponibili sottoforma di macchine virtuali (con tanto di supporto all’accelerazione hardware) nel cloud di Genymotion.

Per utilizzare Genymotion, basta registrarsi al loro servizio (link) e scaricare il pacchetto che ci interessa, la versione gratuita è disponibile qui, per Windows viene fornito anche il pacchetto comprensivo di VirtualBox, che altrimenti andrebbe installato per primo e configurato il path in Genymotion (lo trovate qui). La registrazioni è necessaria per poi connettersi al Genymotion Cloud e scaricare la VM che ci interessa.

Finita l’installazione (se avete scaricato il pacchetto con VirtualBox, questo verrà installato prima che finisca l’installazione di Genymotion) e avviato il software vi verrà chiesto di creare un device virtuale, cliccando su OK, o se non è apparsa la finestra di dialogo su Add nel programma, verrà avviato un wizard per il download e la configurazione del device,  basterà loggarsi e scegliere il device che vi interessa.

Genymotion Devices

 

Terminato il download e la configurazione, ve lo ritrovere nella lista nella finestra principale di Genymotion, da qui è possibile configurare alcuni parametri cliccando sulla chiave inglese, come la quantità di RAM del dispositivo, la risoluzione del display e il numero di CPU.

Genymotion Home

 

Genymotion configurazione device

 

Passiamo ora alla configurazione di Genymotion per il riconoscimento dell’SDK e di Android Studio (ma la stessa cosa vale anche per Eclipse).

Cliccate su Setting, nella Home di Genymotion e recatevi nella scheda ADB, selezionate l’opzione Use custom Android SDK Tools e inserite il percorso di installazione dell’SDK, nel caso di Android Studio lo dovreste trovare in C:\Users\<nome-utente>\AppData\Local\Android\android-studio\sdk. Se il percorso è giusto, verrà segnalato dall’applicazione.

Genymotion configurazione ADB

Avviate ora Android Studio, recatevi nelle impostazioni dell’IDE (File->Settings..) e raggiungete la scheda Plugins.

Android Studio Plugins

 

Nel campo di ricerca digitate Genymotion, nella lista plugin non vi apparirà nessun plugin, non essendo nei repository di default, ma basterà cliccare sul link Browse per aggiungerlo e installarlo, si aprirà infatti una finestra con le indicazioni del repository in cui è contenuto il plugin; cliccando sul secondo pulsante della nuova finestra (quello con la freccia verde rivolta verso il rettangolo) si procederà con l’installazione del plugin Genymotion Device Manager.

Genymotion Repository

 

Basterà ora riavviare Android Studio per ritrovarselo tra i tool:

Android Studio con il plugin Genymotion

 

Cliccando per la prima volta sull’icona del plugin, verrà chiesto di inserire il percorso di installazione di Genymotion, di solito C:\Program Files\Genymobile\Genymotion, dopo apparirà la lista dei device creati con Genymotion.

Genymotion Device Manager

È possibilie avviare i device virtuali direttamente da Android Studio, o anche crearla, senza passare da Genymotion, semplicemente selezionando il device da utilizzare e cliccando su Start.

Genymotion Nexus 4 Home

Per poter testare le proprie applicazioni in sviluppo, basterà modificare la configurazione di Run/Debug e selezionare l’opzione Show chooser dialog, in Target Device, in questo modo apparirà una finestra con i device collegati (tra cui i device Genymotion avviati) tra cui poter scegliere, dopo la compilazione, per l’esecuzione.

Android Studio Run/Debug Configurations

 

Android Studio scelta device

Con le ultime versioni di Genymotion sono state eliminate le Google Apps, per motivi di licenza, verranno reintrodotte nel momento in cui si raggiungeranno accordi con Google (se si raggiungeranno). È stato però aggiunto il supporto al drag & drop, trascinando un qualunque file all’interno della finestra del device, questo verrà salvato nella sua SD, oppure installato, se si tratta di un APK o di un pacchetto ZIP contenente un’app. In questo modo, pur non avendo il Play Store, è possibile installare qualsiasi app tramite il suo APK. Con questo metodo è possibile anche procurarsi le Google Apps e installarle, potete ad esempio scaricarle da qui. Una volta installate, il dispositivo dovrà essere riavviato, o tramite ADB, o al limite chiudendo e riavviando la VM.

Genymotion Nexus 4 Drawer con GApps

Drawer Genymotion Nexus 4 con Google Apps

Nell’ultima versione mancano anche tutte le librerie per l’esecuzione di moduli nativi compilati per piattaforma ARM (Genymotion emula una piattaforma x86), questi sono stati rimossi per motivi di instabilità e performance. Se si utilizza il solo SDK per lo sviluppo delle app, non c’è alcun problema, visto che queste verranno eseguite nella Dalvik o tramite ART; se invece si sviluppano moduli nativi tramite l’NDK, allora questi dovranno essere compilati per piattaforma x86 per essere eseguiti e testati tramite Genymotion, altrimenti, se volete testare l’app con moduli compilati per ARM, dovrete installare le librerie di traduzione, presenti in questo pacchetto (sempre col metodo del Drag & Drop e riavvio della VM).

Ovviamente Genymotion non è solo per sviluppatori, infatti può essere utilizzato da tutti coloro che vogliono provare Android, senza perdersi in complicate configurazioni e senza penare per le scarse performance, i device virtuali di Genymotion rispondono immediatamente ai comandi e non impattano tanto sulle risorse del computer, come invece ci si aspetterebbe da una qualsiasi macchina virtuale, ovviamente il massimo lo si ottiene con CPU con virtualizzazione hardware attiva (Intel VT o AMD-V) e accelerazione hardware tramite OpenGL.
Installando un qualsiasi browser, o utilizzando quello nativo, è possibile provare i propri siti e web app su una moltidudine di device mobile virtuali e con display di diverse dimensioni.

Genymotion Nexus 4 Browser

 

I device virtuali creati con Genymotion, possono anche essere avviati ed usati direttamente da VirtualBox, perdendo però le chicche che offre questo strumento.

Device in VirtualBox

È tutto, alla prossima 😉