Android 1 - Installazione e lancio dell' Ambiente

Installazione di ADT Bundle - Estrai

Immagine slide
  • Verrà creata la cartella adt-bundle-linux-x86-64-20130917 nel caso di un sistema a 64 bit e della versione del 17 settembre 2013, che è quella corrente.
  • Cliccare con il tasto desto sull'icona dell'archivio di ADT Bundle e selezionare Estrai qui
  • Comunque la cartella creata avrà lo stesso nome dell'archivio, senza l'estensione .zip finale.
  • Dentro a questa cartella troveremo altre due cartelle, eclipse ed sdk

Installazione di Java su Windows

Installazione di Java su Windows

  • Noi dovremo scegliere all'interno del Java SE Development Kit 8u31 (8u31 è la versione corrente, potrebbe cambiare)
  • Per prima cosa dovremo selezionare Accept License Agreement altrimenti il successivo download non partirà.
  • Quindi potremo scegliere la versione per il nostro sistema operativo:
    • Windows x86 (il file jdk-8u31-windows-i586.exe) se il nostro sistema è a 32 bit
    • Windows x64 (il file jdk-8u31-windows-x64.exe) se il nostro sistema è a 64 bit

Installazione di Java su Windows

Installazione Eclipse su Linux

Immagine slide
  • Per funzionare, Eclipse richiede l'installazione di un Java Runime Environment (JRE)
  • Noi installeremo più avanti una versione specifica di Eclipse, ma per non avere problemi con le dipendenze, installeremo prima la versione di Eclipse fornita con il nostro Linux.

Installazione Eclipse su Linux

Immagine slide
  • Potremo utilizzare diversi metodi per installare Eclipse:
    • Il Software Center cercando "Eclipse"
    • Il gestore di pacchetti Synaptic, sempre cercando eclipse
    • La riga di comando digitando (ad esempio) sudo apt-get eclipse

Un IDE per Android

  • Per sviluppare applicazioni per Android occorre avere un sistema di sviluppo per Java.
  • Attualmente Google stà spingendo Android Studio, un IDE specializzato per Android
  • Android Studio non è ancora maturo: manca ancora di alcune caratteristiche ed è estremamente più lento del precedente Eclipse.
  • Per questo motivo in queste lezioni utilizzeremo ancora l'ultima versione rilasciata di Eclipse ADT Bundle.

Un IDE per Android

Installazione di ADT Bundle - Taglia

Immagine slide
  • Basta a questo punto scompattare il file in una cartella del nostro utente ed il nostro Eclipse è pronto per la configurazione

Installazione di ADT Bundle - Taglia

Immagine slide
  • Il metodo più semplice per scompattarlo, è:
    • aprire la cartella dove abbiamo scaricato il file (potrebbe essere Download o Scaricati) in una finestra del file manager
    • cliccare sull'icona dell'archivio con il tasto destro e selezionare "taglia"
    • aprire la finestra della cartella home
    • selezionare dal menù file la voce incolla
    • cliccare con il tasto desto sull'icona dell'archivio e selezionare "scompatta qui"
    .

Installazione di ADT Bundle - Taglia

Immagine slide
  • aprire una finestra del file manager per la cartella dove abbiamo scaricato il file (potrebbe essere Download o Scaricati)
  • Per fare questo possiamo anche cliccare con il tasto destro nella finestra Download di Firefox e scegliere Apri Cartella
  • cliccare sull'icona dell'archivio con il tasto destro e selezionare Taglia

Scaricamento ADT Bundle

Per le macchine a 64 bit - compatibilità con i 32 bit

  • ADT viene distribuito compilato per architettura a 32 bit, in questa versione. Occorre fare alcuni passi per rendere compatibile il nostro sistema con ADT a 32 bit
  • Se avete installato il sistema operativo in versione a 64 bit (architettura amd64), avete necessità di caricare alcune librerie a 32 bit (architettura i386)
  • Dovrete a questo scopo aprire un terminale (ad esempio tramite la combinazione di tasti <alt> <ctl> t)

Per le macchine a 64 bit - compatibilità con i 32 bit

  • Se il vostro sistema è una Debian 7 Wheezy, invece che una Ubuntu 12.04, dovrete abilitare il multiarch aprendo un terminale come root e digitando i seguenti due comandi:
    dpkg --add-architecture i386
    aptitude update
  • In entrambi i casi, nel terminale dovrete digitare per prima cosa
    sudo apt-get install libc6:i386  libstdc++6:i386 zlib1g:i386
  • Vi verrà chiesta la vostra password, che inserirete.
  • Vi verrà elencato un elenco di pacchetti che verranno installati automaticamente, quindi vi verrà chiesto di accettare l'installazione. Risponderete s

Per le macchine a 64 bit - compatibilità con i 32 bit

  • Ora il nostro sistema è pronto per fare funzionare ADT.

Aggiunta di una voce di menù per il nuovo Eclipse

Immagine slide
  • Per consentire di scegliere facilmente il nostro ADT, creeremo una voce di menù.
  • Digiteremo in un terminale il comando:
    sudo gedit /usr/share/applications/eclipse-adt.desktop

Aggiunta di una voce di menù per il nuovo Eclipse

Immagine slide
  • Si aprirà una finestra dell'Editor. In questa finestra scriveremo:
    [Desktop Entry]
    Type=Application
    Name=Eclipse-ADT
    Comment=Eclipse Integrated Development Environment
    Icon=eclipse
    Exec=/home/salvi/adt-bundle-linux-x86_64-20130917/eclipse/eclipse
    Terminal=false
    Categories=Development;IDE;Java;

Esecuzione di Eclipse

Immagine slide
  • Aprendo la cartella eclipse, troveremo l'icona dell'eseguibile eclipse, che potremo lanciare con un doppio click

Installazione di ADT Bundle - Incolla

Immagine slide
  • Cliccare con il tasto destro su una zona libera della finestra e selezionare Incolla

Secondo avvio di Eclipse

Immagine slide
  • A questo punto parte il nostro Eclipse con ADT.
  • Vedremo il pannello d'avvio, con la barra di caricamento dei componenti, come la precedente volta in cui abbiamo lanciato Eclipse.
  • Se avremo selezionato, come consigliato, di non chiedere il Workspace all'avvio, Eclipse arriverà direttamente alla schermata di cortesia
  • In questa schermata ci vengono proposti alcuni tutorial, ma compare un grosso bottone con la scritta New Android Application...

Secondo avvio di Eclipse

Immagine slide
  • Cliccheremo questo bottone, che ci porterà al wizard per la creazione di una nuova App per Android .
  • Se non è la prima volta che utilizziamo Eclipse e magari c'è già un progetto aperto, potrebbe non comparirci la schermata di cortesia.
  • Ci basterà allora parire il menù File, passando sulla voce New ci si apre il sottomenù che contiene Android Application Project che ci rimanda al wizard

Eclipse in esecuzione

Immagine slide
  • Vi verrà chiesto di selezionare la cartella in cui creare i progetti Java (il workspace). Voi selezionerete Use this as the default and do not ask again e confermerete con il bottone Ok per confermare la cartella di default, che verrà creata
  • Vi verrà chiesto se inviare le statistiche a Google. Decidete voi cosa fare.
  • Per ora questo è quanto, quindi chiuderemo eclipse, per esempio tramite il menù File->Exit.

Lancio facilitato di Eclipse-ADT

Immagine slide
  • A questo punto, cliccando sull'icona del descktop e digitando le prime lettere del nome eclipse, ci compariranno sia l'icona di eclipse standard che di quello con ADT che abbiamo installato
  • Facendo click sull'icona di eclipse-ADT lanceremo la nostra nuova versione di Eclipse.
  • Se invece avremo selezionato un altro desktop manager o la versione fallback di Gnome e quindi avremo il classico menù di avvio, troveremo il nostro eclipse-adt nella voce sviluppo.

Selezione Caratteristiche progetto

Immagine slide
  • In questa videata non abbiamo niente da modificare.
  • Create Custom Launcher Icon che è selezionata, farà si che venga inserita una icona standard nel nostro progetto. Se la vogliamo sostituire con una nostra la potremo selezionare nella prossima videata
  • Potremo quindi cliccare su Next

Selezione dell'icona

Immagine slide
  • Se abbiamo preparato un'icona, la potremo inserire ora.
  • L'icona potrà essere un disegno quadrato di dimensione abbondante (ad esempio 300x300 pixel) salvato in formato PNG
  • Il disegno dovrà essere abbastanza chiaro da poter essere compreso anche se ridotto a 50 pixel di lato
  • Potremo sceglierlo cliccando sul pulsante Browse
  • Una volta selezionato, lo vedremo ridimensionato nei quattro formati necessari.

Selezione dell'icona

Immagine slide
  • Una volta salvata l'icona, la potremo trovare (e ritoccare se necessario) nella cartella res del progetto, nelle quattro sottocartelle drawable-ldip drawable-mdpi drawable-hdpi dravable-xhdpi
  • Potremo ora cliccare su Next

Selezione del nome dell'app

Immagine slide
  • Man mano che scriviamo in Application Name, vengono anche compilati automaticamente i campi sottostanti.
  • Vi viene ora chiesto di selezionare un nome per la nostra nuova APP.
  • Chiameremo la nostra App Prima Prova
  • Modificheremo il nome del package per personalizzarlo un po'. Lo cambieremo da com.example.primaprova in it.mn.salvi.primaprova

Selezione del nome dell'app

Immagine slide
  • Il nome del package è composto dal nome del nostro dominio Internet (se ne abbiamo uno, se no ce lo inventiamo, come <nostrocognome>.it) scritto a rovescio (dal .it procedendo verso sinistra) seguito dal nome del progetto tutto in minuscolo
  • Modificheremo anche Theme, selezionando None per avere una App con aspetto più semplice e coerente con la versione di Android installato sul dispositivo.
  • Accetteremo le versioni di Android minima e massima proposte, per avere una App abbastanza generale
  • Potremo alla fine cliccare Next

Tipo di Applicazione

Immagine slide
  • Dovremo ora selezionare il tipo di app che vorrmo creare
  • Potremmo creare una App full screen (Fullscreen Activity), come un videogioco che nasconde la barra di stato ed ogni altra cosa sullo schermo
  • Potremo creare una App che abbia una lista di opzioni nella prima pagina ed ogni opzione rimanderà ad una diversa pagina secondaria o di dettaglio (Master/Detail Flow). Nei tablet la prima pagina sarà visualizzata sulla sinistra e le verie pagine secondarie sulla destra.

Tipo di Applicazione

Immagine slide
  • Noi sceglieremo la forma più semplice, vale a dire una App inizialmente vuota (Blank Activity)
  • Potremo quindi cliccare Next

Nomi dei componenti

Immagine slide
  • Activity Name indica il nome della classe che gestirà la schermata principale della nostra App
  • In quest'ultima schermata potremo modificare gli ultimi dati della nostra App.
  • Layout Name invece è il nome del file, che descrive il contenuto della finestra principale. Potremo modificarlo con l'editor grafico delle videate

Nomi dei componenti

Immagine slide
  • Per finire, Navigation Type serve per decidere se stiamo scrivendo un'applicazione normale oppure una che presenti delle etichette in cima allo schermo tra le quali poter navigare o se infine ha un pannello che può essere fatto scendere dall'alto con uno swipe verticale.
  • Noi non cambieremo niente e cliccheremo su Finish, per arrivare alla nostra App

Creazione dell'emulatore

Immagine slide
  • Dopo una certa attesa, finalmente compare il progetto della nostra App.
  • Prima di poter lanciare la nostra App dobbiamo però collegare un dispositivo oppure creare un emulatore.
  • Il collegamento di un dispositivo lo vedremo dopo.
  • Per ora creeremo un emulatore.

Caratteristiche Emulatore

Immagine slide
  • Dovremo dare un nome all'emulatore. Il nome non deve contenere spazi.
  • Scelgo Jelly-Bean che è il nome dell'unico emulatore precaricato.
  • Devo anche selezionare un dispositivo, tra i tanti predefiniti.
  • Scelgo un dipositivo generico con una risoluzione che mi vada bene: 4.0" WVGA (480 x 800:hdpi)
  • In automatico si seleziona l'unico tipo di macchina caricata: Android 4.3-API Level 18

Caratteristiche Emulatore

Immagine slide
  • Per ultimo dovrò indicare una dimensione per la SD Card: selezionerò 100Mib
  • Posso finalmente cliccare su OK per creare la macchina virtuale.
  • Creata la macchina, chiudo la finestra.

Nuovo Emulatore

Immagine slide
  • Cliccheremo su New... per creare un nuovo emulatore

Esecuzione dell'App nell'emulatore

Immagine slide
  • Per lanciare l'esecuzione dell'emulatore potremo cliccare con il tasto destro sul nome del progetto
  • Dal menù contestuale selezioneremo Run as -> Android Application
  • Verrà avviato l'emulatore che avvierà un'istanza dell'Android selezionato al suo interno.

Componenti dell'SDK

Immagine slide
  • A questo punto siamo in grado di emulare completamente solo l'ultima versione del sistema operativo.
  • Sarebbe interessante poter provare in un emulatore e controllare completamente anche la versione che è installata sul nostro telefono, e magari la minima per la quale abbiamo deciso di sviluppare.
  • Dovremo quindi selezionare l'icona dell'Android SDK Manager per aggiungere i componenti necessari.

L'app in funzione

Immagine slide
  • A questo punto vedremo l'APP in funzione nel nostro finto telefono.
  • Questa App non presenta pulsanti o altro, quindi possiamo solo terminarla con il taso indietro del telefono.
  • Se però andiamo nel pannello applicazioni del telefono emulato, potremo trovare l'icona della nostra App e rilanciarla.

Selezione dei messaggi di errore

Immagine slide
  • Viene chiesto se visualizzare i messaggi di errore e di log dell'emulatore.
  • Accetteremo il default cliccando Ok

Abilitazione del telefono

Immagine slide
  • Se il nostro sistema è Windows, dovremo installare le driver del dispositivo, normalmente presenti insieme al software di sincronizzazione.
  • Se invece è Linux e non vogliamo dover avere i diritti di root per eseguire l'app sul telefono, dovremo abilitare l'utente ad accedere al telefono.
  • Per fare questo, per prima cosa dovremo identificare i codici USB del nostro telefono
  • Collegheremo il telefono all'USB
  • Dovremo poi aprire un terminale e digitare il comando:
    lsusb

Abilitazione del telefono

Immagine slide
  • Individuare il telefono nella lista. Nel mio caso trovo LG Electronics, Inc.
  • Annotarsi il numero prima del : che compare sulla riga. Nel mio caso 1004

Creazione della configurazione di UDEV

  • Dovremo, poi, nel terminale scrivere:
    sudo gedit /etc/udev/rules.d/51-android.rules
  • Nell'editor dovremo scrivere la seguente riga:
    SUBSYSTEM=="usb", ATTR{idVendor}=="<numero-annotato-prima>", MODE="0666", GROUP="plugdev"
  • Salveremo il file e chiuderemo l'editor.

Caricamento dei componenti necessari

Immagine slide
  • Scopriamo che sono installati i componenti fondamentali dell'SDK, ma solo le librerie dell'ultima versione di Android (4.3 Jelly Bean).
  • Nel nostro progetto abbiamo indicato che la minima versione con la quale è compatibile è la 2.2 (API versione 8). Dovremo caricare quindi anche queste librerie.
  • Già che ci siamo, visto che il nostro telefono (il mio) monta la versione 4.1.2 (API 16), caricheremo anche questa.

Caricamento dei componenti necessari

Immagine slide
  • Dovremo quindi aprire la sezione Android 4.1.2(API 16) e selezionare:
    • SDK Platform
    • ARM EABI v7a System Image
  • Dovremo quindi aprire la sezione Android 2.2(API 8) e selezionare:
    • SDK Platform
  • Cliccheremo poi su Install Packages ed il download inizierà (durerà a lungo).
  • Terminato il download chiuderemo la finestra

Opzioni da selezionare nel telefono

Immagine slide
  • Faccio un esempio di abilitazione del debug su di un Android 4.1.2
  • Occorre per prima cosa entrare nella configurazione
  • Verso la fine della schermata troveremo Opzioni dello sviluppatore, che selezioneremo.
  • Se queste opzioni non compaiono, dovremo attivarle.
  • Per fare questo dovremo andare nelle impostazioni, nella videata che riporta il Numero di Build. E' all'interno dell Info sul telefono, a volte sotto Informazioni sul software

Opzioni da selezionare nel telefono

Immagine slide
  • Una volta in questa videata dovremo fare tap sette volte. Verremo avvisati che siamo diventati sviluppatori, e potremo trovare la voce di menù che ci interessa.

warning

Immagine slide
  • Il telefono ci sgnala un warning.
  • Noi naturalmente confermeremo ugualmente l'azione.

Abilitazione dell'utente

Immagine slide
  • Dovremo ora aggiungere il nostro utente al gruppo plugdev con il comando:
    sudo gpasswd -a <mio-utnte> plugdev
  • Riavvieremo ora il PC per ablitare le modifiche in modo semplice

Prova dell'applicazione sul telefono

Immagine slide
  • A questo punto, quando facciamo partire l'app ci viene mostrata la pagina di scelta della macchina su cui eseguire
  • Nell'elenco troveremo il nostro telefono
  • Potremo selezionare il telefono e cliccare Ok
  • La nostra APP verrà installata nel telefono e lanciata.
  • Gli eventuali errori e messaggi verranno visualizzati nella finestra dei messaggi di Eclipse.
  • Sempre tramite Eclipse potremo prendere delle foto dello schermo e trasferire file.

Selezione delle opzioni

Immagine slide
  • Dovremo quindi selezionare le opzioni per il debug:
    • Debug USB
    • Consenti posizioni fittizie

Componenti di un'app: i sorgenti

Immagine slide
  • Andiamo ora ad analizzare l'albero del progetto che si trova sulla sinistra della videata di Eclipse.
  • Per prima cosa individuiamo il sorgente dell'APP.
  • Esso si trova nella cartella src
  • In questa cartella troviamo un package con il nome da noi scelto, in questo caso it.docsalvi.primaprova
  • Dentro al namespace troveremo tutti i sorgenti della nostra app. In questo caso troviamo MainActivity.java, che è il nome che abbiamo scelto nel wizard
  • Natiuralmente nessuno ci vieta di raggruppare alcuni sorgenti in package interni a quello della nostra app

Componenti di un'app: i sorgenti

Immagine slide
  • Come minimo avremo un sorgente per ogni videata, dato che ogni videata è gestita da una classe.

Componenti di un'app: le immagini

Immagine slide
  • Tutto il resto delle cose che ci interessano è nella cartella res.
  • Questa cartella contiene una serie di file che faranno parte dell'app e che saranno accessibili a runtime.
  • Per prima cosa, anche se in questi esempi non ne utilizzeremo oltre all'icona che abbiamo inserito con il wizard, troviamo le immagini
  • Occorre tener presente che i dispositivi Android possono avere risoluzioni e dimensioni dello schermo molto variabili.

Componenti di un'app: le immagini

Immagine slide
  • Per ottenere un aspetto omogeneo tra i dispositivi, occorre ridimensionare le icone e le immagini in modo che abbiano all'incirca la stessa dimensione indipendentemente dal dispositivo.
  • Dato che ridimensionare un'immagine è un'operazione sempre rischiosa, Android prevede di avere versioni diverse di ogni immagine, in modo da minimizzare i ridimensionamenti.

Componenti di un'app: le immagini

Immagine slide
  • Troviamo quindi una serie di cartelle drawable, ognuna con lo stesso contenuto, ma ridimensionato per diverse densità dello schermo:
    • drawable-ldpi - 120 dpi
    • drawable-mdpi - 160dpi
    • drawable-hdpi - 240 dpi
    • drawable-xhdpi - 320 dpi
    • drawable-xxhdpi - 480 dpi

Componenti di un'app: i layout

Immagine slide
  • Si potrebbe comporre qualunque videata Android semplicemente da codice.
  • Per evitare questa pratica noiosa, esiste un componente, l'inflater, che legge un file XML e crea i componenti in esso elencati per noi.
  • I file xml con le descrizioni delle videate (o di parti di esse, se ne abbiamo bisogno) vengono chiamati layout e risiedono nella cartella layout di res.
  • In particolare possiamo vedere il file activity_main.xml, il cui nome è stato scelto all'inizio attraverso il wizard.

Componenti di un'app: i layout

Immagine slide
  • Se apriamo un layout, ci viene proposto un editor grafico che ci consente di editare facilmente l'aspetto della vidata.
  • Questo editor ci consente anche di modificare tutti i parametri di ogni componente che inseriamo nella pagina.
  • Consente anche di modificare direttamente l'xml prodotto, cosa che ci consente, ad esempio, di correggere l'ordine in cui i componenti sono rachiusi uno nell'altro.

Componenti di un'app: le stringhe

Immagine slide
  • Le app di Android sono pensate fin dall'inizio per essere tradotte ed internazionali.
  • Per questo motivo nessuna stringa visualizzata dovrebbe comparire direttamente nel codice
  • Anche le stringe utilizzate nei layout non dovrebbero essere scritte direttamente. Ci viene presentato un warning se lo facciamo.
  • Tutte queste stringhe saranno invece contenute, come coppie nome-valore, all'interno di del file strings.xml, nella cartella values di res.

Componenti di un'app: le stringhe

Immagine slide
  • Potremo facilmente richiamare queste stringhe nell'editor dei layout, utilizzando come valore della strinag @strings/ ed utilizzando l'autocompletamento.
  • Potremo utilizzarle nel codice, recuperandole con il metodo getResources().getString(R.string.<nome_della_stringa>)
  • Per ottenere un'app internazionale ci basterà creare cartelle diverse con nome values-<codice_nazionale> ed in quelle inserire una copia del file strings.xml con le traduzioni.

Componenti di un'app: il manifest

Immagine slide
  • L'ultimo elemento fondamentale per un'app Android è il manifest.
  • Anche questo è un file xml, il cui nome standard è manifest.xml e risiede ditrettamente in res.

Componenti di un'app: il manifest

Immagine slide
  • Esso contiene tutte le informazioni necessarie per inserire l'app nel telefono:
    • nome e versione dell'app
    • icona
    • versione del sistema operativo
    • punto di avvio
    • altri punti di ingresso
    • permessi richiesti
    • altro

La paginata principale del manifest

Immagine slide
  • Le informazioni fondamentali del manifest vengono compilate dal wizard di creazione dell'app
  • Per modificarlo, potremo utilizzare l'editor dedicato, senza bisogno di avere a che fare direttamente l'xml
  • Nella parte bassa dell'editor troviamo una serie di etichette che ci rimandano alle varie sezioni del manifest.

l'Application e gli Application Nodes

Immagine slide
  • Con l'etichetta Application, verso il fondo trovimo Application Nodes.
  • In questo riquadro troviamo il percorso della nostra schermata principale, definita dal wizard iniziale.
  • Questa schermata è definita come punto d'ingresso dell'app e sarà visualizzata ogni volta che l'avvieremo direttamente.
  • In questo elenco dovremo inserire ogni altra schermata che creeremo, altrimenti non saremo in grado di visualizzarla.

l'Application e gli Application Nodes

Immagine slide
  • Alcune schermate possono anche essere rese pubbliche, in modo che altre app le utilizzino.
  • Ad esempio in questo modo vengono richiamati i visualizztori di immgini o i browser, quando facciamo tap su un link.

Le user permissions

Immagine slide
  • Per finire, poniamo la nostra attenzione sull'etichetta delle permissions.
  • Per garantire una certa sicurezza, ogni app deve dichiarare che risorse del telefono utilizzerà.
  • In questo modo l'utente potrà sapere se un'app che sta installando andrà a leggere i suoi dati personali, oppure potrà spedire SMS o fare chiamate telefoniche.
  • Anche per accedere ad Internet, leggere e scrivere sulla memoria intenra (la SD) occorre chiedere permessi.

Le user permissions

Immagine slide
  • Se ad esempio vogliamo leggere informazioni da Internet (lo faremo nella terza lezione) e ci dimentichiamo di aggiungere in questa schermata i permessi di INTERNET, quando cercheremo di fare l'accesso verremo bloccati con un'eccezione Permission denied
[any material that should appear in print but not on the slide]