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.

Androidsdk appinventor

  • 1.
    Android SDK Google AppInventor 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
  • 4.
    Dalvik Virtual Machine JVMOpen 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 aglisviluppatori 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 • Scrittain 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 Androidnon 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: – Fornisceun 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 classeActivity 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 diutilizzare 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 inattesa 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
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Gestione degli eventi Viewcontengono metodi per impostare Listener. Vengono specificate classi che estendono il Listener appropriato al tipo di evento da gestire.
  • 21.
    Android Market Requisiti perlo 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 perl’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.
  • 23.
  • 24.
  • 25.
  • 26.
    App Inventor Scaricare sorgentidell’applicazione? No. In passato… Componenti personalizzati? No. In futuro… forse.