SlideShare a Scribd company logo
1 of 26
Android SDK
Google App Inventor
Fabio Di Zazzo
Cos’è Android?
Android è un insieme di software per dispositivi
mobile che comprende sistema operativo,
middleware ed applicazioni.
Per lo sviluppatore…
Dalvik virtual machine: JVM ottimizzata per
dispositivi mobile
Application framework: semplifica riutilizzo e
sostituzione di componenti
Dalvik Virtual Machine
JVM Open Source sviluppata ex-novo per Android
• Register-based
– Ottimizzazione cicli CPU
• Class Library diversa rispetto a Java SE o Java ME
Write once, run everywhere?
• Sicurezza
– Consentita la condivisione del codice tra
processi ma non la modifica del codice
condiviso
Dalvik Virtual Machine
• Eseguibili in formato proprietario
– File class riorganizzati in uno o più eseguibili Dalvik
(.dex)
– Riutilizzo del codice riduce le dimensioni del 50%
• Fornisce agli sviluppatori l’accesso alle API.
• L’architettura è progettata per favorire il riutilizzo
delle componenti: un applicazione può rendere
disponibili le proprie funzionalità ed altre
applicazioni possono farne uso.
• Ogni componente può essere sostituita dall’utente.
Application Framework
Un applicazione Android è basata su alcune
componenti fondamentali fornite dal Framework
• Un insieme di View quali liste, campi testuali e bottoni
utilizzabili per comporre l’interfaccia di un’applicazione;
• Content Providers che consentono all’applicazione di
recuperare dati da altre applicazioni;
• Un manager delle Risorse che permette di accedere a risorse
non codificabili quali immagini e file di layout;
• Un manager delle Notifiche contenente metodi per
visualizzare notifiche personalizzate nella barra di stato del
dispositivo;
• Un Activity Manager che gestisce il ciclo di vita
dell’applicazione.
Application Framework
L’applicazione Android
• Scritta in Java, compilata in formato proprietario.
• Codice compilato, dati ed altre risorse (immagini etc.)
vengono accorpati in un Android Package (.apk):
– Ogni file .apk è da considerarsi un applicazione a sé stante
• Ogni applicazione viene eseguita separatamente
dalle altre:
– Ad ogni applicazione è associato un processo univoco in
Linux;
– Ogni processo è eseguito in un’istanza separata della
Virtual Machine;
– Ad ogni applicazione è associato un User ID unico: i dati
sono visibili soltanto all’utente e all’applicazione stessa.
Un applicazione Android non include le funzioni
importate da altre applicazioni. Il sistema deve
quindi essere in grado di avviare un
applicazione in qualunque momento ed
istanziare gli oggetti Java necessari.
A questo scopo un applicazione non dispone di
un singolo punto d’accesso (niente main() ) ma
è composta da componenti che possono
essere istanziati ed avviati qualora se ne
presenti la necessità.
Elementi di un applicazione
• Activity:
– Fornisce un interfaccia visuale all’utente
– Contiene oggetti View
– In esecuzione finché mantiene il focus
– Es. interfaccia lettore multimediale
• Service:
– Non fornisce interfaccia visuale
– In esecuzione in background per tempo indefinito
– Accetta richieste da altre applicazioni
– Es. player MP3
Elementi di un applicazione
Metodi della classe Activity
gestiscono il passaggio tra stati:
Tempo totale:
Operazioni tra la creazione
(onCreate() ) e la distruzione
(onDestroy() ) di un applicazione.
Inizializzazione di variabili e
connessione a servizi.
Tempo in visibilità:
Tra onStart() e onStop().
L’applicazione è visibile ma non
interagisce con l’utente.
Tempo in evidenza:
Tra onResume() e onPause().
L’applicazione è visibile ed
interagisce con l’utente.
Lifecycle di un componente: Activity
Due modi di utilizzare un servizio:
• Esecuzione in background fino
all’invocazione di un metodo di
terminazione da parte di un
applicazione o dal processo
stesso.
– Creazione con
Context.startService();
– Terminazione con
Context.stopService() o
Service.stopSelf().
Lifecycle di un componente: Service
• Esecuzione in attesa di
connessioni da altre
applicazioni
– Connessione al servizio con
Context.bindService();
opzionale il lancio di un
servizio non ancora avviato.
– Disconnessione con
Context.unbindService().
Lifecycle di un componente: Service
Le due modalità non sono del tutto separate:
• Possibile la connessione ad un servizio già in
esecuzione in background;
• Necessario un singolo stopService()
indipendentemente dal numero di chiamate a
startService().
Lifecycle di un componente: Service
Ogni applicazione è dotata di un file
AndroidManifest.xml salvato nella root
dell’applicazione. Esso fornisce informazioni
fondamentali sull’applicazione tra cui:
• Il Package Java dell’applicazione;
• Descrizione dei componenti, classi che li
implementano, condizioni di esecuzione, processi;
• Permessi di esecuzione per sezioni protette delle API;
• La versione minima necessaria delle API;
• Librerie da importare per assicurare il funzionamento
dell’applicazione.
Android Manifest
Android Manifest
Classi dell’applicazione
Resource Manager
Risorse
Manifest
Costruire un applicazione
Creare il layout con XML
Accesso alle risorse
Gestione degli eventi
View contengono metodi per impostare Listener.
Vengono specificate classi che estendono il
Listener appropriato al tipo di evento da
gestire.
Android Market
Requisiti per lo sviluppatore:
• Account Google;
• Chiave privata (anche autocertificata) con cui firmare
le applicazioni. Valida almeno fino al 22/10/2033;
• 25$, che le applicazioni siano gratuite o a pagamento
Android Market
Requisiti per l’applicazione:
Si sconsiglia di caricare applicazioni…
• Con contenuto illegale;
• Che violano la privacy;
• Che interferiscono con app/servizi di terzi;
• Che promuovono odio e/o violenza;
• Che violano la proprietà intellettuale;
• Con contenuto VM18.
Applicazioni che violano le linee guida possono
essere rimosse dal market.
App Inventor
App Inventor
App Inventor
App Inventor
Scaricare sorgenti dell’applicazione?
No. In passato…
Componenti personalizzati?
No. In futuro… forse.

More Related Content

Similar to Androidsdk appinventor

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Massimo Caliman
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side JavascriptMatteo Napolitano
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service FabricMassimo Bonanni
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al javaGiovanni Pace
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
Cloud Google App Engine Paas
Cloud   Google App Engine PaasCloud   Google App Engine Paas
Cloud Google App Engine Paassteccami
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 

Similar to Androidsdk appinventor (20)

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
Google App Engine Overview Seminario GDG Genova 4 Ottobre 2013
 
Google AppEngine
Google AppEngineGoogle AppEngine
Google AppEngine
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Android
AndroidAndroid
Android
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
Cloud Google App Engine Paas
Cloud   Google App Engine PaasCloud   Google App Engine Paas
Cloud Google App Engine Paas
 
Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]Whymca Dive into Android [ITA]
Whymca Dive into Android [ITA]
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 

Recently uploaded

ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 

Recently uploaded (6)

ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 

Androidsdk appinventor

  • 1. Android SDK Google App Inventor Fabio Di Zazzo
  • 2. Cos’è Android? Android è un insieme di software per dispositivi mobile che comprende sistema operativo, middleware ed applicazioni. Per lo sviluppatore… Dalvik virtual machine: JVM ottimizzata per dispositivi mobile Application framework: semplifica riutilizzo e sostituzione di componenti
  • 3.
  • 4. Dalvik Virtual Machine JVM Open Source sviluppata ex-novo per Android • Register-based – Ottimizzazione cicli CPU • Class Library diversa rispetto a Java SE o Java ME Write once, run everywhere? • Sicurezza – Consentita la condivisione del codice tra processi ma non la modifica del codice condiviso
  • 5. Dalvik Virtual Machine • Eseguibili in formato proprietario – File class riorganizzati in uno o più eseguibili Dalvik (.dex) – Riutilizzo del codice riduce le dimensioni del 50%
  • 6. • Fornisce agli sviluppatori l’accesso alle API. • L’architettura è progettata per favorire il riutilizzo delle componenti: un applicazione può rendere disponibili le proprie funzionalità ed altre applicazioni possono farne uso. • Ogni componente può essere sostituita dall’utente. Application Framework
  • 7. Un applicazione Android è basata su alcune componenti fondamentali fornite dal Framework • Un insieme di View quali liste, campi testuali e bottoni utilizzabili per comporre l’interfaccia di un’applicazione; • Content Providers che consentono all’applicazione di recuperare dati da altre applicazioni; • Un manager delle Risorse che permette di accedere a risorse non codificabili quali immagini e file di layout; • Un manager delle Notifiche contenente metodi per visualizzare notifiche personalizzate nella barra di stato del dispositivo; • Un Activity Manager che gestisce il ciclo di vita dell’applicazione. Application Framework
  • 8. L’applicazione Android • Scritta in Java, compilata in formato proprietario. • Codice compilato, dati ed altre risorse (immagini etc.) vengono accorpati in un Android Package (.apk): – Ogni file .apk è da considerarsi un applicazione a sé stante • Ogni applicazione viene eseguita separatamente dalle altre: – Ad ogni applicazione è associato un processo univoco in Linux; – Ogni processo è eseguito in un’istanza separata della Virtual Machine; – Ad ogni applicazione è associato un User ID unico: i dati sono visibili soltanto all’utente e all’applicazione stessa.
  • 9. Un applicazione Android non include le funzioni importate da altre applicazioni. Il sistema deve quindi essere in grado di avviare un applicazione in qualunque momento ed istanziare gli oggetti Java necessari. A questo scopo un applicazione non dispone di un singolo punto d’accesso (niente main() ) ma è composta da componenti che possono essere istanziati ed avviati qualora se ne presenti la necessità. Elementi di un applicazione
  • 10. • Activity: – Fornisce un interfaccia visuale all’utente – Contiene oggetti View – In esecuzione finché mantiene il focus – Es. interfaccia lettore multimediale • Service: – Non fornisce interfaccia visuale – In esecuzione in background per tempo indefinito – Accetta richieste da altre applicazioni – Es. player MP3 Elementi di un applicazione
  • 11. Metodi della classe Activity gestiscono il passaggio tra stati: Tempo totale: Operazioni tra la creazione (onCreate() ) e la distruzione (onDestroy() ) di un applicazione. Inizializzazione di variabili e connessione a servizi. Tempo in visibilità: Tra onStart() e onStop(). L’applicazione è visibile ma non interagisce con l’utente. Tempo in evidenza: Tra onResume() e onPause(). L’applicazione è visibile ed interagisce con l’utente. Lifecycle di un componente: Activity
  • 12. Due modi di utilizzare un servizio: • Esecuzione in background fino all’invocazione di un metodo di terminazione da parte di un applicazione o dal processo stesso. – Creazione con Context.startService(); – Terminazione con Context.stopService() o Service.stopSelf(). Lifecycle di un componente: Service
  • 13. • Esecuzione in attesa di connessioni da altre applicazioni – Connessione al servizio con Context.bindService(); opzionale il lancio di un servizio non ancora avviato. – Disconnessione con Context.unbindService(). Lifecycle di un componente: Service
  • 14. Le due modalità non sono del tutto separate: • Possibile la connessione ad un servizio già in esecuzione in background; • Necessario un singolo stopService() indipendentemente dal numero di chiamate a startService(). Lifecycle di un componente: Service
  • 15. Ogni applicazione è dotata di un file AndroidManifest.xml salvato nella root dell’applicazione. Esso fornisce informazioni fondamentali sull’applicazione tra cui: • Il Package Java dell’applicazione; • Descrizione dei componenti, classi che li implementano, condizioni di esecuzione, processi; • Permessi di esecuzione per sezioni protette delle API; • La versione minima necessaria delle API; • Librerie da importare per assicurare il funzionamento dell’applicazione. Android Manifest
  • 18. Creare il layout con XML
  • 20. Gestione degli eventi View contengono metodi per impostare Listener. Vengono specificate classi che estendono il Listener appropriato al tipo di evento da gestire.
  • 21. Android Market Requisiti per lo sviluppatore: • Account Google; • Chiave privata (anche autocertificata) con cui firmare le applicazioni. Valida almeno fino al 22/10/2033; • 25$, che le applicazioni siano gratuite o a pagamento
  • 22. Android Market Requisiti per l’applicazione: Si sconsiglia di caricare applicazioni… • Con contenuto illegale; • Che violano la privacy; • Che interferiscono con app/servizi di terzi; • Che promuovono odio e/o violenza; • Che violano la proprietà intellettuale; • Con contenuto VM18. Applicazioni che violano le linee guida possono essere rimosse dal market.
  • 26. App Inventor Scaricare sorgenti dell’applicazione? No. In passato… Componenti personalizzati? No. In futuro… forse.