Anteprima
Vedrai una selezione di 3 pagine su 8
Appunti di Android (Teoria) Pag. 1 Appunti di Android (Teoria) Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Appunti di Android (Teoria) Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Android: un Sistema Operativo versatile e open source

Android è un Sistema Operativo sviluppato da Google per dispositivi mobili basato su una versione modificata di Linux, attualmente leader di mercato per dispositivi a basso/medio costo. Android è open source, quindi chiunque voglia usare il sistema operativo può farlo scaricando l'intero codice sorgente, ed è questo fattore che ha portato Android ad avere la larga diffusione di oggi, tanto da essere utilizzato non solo per telefoni, ma anche per tablet, televisioni e dispositivi indossabili.

L'architettura di Android è strutturata a layer, ognuno dei quali offre servizi al livello sottostante:

  • Il Kernel Linux di Android è il nucleo del Sistema Operativo, ed offre le feature di sicurezza, gestione della memoria, gestione dei processi, power management; è stato scelto l'utilizzo di un Kernel Linux in quanto molto affidabile e ampliamente testato.
  • Al di sopra del Kernel Linux ci sono le Librerie Native di Android, ovvero tutto un insieme di librerie scritte in C/C++ che forniscono funzionalità di base per lo sviluppo di applicazioni Android.
set di librerie native realizzate in C e C++, le quali rappresentano il core vero di Android. Tra queste abbiamo:
  • Media Framework: componente in grado di gestire i diversi CODEC per i vari formati di acquisizione e riproduzione di audio e di video. Gestisce quindi gli aspetti multimediali.
  • Surface Manager: componente che gestisce l'accesso alle funzionalità del display e coordina le diverse finestre che le applicazioni vogliono visualizzare sullo schermo.
  • SQLite è una libreria in-process che implementa un DBMS relazionale caratterizzato dal fatto di essere molto compatto, diretto, di non necessitare alcuna configurazione speciale e di essere transazionale.
  • WebKit: è il browser engine scelto e utilizzato da sistemi Android. Esso è open source ed è fondato sulle tecnologie HTML, CSS, JavaScript e DOM.
  • Libc (System C library): consiste in un'implementazione della libreria standard C system (libc), disegnata per i dispositivi Android.
basati su Linux embedded come Android. L'esecuzione di un'applicazione in Android è simile a quanto accade in ambiente Java, con la differenza che in fase di compilazione serve necessariamente il file JAR per la creazione del bytecode Java, mentre in esecuzione il device mette a disposizione la versione DEX del runtime che costituisce la core library. Il codice dex viene ovviamente eseguito dalla Dalvik Virtual Machine (DVM). Salendo di livello c'è l'Application Framework, il quale consiste in un insieme di API e componenti inerenti l'esecuzione di funzionalità ben precise e di fondamentale importanza in ciascuna applicazione Android. Fra queste ci sono l'Activity Manager, il Package Manager, ed il Telephony Manager. Infine il layer più alto comprende le applications Android, sia quelle incluse nel dispositivo sia quelle sviluppate da noi. Un concetto molto importante di Android è il livello di API: le API (Application Programming Interface) sono un insieme di funzioni e metodi che permettono agli sviluppatori di interagire con il sistema operativo e le funzionalità del dispositivo.Programming Interface (API) sono delle interfacce per le applicazioni che sviluppiamo, cioè delle librerie di funzioni da richiamare nei nostri applicativi per implementare funzionalità non da zero. Ad ogni aggiornamento della versione di Android, vengono aggiunte delle API che offrono nuove funzionalità definendo un nuovo livello di API: usare un API di livello X rende l'applicazione incompatibile con tutti i dispositivi che hanno una versione inferiore, questa è una scelta di progettazione importante poiché:
  • Se un nuovo livello di API introduce delle funzionalità importanti, è inevitabile sviluppare applicazioni Android con tale livello di API;
  • È inutile passare al nuovo livello di API se le funzionalità aggiunte non sono rilevanti;
  • Con Android Studio, per realizzare un'app, occorre inizialmente definire il livello di API, per tale motivo l'ambiente di sviluppo mostra allo sviluppatore la percentuale di

dispositiviAndroid che utilizza quella versione, cosi da avere una stima della percentuale di utenti chepotrà usufruirne. Ad esempio, scegliere di sviluppare un app con una versione precedentealla KitKat, vorrebbe dire che quasi nessuno potrebbe installare l'applicazione.

Quindi ogni nuovo livello di API fornisce nuove funzionalità ma esclude l'utilizzo alle versioniprecedenti. In genere Android rilascia un nuovo livello di API ogni 6 mesi ed associa ad ognuno diessi un nome simbolico riferito a dei dolci:

Nome in codice Versione Data di rilascio iniziale Livello API
Android 1.0 1.0 23 settembre 2008 1
Petit Four 1.1 9 febbraio 2009 2
Cupcake 1.5 27 aprile 2009 3
Donut 1.6 15 settembre 2009 4
Eclair 2.0 - 2.1 26 ottobre 2009 5 - 7
Froyo 2.2 - 2.2.3 20 maggio 2010 8
Gingerbread 2.3 - 2.3.7 6 dicembre 2010 9 - 10
Honeycomb 3.0 - 3.2.6 22 febbraio 2011 11 - 13
Ice Cream Sandwich 4.0 - 4.0.4 18 ottobre 2011 14 - 15
Jelly Bean 4.1 - 4.3.1 9 luglio 2012 16 - 18
KitKat 4.4 - 4.4.4 31 ottobre 2013 19 - 20
Lollipop 5.0 - 5.1.1 12 novembre 2014 21 - 22
Marshmallow 6.0 - 6.0.1 5 ottobre 2015 23
Nougat 7.0 - 7.1.2 22 agosto 2016 24 - 25
Oreo 8.0 - 8.1 21 agosto 2017 26 - 27
Pie 9 6 agosto 2018 28
Android 10 10 3 settembre 2019 29
Android 11 11 8 settembre 2020 30

Bean 4.1 – 4.3.1 9 luglio 2012 16 – 18

KitKat 4.4 – 4.4.4 31 ottobre 2013 19 – 20

Lollipop 5.0 – 5.1.1 12 novembre 2014 21 – 22

Marshmallow 6.0 – 6.0.1 5 ottobre 2015 23

Nougat 7.0 – 7.1.2 22 agosto 2016 24 – 25

Oreo 8.0 – 8.1 21 agosto 2017 26 – 27

Pie 9 6 agosto 2018 28

Android 10 10 3 settembre 2019 29

Le applicazioni Android sono distribuite sotto forma di file APK (Android Package). Al loro interno vengono raccolti gli eseguibili in formato DEX, le eventuali risorse associate ed una serie di descrittori che delineano il contenuto del pacchetto. Vediamo quali sono le componenti fondamentali di un applicazione Android:

  • Activity: è un interfaccia utente, cioè la schermata dell’applicazione che in un certo momento l’utente vede. È il punto di partenza dello sviluppo di un applicazione. In genere ci sono tante Activity che fanno parte della stessa applicazione ma sono separate (hanno vita propria,
cioè corrispondono ad attività atomiche, se si passa ad un'altra Activity quella precedente viene congelata), ma comunicano tra di loro. Il primo obiettivo di un sviluppatore di app Android è quello di disegnare delle Activity realizzando dei layout in XML, e collegarle tra loro.

Service: il suo scopo è quello di eseguire un lavoro lungo e continuato che viene svolto in background senza bisogno di interazione diretta con l'utente, preparando i dati che l'Activity deve mostrare all'utente. Viene usato in genere quando il lavoro richiesto impiega tanto tempo (2-3 secondi).

Content Provider: è la parte dell'app che si interfaccia con le risorse (file, DB), si occupa di condividere dati custoditi in rete, su DB, sui file, ecc.. fra applicazioni o fra parti di esse.

Broadcast Receiver: è il ricevitore dell'app, si occupa di ricevere messaggi (a livello di sistema) su più fronti. In altre parole esso

Utilizzato quando si intende intercettare un particolare evento attraverso tutto il sistema.

Widget: componenti usati dall'app per interagire con l'utente.

Intent: meccanismi che consentono la comunicazione fra Activity diverse o fra Activity e Services, comunicano un'intenzione a un altro componente (cioè chiedono ad un altro componente che sia effettuata un operazione). In altre parole un Intent è un sistema di messaggistica tra componenti e prevede 3 usi fondamentali: avvio di un Activity, avvio di un Service, invio di messaggi di Broadcast. Esistono 2 tipi di Intent:

  • Intent esplicito: contiene il nome del destinatario, cioè del componente da avviare. Viene usato in genere per lanciare un'altra Activity o un altro Service noto nella stessa app.
  • Intent Implicito: non contiene il destinatario ma soltanto l'intenzione di fare qualcosa che è rivolta ad una qualsiasi componente dell'app in grado di svolgere quell'azione.

Android ricerca le componenti in grado di soddisfare quel compito, confrontando il contenuto dell'Intent con gli Intent Filters dichiarati nel file manifest.xml, che sono delle associazioni azioni-componente. L'ambiente di sviluppo che in genere si utilizza è Android Studio, il quale offre la funzionalità di testare l'applicazione sviluppata mediante un emulatore chiamato AVD (Android Virtual Device).

Un progetto Android è strutturato con 4 directory fondamentali, che sono:

  • src: ospitano i package e le classi della nostra applicazione.
  • res e assets: ospitano le risorse esterne necessarie all'applicazione, come le immagini, i file audio ed altro ancora. Dentro la cartella res, lo sviluppatore può inserire una o più delle seguenti sotto-directory:
    • drawable: Questa directory deve essere usata per le immagini necessarie al software (PNG e JPEG).
    • layout: Questa directory ospita i file XML che descrivono il layout delle interfacce.
  • utente.o values: Questa directory ospita i file XML che descrivono stringhe e altri parametri utilizzati dall'applicazione, come la definizione dei colori.
  • xml: Questa directory ospita file XML di tipo qualsiasi, che il sistema interpreta e rende semplici da acquisire.
  • raw: Questa directory ospita file binari di tipo qualsiasi (ad esempio audio o filmati) che l'applicazione poi carica.
  • gen: che contiene la speciale classe chiamata R. Invocando questa classe è possibile richiamare via codice le risorse memorizzate sotto la directory res.

Ogni applicazione Android deve essere accompagnata da un file chiamato AndroidManifest.xml nella sua cartella principale. Il Manifest raccoglie informazioni basilari sull'app, informazioni necessarie al sistema per far girare qualsiasi porzione di codice della stessa. Tra le altre cose il Manifest presente in ciascuna app del Play Store si occupa delle seguenti cose:

  • Dare un nome al package Java dell'applicazione, che

è anche un identificatore univoco della stessa.

Descrivere le componenti dell’applicazione (attività, servizi, receiver, provider, ecc.), nomina le classi e pubblica le loro “competenze”. Ad esempio ogni qual volta viene creata una nuova Activity è necessario registrarla qui dentro.

Determinare quali processi ospiteranno componenti dell’applicazione.

Dichiarare le Permissions, cioè i permessi dell’app, e i permessi necessari alle altre app per interagire con la stessa.

Dichiarare il livello minimo di API Android che l’app richiede.

Elencare le librerie necessarie all’app.

Quella di Android è una Programmazione Event Driven, cioè un app Android è composta da tanti processi che nella maggior parte del tempo non fanno nulla, ma attendono che l’utente oppure il sistema li invochino scatenando un evento. Android prevede 3 concetti fondamentali per gestire gli eventi:

Event Listener:

Sono degli ascoltatori, cioè o
Dettagli
A.A. 2020-2021
8 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Android e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Cantiello Pasquale.