Android VM for Developer (1/2)


Get Started 

“Everything you need to start developing apps for Android is available here on developer.android.com.”
Questa è la frase che chiunque si sia avvicinato al mondo android (come sviluppatore ) ha letto la prima volta che è approdato sul sito ufficiale del progetto developer android. Seguendo attentamente i tutorial e la documentazione effettivamente in poco tempo chiunque riesce ad avere il suo set di strumenti per modificare il classico “Hello World” con un più ironico “The World is Mine” , lanciarlo sull’emulatore, attendere un tempo indefinito e finalmente apprezzare il lavoro. Mediamente per tutto il tempo impiegato per lo sviluppo del primo progetto, il discorso ottimizzazione dell’emulatore non passa per la testa allo sviluppatore (mediamente) e ci si rassegna ad aspettare il deploy dell’app sull’emulatore. Presa confidenza con il framwork android, i nuovi costrutti, Logcat (e i suoi continui crash) lo sviluppatore; si ribella alla frustrazione dovuta all’attesa dell’emulatore e alla sua ingordigia di memoria. Sul sito di di android esiste una sezione apposita dedicata all’emulatore: https://developer.android.com/tools/devices/emulator.html con alcune accortezze per migliorare le performance.
Tra cui: Configuring Virtual Machine Acceleration
Il progetto disponibile per le versioni 2.3.3 di androird (API 10) permette di scaricare un immagine basata sull’architettura Intel x86 molto più performante dell’immagini standard per architetture ARM. Per testare il progetto si possono seguire il “tutorial striminziato” del sito di android o quello reperibile dal sito di Intel
http://software.intel.com/it-it/articles/installing-the-intel-atom-x86-system-image-for-android-emulator-add-on-from-the-android-sdk 
guida aggiornata:
dettagliato e a prova di dummies (la guida si riferisce alla versione 2.3.3 ma le immagini x86 sono disponibili anche per l’API 17 android 4.2.2).
L’incremento delle performance è evidente con grande soddisfazione per lo sviluppatore, ma oltre ad una serie di raccomandazioni, in alcune situazioni non di basso rilievo, elencate di seguito:

  • x86 AVD Only - You must use an AVD that is uses an x86 system image target. AVDs that use ARM-based system images cannot be accelerated using the emulator configurations described here.
  • Not Inside a VM - You cannot run a VM-accelerated emulator inside another virtual machine, such as a VirtualBox or VMWare-hosted virtual machine. You must run the emulator directly on your system hardware.
  • Other VM Drivers - If you are running another virtualization technology on your system such as VirtualBox or VMWare, you may need to unload the driver for that virtual machine hosting software before running an accelerated emulator.
  • OpenGL® Graphics - Emulation of OpenGL ES graphics may not perform at the same level as an actual device.

Esiste un’altro grande limite cioè non è possibile, ad oggi, fare il deploy di un app che utilizza le API dei servizi offerti da google (maps SDK, google authentication ecc.) in questa modalità, salvo modifica dell’immagine e aggiunta manuale dei pacchetti. Un ottimo tutorial per integrare google maps SDK sull’immagine x86 Intel si trova in questa pagina, la guida è facilmente adattabile per altre integrazioni.
Le soluzioni affrontate fin qui risolvono solo in parte il problema e non senza svariati hack che rubano tempo ed energia allo sviluppo della nostra app.
Se poi si pensa che gli sviluppatori di iOS dispongono di un emulatore performante ed ottimizzato al meglio con un tempo di deploy infinitesimale, la frustrazione ci ri-assale prepotente…. Non scoraggiatevi Android è un progetto opensource e gode di una community di sviluppatori attivi e basta una breve ricerca con il nostro fido google per imbattersi in progetti interessanti. Quello preso in considerazione oggi si chiama AndroVM reperibile a: androvm.org.
Riporto le prime righe della documentazione ufficiale:
The main objective of AndroVM is to provide Android developers a better way to test their software (better than the qemu emulator provided with the Android SDK).
Una manna dal cielo, un immagine ottimizzata comprensiva delle API di google pronta per essere caricata su VirtualBox e utilizzabile per fare debug delle nostre applicazioni.
parte 2:link

Commenti

Post popolari in questo blog

Violato il protocollo WPA2 cosa significa, cosa fare e cosa comunicare?

Informati e consapevoli: la chiave per una strategia di cyber security davvero efficace