Il mio primo sviluppo app Android
Ho creato la mia prima app Android nel 2016: lo sviluppo Android era completamente diverso rispetto a quello di oggi, a partire dal linguaggio di programmazione, dalla disponibilità di librerie, passando per quelle di supporto allo sviluppo grafico per arrivare ai nuovi regolamenti di privacy e sicurezza che hanno dato un giro di vite sulla personalizzazione del sistema operativo Android.
Ma non voglio mettere troppa carne al fuoco, di seguito vorrei descrivervi l'evoluzione dello sviluppo Android in alcune aree che ritengo significative.
Stai cercando un supporto per esplorare il mondo Android o un'azienda per sviluppare app?
Dal linguaggio Java a Kotlin
All'inizio della mia carriera da sviluppatore mobile il linguaggio che andava per la maggiore per lo sviluppo app Android era Java. Negli anni successivi però Kotlin si è imposto: prima Google nel 2017 lo ha annunciato come uno dei linguaggi ufficiali e poi nel 2019 lo ha dichiarato linguaggio preferito per lo sviluppo Android.
Ma cosa ha di così tanto speciale Kotlin rispetto a Java da essere stato scelto da Google come linguaggio ufficiale per lo sviluppo app Android? Vediamo una serie di aspetti che potrebbero rispondere a questa domanda.
- Java Interoperability: sembra un parolone ma non significa altro che Kotlin non necessita di particolari competenze e conoscenze in più rispetto a Java. Potrebbe sembrare una caratteristica di poco conto ma all'interno di un'azienda di sviluppo software scegliere di migrare da un linguaggio ad un altro differente significa mettere in conto cospicui investimenti in termini di formazione, risorse umane, tempo e quindi denaro.
- Sintassi concisa: Kotlin consente di sviluppare codice più conciso e facile, possiede più costrutti e migliora la qualità del codice; tutto ciò ottimizza la produttività degli sviluppatori.
- Performance: Java è un linguaggio maturo con prestazioni eccellenti. Kotlin, d'altro canto, ha prestazioni migliori rispetto a Java per lo sviluppo Android grazie a diverse sue caratteristiche intrinseche come ad esempio la sintassi concisa e alcuni costrutti.
- Null Safety e Nullable Types: qui entriamo un pò nel tecnico ma Kotlin, rispetto a Java, consente un controllo maggiore sugli errori causati dalla non corretta inizializzazione o addirittura dall'assenza di tipi e parametri.
I linguaggi più recenti cercano di snellire la scrittura del codice come ad esempio Swift, utilizzato per lo sviluppo iOS che ha sostituito ObjectiveC, e Go creato da Google rilasciato nel 2009.
Nella mia esperienza, ho utilizzato entrambi i linguaggi. Sono molto potenti ma, se comparati, Kotlin vince senza alcun dubbio. Le caratteristiche esposte rendono Kotlin preferibile a Java nello sviluppo Android ma se vuoi approfondire la comparazione tra questi due linguaggi ti consiglio questo articolo interessante, seppur molto tecnico.
La realizzazione dei componenti UI
Quando mi sono approcciato allo sviluppo app Android esistevano un numero limitato di componenti grafici per poter costruire la UI di un'app. Nel corso del tempo sono venuti alla luce layout più potenti che consentono di creare grafiche complesse in una gerarchia flat.
Nell'ultimo anno Google sta promuovendo l'utilizzo di Jetpack Compose, un toolkit che modifica l'idea di come si realizza la UI: fino ad oggi, come detto, i componenti UI erano dei layout che in ordine gerarchico definivano la struttura statica della UI, per esempio, di una schermata. Jetpack Compose invece utilizza il linguaggio Kotlin andando a dichiarare i vari componenti grafici come degli oggetti veri e propri (in termine tecnico si parla di programmazione dichiarativa). Questi oggetti sono il corrispettivo del componente UI ed hanno un determinato stato, andando ad aggiornare lo stato si aggiorna il componente UI.
La mia percezione è che volenti o nolenti gli sviluppatori Android dovranno migrare all'utilizzo di Jetpack Compose; Google tramite i suoi canali (documentazione, newsletter, ecc.. perfino Android Studio alla creazione di un nuovo progetto propone di utilizzare Jetpack Compose) sta spingendo davvero molto su questa nuova metodologia di realizzazione della UI.
La disponibilità di librerie
Agli albori di Android erano disponibili solo le librerie ufficiali Google che davano un basso supporto alla programmazione. Successivamente, sviluppatori ed aziende hanno iniziato a contribuire alla community con alcune librerie di libero utilizzo da parte degli sviluppatori (leggi il nostro articolo che parla delle diverse tipologie di licenze), molto utili per implementare delle classiche funzioni di un'app come ad esempio il salvataggio dei dati, il caricamento di immagini, ecc..
Sono state poi introdotte piattaforme come Firebase, di proprietà di Google, al cui interno troviamo diverse funzionalità per lo sviluppo app e web; una di esse è la segnalazione dei crash dell'app. Inizialmente Fabric Crashlytics - così era il suo nome all'inizio - era una libreria prodotta da un'azienda indipendente. Essa ha avuto talmente tanto successo grazie alla sua affidabilità e semplicità di utilizzo che Google ha deciso di acquistarla ed inglobarla nella sua suite di librerie. Oggi viene gestita proprio dall'azienda di Mountain View ed è disponibile all'interno della piattaforma Firebase.
Nel corso degli anni le librerie oltre ad essere aumentate di numero grazie alla community Android sempre più ampia, si sono anche evolute - o almeno lo hanno fatto quelle librerie ben implementate che hanno avuto successo.
La sicurezza e la richiesta dei permessi
Android è una piattaforma nota per la sua possibilità di personalizzazione in molti aspetti del sistema operativo, almeno rispetto ad iOS, per adattarsi ai diversi scenari di utilizzo: non parlo solamente di app realizzate per essere installate sui nostri smartphone ma anche di ambienti più chiusi come display Android che comandano macchine operatrici o addirittura i totem delle fiere dove l'interazione con l'utente deve essere limitata.
Nel passato questa apertura alla configurazione sfociava in una mancanza di sicurezza del sistema operativo. Google nel corso degli ultimi anni si è quindi diretta verso una riduzione delle possibilità di personalizzazione e ad un aumento del controllo delle operazioni eseguite dall'app da parte dell'utente.
Di seguito vi riporto alcuni esempi che possono essere esemplificativi:
- Permessi impliciti ed espliciti: non so se qualcuno si ricorda ma nelle prime versioni di Android non esisteva la richiesta dei permessi esplicita da parte dell'utente bensì solo scaricando l'app dal Play Store (inizialmente il suo nome era Android Market), era implicita la concessione di tutti i permessi di cui l'app necessitava. E' inutile dire che gli utenti difficilmente andavano a leggere la lista dei permessi e ignari di questo comportamento andavano magari ad installare app che sfruttavano permessi non strettamente necessari al suo funzionamento o addirittura eseguire codice malevolo.
- Permessi sempre più specifici: rimanendo nel contesto dei permessi, essi, oltre ad essere richiesti in maniera esplicita, sono diventati sempre più specifici. In questo modo l'utente è informato dei limiti del permesso concesso e l'app potrà operare solo entro tali confini. Un esempio è quello per ottenere la posizione gps (se vuoi leggere qualcosa in più sulle app gps leggi questo nostro articolo) - nelle ultime versioni di Android l'utente deve specificare se desidera concedere la localizzazione precisa (necessario per le app di navigazione) o quella approssimata.
- Revisione app Play Store: le app prima di essere disponibili per il download dagli store Google Play e Apple Store devo passare un processo di validazione. Parlando di Android anche questo processo di revisione si è evoluto nel tempo, si è partiti con un controllo automatico dell'app che garantiva dei tempi di approvazione nell'ordine di qualche ora per poi pian piano trasformarsi in un processo più lungo per ottemperare a requisiti sempre più stringenti di sicurezza e privacy.
Tools
Agli albori del mondo Android, gli sviluppatori utilizzavano l'IDE Eclipse per lo sviluppo app. Il 16 maggio 2013 è stato annunciato Android Studio alla conferenza Google I/O, software sviluppato da IntelliJ IDEA. La prima build stabile è stata rilasciata nel dicembre 2014.
Nel corso degli anni, Android Studio ha implementato sempre più funzionalità ed è diventato uno degli IDE più potenti. Ha tantissime shortcut - combinazioni di tasti per eseguire operazioni di routine - un sacco di utili funzionalità come visualizzazione live della UI, un emulatore integrato, un client database e molte altre.
Perché realizzare un'app Android?
Android è il sistema operativo mobile più diffuso al mondo (69% degli smartphone e 45% dei tablet nel mondo, dati di Ottobre 2023), grazie al suo essere Open Source e distribuito con licenza Apache 2.0 e alla possibilità di essere personalizzato dai vari produttori di hardware. Essendo in tutto e per tutto una distribuzione embedded linux è sempre più in adozione anche nei prodotti industriali.
Se stai pensando di realizzare per la tua azienda un'app per smartphone svilupparla per Android permette sicuramente di raggiungere un pubblico maggiore; ci capita di realizzare app per solo questo sistema operativo generalmente quando si tratta di soluzioni embedded (ad esempio cruscotti di macchine industriali) o per versioni preliminari di app che possano essere usate da più persone possibili o ancora perché verranno distribuite solamente su smartphone aziendali Android.
È molto più frequente invece prendere in considerazione lo sviluppo di un'app sia per iOS che per Android, per fare in modo che praticamente chiunque possa utilizzare l'app.
La tua azienda sta pensando di realizzare un'app Android o ha in cantiere un progetto che include lo sviluppo app Android?