Come sviluppare app Android con l'emulatore o direttamente sullo smartphone
L'emulatore iOS funziona egregiamente anche su un computer con 2Gb di ram, lo stesso non si può dire per l'emulatore Android. O meglio anche l'emulatore di Android può funzionare con 2Gb di ram, ma con qualche precisazione.
*Come sviluppare o fare debug delle app sul dispositivo Android, [qui trovi il post precedente](/react-native-javascript-per-app-native-installazione-e-android-sdk/) su **React Native su Android**.*Quale emulatore di Android?
Le opzioni sono tante, ognuna con le sue peculiarità.
- SDK Platform: vi serve a compilare l'applicazione per una versione specifica di Android. App compilate per versioni precedenti dovrebbero funzionare anche per versioni future di Android, ma nel dubbio testate
- ARM System image: è l'immagine del sistema operativo più simile a quello presente sullo smartphone, ovvero Android su architettura ARM
- Intel x86 Atom System Image: è l'immagine di Android per architettura x86. Quindi avendo la stessa architettura x86 del nostro computer risulta più leggera da eseguire. Come ulteriore aiuto abbiamo la possibilità di accelerare la sua esecuzione utilizzando il driver Intel HAXM (dove supportato) oppure KVM che però funziona solo su Linux.
- Genymotion: si tratta di un'emulatore basato su Virtual Box e altre tecnologie, che utilizza un'immagine di Android x86.
- Ripple: si tratta di un emulatore, ma solo per le app HTML5 realizzate con Cordova / PhoneGap e funzionando nel browser web non si può fare affidamento per funzionalità native non emulabili sul web. Lo trovate come estensione nel Chrome Store.
Sviluppare direttamente sul dispositivo fisico
Tra le varie opzioni è quella più realistica, soprattutto per quanto riguarda 3D, sensori e altre caratteristiche specifiche dello smartphone, le uniche accortezze sono:
- Opzioni sviluppatore (developer mode): attivo e usb debug. Vedi video.
- Eseguire il comando
adb reverse tcp:8081 tcp:8081
per poter iniettare il codice JavaScript aggiornato. Utilizzato in React Native
Conclusione
La configurazione di Android AVD che mi ha dato le migliori performance
Il miglior emulatore Android l'ho ottenuto utilizzando l'immagine Android x86 su Linux con KVM, Genymotion apparentemente non mi ha dato particolari vantaggi.
Quindi una volta specificato in "android avd", l'immagine corretta e la risoluzione minima utilizzabile, si può far partire l'emulatore con:
❯ emulator64-x86 -avd nomeImmagineAVD -scale 0.7 -qemu -enable-kvm
Su Mac OSX o Windows probabilmente i requisiti sono almeno 4Gb di ram e processori abbastanza potenti o recenti, altrimenti l'emulatore risulta drammaticamente lento oppure non parte proprio.
In ogni caso potete fare riferimento a un dispositivo fisico per testare l'applicazione su dei casi reali.