In questo articolo sveleremo ai nostri lettore cosa c’è dietro un’App ed il mondo Android, oltre agli strumenti e i requisiti per poter diventare uno sviluppatore.

Non ci addentreremo in tecnicismi che, per ovvie ragioni, renderebbero incomprensibile le nostre paroled ai non addetti ai lavori. Al contrario, spiegheremo il tutto secondo un’ottica divulgativa che caratterizza ExtremeGeneration.it

Nonostante molte siano le similitudini con lo sviluppo per iOS, parleremo in particolare di Android vista la nostra posizione di sviluppatori per il sistema operativo del famoso robottino verde.

Ti ricordiamo che i concetti affrontati, per ragione di spazio, ovviamente non possono essere approfonditi completamente. Se vuoi sapere di più su specifici argomenti che abbiamo o potremmo trattare, lasciaci la tua richiesta con un commento. Quelli più popolari verranno utilizzati come linee guida per i prossimi articoli sul Mondo Android.

 

PUNTO 1 – PRESUPPOSTI

Uno sviluppatore Android lavora con un linguaggio di programmazione ad oggetti, nello specifico Java. Di norma avere esperienza nella programmazione ad oggetti rende piuttosto veloce l’apprendimento di Java e, in caso contrario, almeno 6 mesi di esperienza con progetti in Java è consigliata.

Ci serve inoltre un “Ambiente di Sviluppo”, dall’inglese Integrated Development Environment (IDE), che facilita di molto la scrittura del codice, segnalandoci errori di sintassi, dimenticanze e una moltitudine di altre funzionalità essenziali nella programmazione Android e per il debugging.

Oggi l’ambiente di sviluppo fortemente consigliato per Android è “Android Studio”, nonché l’unico supportato ufficialmente da Google, che come sapete è lo sviluppatore del sistema operativo Android. Sarà proprio Android Studio a trasformare il nostro codice scritto in Java e tutte le risorse multimediali in un file .APK installabile su sistema operativo Android.

Android Studio permette anche di emulare, tramite Virtual Machine, diversi dispositivi, dai tablet agli smartphone, e vedremo più avanti perché questo è importante!

Non verranno affrontati in questa sede l’installazione di Android Studio e le sue funzionalità, se hai domande al riguardo lascia un commento o leggi i link in descrizione!

 

Ora che abbiamo capito gli strumenti con i quali gli sviluppatori lavorano, vediamo come è composta la struttura di una App Android

 

PUNTO 2 – STRUTTURA DI UN’APP ANDROID

La struttura di un App, in fase di sviluppo, è ben definita e deve essere rispettata. In questo articolo verrà solamente introdotta, mentre con i successivi verranno approfonditi determinati argomenti.

JAVA:
Semplificando al massimo, un’App Android è composta da una parte completamente scritta in Java, organizzata in pacchetti e Classi (nozione che dovrebbe essere comprensibile a chiunque sia mai entrato in contatto con la programmazione ad oggetti, ma se ti è nuova, niente paura!).

Grazie ad una classe Java è possibile creare una Activity, ossia una componente dell’App che dà la possibilità all’utente di visualizzare a schermo e interagire con le funzioni programmate dallo sviluppatore.

Ogni App deve avere almeno una Main Activity, ossia una classe Java il cui codice sarà eseguito per primo all’avvio dell’App da parte dell’Utente.

RISORSE:
Android fa proprio il concetto di “programmazione dichiarativa”; in altre parole alcune risorse vengono memorizzate in file di configurazione esterni al codice Java. Chiariamo subito questo concetto: se risolvere un algoritmo di calcolo è un’operazione che verrà eseguita seguendo istruzioni scritte in Java, mostrare sul display con le relative scelte stilistiche il risultato è un’operazione che riguarda l’area delle così dette risorse.

Esempi di risorse possono essere Icone, un file XML (vedremo più avanti cos’è), file binari (ossia che possono contenere qualsiasi tipo di dati), e molto altro. Essenziale è capire che ognuna di queste risorse ha una cartella ben precisa in cui essere inserita.

Il punto chiave di questa struttura è che Android combina il codice scritto in Java con le risorse (grafiche e non) tramite una classe che funge da tramite, ed è denominata R, da “resources” per l’appunto. Android Studio si prende a carico la corretta gestione della classe R, mentre allo sviluppatore rimane il compito di scrivere il codice in JAVA e preoccuparsi della corretta implementazione delle risorse, incluso i file XML.

ASSETS:
Alcuni tipi di risorse non vengono in alcun modo mappate nella classe R e vengono inserite in una cartella /assets del progetto. Per rendersi conto di quanto importanti tali risorse possono essere basti pensare che nel caso l’App utilizzi un Database, esso viene memorizzato proprio nella cartella /assets

 

Il livello di complessità richiesto da questo articolo ci suggerisce di non introdurre ulteriori, seppur importanti, tecnicismi sulla struttura di un App Android, che verranno affrontati con specifici tutorial.

 

PUNTO 3 – L’IMPORTANZA DI XML E DEL DESIGN

Oggi più che mai, essere un buon programmatore in Java non è condizione sufficiente per sviluppare un’ottima App Android. Il comun denominatore delle App di successo è la facilità d’uso, la User Experience, scelte stilistiche e grafiche, oltre che ovviamente performance e funzioni ottimizzate che sono solo la premessa.

Per raggiungere questi risultati il solo codice in Java non è certamente sufficiente. È necessario creare layout e Interfacce Grafiche ottimizzate per offrire all’utente una esperienza e facilità d’uso che soprattutto nel mondo mobile sono prerogative fondamentali. Nessuno vuole perdere tempo a leggere le istruzioni per usare la tua App, e tutti tendono a disinstallare velocemente un’App bruttina e graficamente trascurata!

Bisogna tenere a mente l’eterogeneità dei dispositivi Android presenti sul mercato, soprattutto per quanto concerne risoluzione e dimensioni dello schermo. Non cadete nell’errore di pensare che una volta creato un layout, questo possa andare bene per un tablet, oppure per uno smartphone da 5’’ ed uno da 3’’. Da qui anche l’importanza prima citata di poter emulare diversi dispositivi tramite Android Studio, rendendo possibile il debugging e l’ottimizzazione grafica anche su dispositivi che lo sviluppatore non ha disponibile per testare con mano.

A questo punto possiamo introdurre il meta linguaggio XML (eXtensible Markup Language), che come suggerisce il nome è un linguaggio di mark-up e non un linguaggio di programmazione come è invece Java. Al contrario, si potrebbe paragonare ad HTML, utilizzato per lo sviluppo di siti web. Tuttavia, mentre HTML ha una propria “grammatica” ben definita, XML permette la creazione di nuovi tag a seconda delle esigenze.

È proprio tramite i file .XML che in Android andiamo a creare i layout e la User Experience. Android Studio permette di creare layout per le diverse risoluzioni del display, che andranno inseriti nelle rispettive cartelle, che nonostante si riferiscano alla stessa funzione scritta in Java possono essere estremamente diversi fra loro!

Spesso all’interno di un team di sviluppo c’è chi si occupa esclusivamente di creare la User Interface, ed è quindi denominato “front end developer”. Contrariamente, chi si occupa maggiormente della programmazione, dei server, dei database… non mettendo mano direttamente all’interfaccia utente, è denominato “back end developer”.

Tuttavia è bene precisare che i file .XML in Android non servono solo per implementazioni grafiche e layout, ma svolgono un ruolo primario anche per molte altre funzionalità. Una di queste, per esempio, e la traduzione e localizzazione in diverse lingue, che vedremo più avanti.

Un altro esempio di un file .XML che non ha nulla a che vedere con implementazioni grafiche, ma che ha una importanza primaria e vitale per l’App, è il file AndroidManifest.xml. Tale documento viene generato alla creazione di un nuovo progetto con Android Studio, ma sarà compito dello sviluppatore inserire al suo interno tutte le informazioni necessarie per il corretto funzionamento dell’App e delle sue feature. È tramite questo file che vengono dichiarati i permessi necessari all’App (quelli a cui date l’accesso all’App dopo il download, per esempio INTERNET, FOTOCAMERA, CONTATTI, etc.).

Inoltre, il file AndroidManifest.xml specifica quale Activity verrà avviata per prima all’apertura dell’App, e molte altre feature di complessità crescente eventualmente implementate che potranno essere trattate in dettaglio in futuri video.

 

PUNTO 4 – LIFECYCLE DELL’APP

Prima di poter sviluppare anche la più basilare App, è fondamentale comprendere il concetto di LifeCycle (ossia il ciclo vitale) di una Activity, che abbiamo detto essere quella parte di codice scritto in Java che, nella grande maggioranza dei casi, interagisce con l’utente tramite lo schermo o comunque l’Interfaccia Utente.

Infatti ogni Activity ha un ciclo scandito da precisi momenti, che vanno dalla fase di creazione (quando l’utente accede ad una determinata componente dell’App, oppure semplicemente la apre), alla messa in pausa (quando per esempio si apre un box informativo ma l’Activity è ancora visibile), allo stop (quando l’utente preme il tasto home sul suo dispositivo), alla distruzione (quando l’utente chiude definitivamente l’App, oppure per motivi di memoria insufficiente, o ancora perché si è passati in un’altra sezione dell’App, o altri motivi tra cui le scelte dello sviluppatore).

Ciascuno di questi momenti assume un ruolo fondamentale in fase di sviluppo, e il programmatore può impostare determinate istruzioni da svolgere.

A schermo vedete il ciclo di una Activity. In questa sede non andremo ad esaminarlo nello specifico, si rimanda ad altri video per questo approfondimento. Tuttavia deve passare il messaggio che senza un’approfondita conoscenza del concetto di LifeCycle, l’App inevitabilmente andrà inevitabilmente incontro a crash o a risorse mal ottimizzate. Immaginate un memory leak in caso il programmatore si dimentichi di liberare una data risorsa quando non è più utilizzata da una componente dell’App e deve essere invece resa disponibile per un’altra!

 

PUNTO 5 – INTERNAZIONALIZZAZIONE

Il mondo mobile è profondamente caratterizzato fenomeni di internazionalizzazione, ragion per cui quasi sempre un’App di successo è disponibile e localizzata su diversi mercati internazionali.

Sebbene esistano delle opzioni automatiche rese disponibili da Google nella console degli sviluppatori per tradurre automaticamente (leggasi con Google Translate) la propria App, è decisamente consigliato agli sviluppatori se hanno la capacità di effettuare una traduzione “umana” dell’app. Ne beneficerà l’esperienza d’uso dell’utente per diversi motivi.

Semplificando al massimo il concetto, tramite Android Studio è possibile modificare il file string.xml ed aggiungerne uno rispettivo a ciascuna lingua che si vuole supportare (per esempio Italiano, Inglese e Russo). A questo punto le stringe di testo presenti nei vari layout saranno mostrate in accordo con la lingua del sistema impostata sul terminale. Comodo no?

 

PUNTO 6 – LIBRARIES

È bene introdurre il concetto di “library”, forzosamente tradotto librerie software in italiano, che è fondamentale per comprendere il lavoro degli sviluppatori Android e non solo. Il paradigma fondamentale per uno sviluppatore è quello di “Non reinventare la ruota”, ossia evitare di sprecare prezioso tempo e risorse cercando di scrivere il codice per qualcosa che non è la funzione core del proprio progetto ed è già stata inventata (meglio) da altri sviluppatori.

Il concetto di library è fondamentale in qualsiasi ambiente di sviluppo. Android Studio già implementa tutte le librerie Java necessarie, ma senza voler scendere in tecnicismi riguardanti Java portiamo un esempio di certo comprensibile ai più. Immaginiamo di voler introdurre dei video YouTube nella nostra App, reinventare un player sarebbe palesemente una mossa stupida data l’enorme diffusione ed ottimizzazione già esiste di YouTube. In questo caso Google ci verrebbe incontro fornendoci la libreria di cui abbiamo bisogno, permettendoci di introdurre un player ottimizzato con molte meno linee di codice di quelle che ci sarebbero necessarie per reinventarlo da zero.

 


 

Con il concetto di library si conclude questo video introduttivo sul mondo Android. Inutile ribadire che data l’enorme vastità degli argomenti approfonditili e trattabili premieremo le vostre domande più frequenti per la realizzazione dei futuri articoli e video.

 

Se sei interessato a questo modo e vuoi saperne sempre di più, non dimenticarti di iscriverti al canale se ancora non l’hai fatto, lasciare il tuo commento, e condividere il progetto. Il tuo feedback è essenziale per fornire alla community gli argomenti desiderati.

Leave a Reply

Your email address will not be published. Required fields are marked *

*