Corso di programmazione di sistemi mobile 1 1 Android Architettura, ambiente di sviluppo e struttura di un progetto
Corso di programmazione di sistemi mobile 2 2 Android e Java Android non esegue bytecode Java, quindi non ha bisogno di una JVM, per ottimizzare al massimo l’utilizzo delle risorse dei dispositivi, è stata creata una propria Virtual Machine che prende il nome di Dalvik (nome delle città di origine dello sviluppatore). Successivamente, dalla versione di Android 5.0 Lollipop, è stato sostituito da Art. Android utilizza per quasi la totali le librerie standard di Java ad esclusione delle Abstract Window Toolkit (AWT) e Swing. Java però non è l’unico linguaggio a disposizione degli sviluppatori, infatti esiste: Android Scripting Evironment (ASE): per semplificare lo sviluppo delle applicazioni attraverso un linguaggio di scripting di alto livello Android Native Development Kit (AND): per sfruttare al massimo le potenzialità hardware del dispositivo nel caso di app che richiedono elevata elaborazione
Corso di programmazione di sistemi mobile 3 3 Si tratta di una VM ottimizzata per l’esecuzione di applicazioni in dispositivi a risorse limitate, la quale esegueil codice contenuto in file di estensione.DEX ottenuto a sua volta dai file.class contenuti all’interno del fileapk installato.Durante l’esecuzione di un programma la Dalvik si occupa di tradurre il bytecode in linguaggio macchina cosìda divenire eseguibile. Una volta terminata l’esecuzione dell’applicazione il codice tradotto viene perso.La DVM utilizza un garbage collectorIl meccanismo di generazione del codice nella DVM viene detto register based (orientato all’utilizzo deiregistri) a differenza di quello della JVM di tipo stack based (orientato all’utilizzo dello stack).Grazie a ciò si ottiene una riduzione dicirca il 30% delle operazioni (in generale!) Considerando l’operazione: c = a + b DAVLIK VM push b; // LS push a: // LS add; // LLS store c; // LS add a,b,c /LLS
Corso di programmazione di sistemi mobile 4 4 Sostituisce la Dalvik, si basa sulla tecnologia Ahead-of-time, in cui la compilazione viene eseguita per interodurante l’installazione dell’applicazione generando un file.ELF eseguibile.La generazione del file comporta un miglioramento delle prestazioni, della gestione delle risorse e unariduzione dei tempi di avvio ed esecuzione dell’applicazione.A differenza di quanto avveniva con la Dalvik le applicazioni eseguite con Art richiedono maggior spazio suldispositivo.Infine ART utilizza un nuovo garbage collector ART (Android RunTime)
Corso di programmazione di sistemi mobile 5 5 Piattaforma di Android
Corso di programmazione di sistemi mobile 6 6 Piattaforma o Linux Kernel: rappresenta il livello di astrazione dell’hardware con i driver per la gestione delle diverse periferiche. o Libraries: librerie native sviluppate in linguaggio C/C++ e utilizzate da vari componenti del sistema o Android Runtime: costituito da una libreria core che permette l’esecuzione delle applicazioni e da una virtual machine, sostituita di recente da Art e costituiscono la piattaforma di sviluppo di Android. o Application Framework: Insieme di API e componenti. Sono presenti i gestori per le risorse, per le app, per il file system e le applicazioni di base del sistema. o Application: applicazioni utilizzate dall’utente, come per esempio il telefono, il calendario, la rubrica. E’ bene notare che Android non differenzia le applicazioni di terze parti da quelle già incluse di default, infatti garantisce gli stessi privilegi a entrambe le categorie
Corso di programmazione di sistemi mobile 7 7 o Activity Manager : ha il compito di gestire le varie Activity sul display e di organizzarle in uno stack in base all’ordine di visualizzazione sullo schermo o Package Manager : gestisce i processi di installazione e rimozione delle applicazioni dal sistema o Window Manager : gestisce le finestre delle diverse applicazioni o Telephony Manager : consente di accedere alle informazioni e l’utilizzo dei servizi di telefonia del dispositivo o Resource Manager : gestisce tutte le informazioni relative ad una applicazione come file di configurazione, layout, immagini, ecc o View System : gestisce gli elementi grafici (view) utilizzati nella costruzione dell’interfaccia utente (UI) o Location Manager : API per la gestione delle informazioni relative alla localizzazione o Notification Manager : gestisce le informazioni di notifica tra il dispositivo e l’utente. Le notifiche possono consistere in vari eventi: la comparsa di un’icona nella barra di notifica, l’accensione del LED del dispositivo,l’attivazione della retroilluminazione del display, la riproduzione di suoni o vibrazioni. Application Framework
Corso di programmazione di sistemi mobile 8 8 Strumenti e Ambiente di Sviluppo I principali strumenti che uno sviluppatore ha bisogno per realizzare applicazione Android sono: JDK : kit di sviluppo per la realizzazione di applicazione in linguaggio Java IDE : Ambienti di sviluppo contenente gli strumenti necessari per la programmazione. Le alternative maggiormente usate sono Eclipse e Android Studio Android SDK: kit di sviluppo contenente gli strumenti, le risorse, gli emulatori e le piattaforme per rilasciare applicazioni Android Photoshop o simili: per realizzare le risorse grafiche da utilizzare all’intero dell’applicazione
Corso di programmazione di sistemi mobile 9 9 Struttura di un Progetto build/Contiene il codice generato in automatico da Android Studio AndroidManifest.xmlFile che descrive l’applicazione come i permessi e le activity, i service e molto altro libs/Contiene le librerie (JAR) utilizzate dall’applicazione main/res/Contiene le risorse come icone, layouts, stringhe, temi main/src/Contiene il codice sorgente dell’applicazione main/assets/Contiene file statici che saranno caricati in fase di deploy dell’app build.gradlekit di automazione di sviluppo e contiene informazioni di sviluppo specifiche al modulo
Corso di programmazione di sistemi mobile 10 Corso di programmazione di sistemi mobile 10 res/drawable-xxx/cartelle suddivise per dp, contengono le risorse grafiche (png) res/layout/contiene i file xml che in vengono utilizzati dall’utente (UI) res/menu/contiene file xml per la definizione dei menu res/mipmap-xxx/contiene l’icona di avvio dell’applicazione res/raw/contiene file generici come ad esempio file CSV, audio clip res/values/ per stringhe, dimensioni, colori... res/xml/ file xml generici
Corso di programmazione di sistemi mobile 11 Corso di programmazione di sistemi mobile 11 < uses-feature android :name= " android.hardware.camera " android :required= " false " /> Android Manifest
Corso di programmazione di sistemi mobile 12 Corso di programmazione di sistemi mobile 12 Layout
Corso di programmazione di sistemi mobile 13 Corso di programmazione di sistemi mobile 13 HelloAndroid Inserisci l\’username Inserisci la password Accedi Registrati Login con Facebook Valore 1 Valore 2 Valore Possono esistere più versioni della stessa stringa (name uguali) contenute in cartelle diverse suddivise percaratteristiche diverse (lingua, tipo di device, dimensione …). Inoltre si possono creare array di stringhe e diinteri. String
Corso di programmazione di sistemi mobile 14 Corso di programmazione di sistemi mobile 14 Si tratta di risorse che permettono di rappresentare dei colori secondo le seguenti sintassi: #RGB, #ARGB,#RRGGBB e #AARRGGBB, dove con R, G e B indichiamo le tre componenti red, green e blue in cui può esserescomposto un colore mentre con A indichiamo l’eventuale componente alpha di Trasparenza #FF0000 #00FF00 #0000FF #66DDCCDD Colori
Corso di programmazione di sistemi mobile 15 Corso di programmazione di sistemi mobile px 50px 100dp 50dp Dimension px uso dei pixel nel display in le dimensioni sono assolute e misurate in pollici (inch) mm le dimensioni sono assolute e misurate in millimetri pt si utilizzano i punti come 1/72 di un inch dp si tratta di un’unità astratta indipendente dalla densità di pixel sp come la dp, solo che l’adattamento avviene tenendo conto delle preferenze dell’utente relative al font utilizzato
Corso di programmazione di sistemi mobile 16 Corso di programmazione di sistemi mobile 16 Utilizzo delle risorse
Corso di programmazione di sistemi mobile 17 Corso di programmazione di sistemi mobile 17
Corso di programmazione di sistemi mobile 18 Corso di programmazione di sistemi mobile 18 La classe R è una classe generata automaticamente dal sistema, contiene un numerico (Integer) per ogni filee id presente all’interno della cartella res dell’applicazione. Il file R è suddiviso in classi statiche createdinamicamente: R.drawable. R.layout. R.menu. R.mipmap. R.values. R.id. Esiste un file R di sistema e un fileR per ogni applicazione o libreria sviluppata per Androidpublic static final class id { public static final int output = 0x7f ; public static final int pressButton = 0x7f ; }Un attributo definito in un documento XML può far riferimento ad altri valori definiti nello stesso o in altridocumenti tramite la sintassi è la type/name Classe R
Corso di programmazione di sistemi mobile 19 Corso di programmazione di sistemi mobile 19 Utilizzo delle risorse nei file xml
Corso di programmazione di sistemi mobile 20 Corso di programmazione di sistemi mobile 20 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView outputView = (TextView) findViewById(R.id.output); outputView.setText(R.string.hello_world);}Il metodo findViewById è un metodo definito all’interno della classe Activity e ci consente di recuperare unaqualsiasi View definita all’interno di un file xml (R.layout.main) ottenendone un suo riferimento. Utilizzo delle risorse nel codice