Chi sono                         Lorenzo Braghetto                                           @monossido     Student of Com...
Android – la crescita    ●   Inizialmente sviluppato dalla Android Inc. acquisita da Google nel 2005    ●   Uno dei cofond...
Android - Numeri          550K terminali attivati al giorno                (si parla già, non ufficialmente, di 1milione a...
Android – Modello di sviluppo                    Android è open source, diffidate da chi dice il contrario.*    ●   Licenz...
Android – i nostri telefoni                  Che software gira nei nostri telefoni?                  È Android, ma non è A...
Android – Perchè e come.        Perchè Google si è buttata nel mondo mobile? E perchè lha        fatto utilizzando un mode...
Android – problemi per gli utenti        La scelta della licenza Apache2 e di un modello di distribuzione        aperto a ...
Android - vantaggi        E i vantaggi?    ●   SO mobile open source, con il progetto Neo Freerunner fallito e Meego      ...
Come evitare gli svantaggi e              godere dei vantaggi?        Comprate un Google Phone e compilatevi la vostra    ...
Android - Programmiamo!        Basi della programmazione Android:    ●   Activity                       → UI    ●   Servic...
Android - Activity    Lactivity è quel processo che si prende carico di visualizzare    linterfaccia grafica dellapplicazi...
Android - Activity              
Android – Activity        Lo stato di un activity viene salvato?    ●   Fino a che lactivity rimane nellonStop() o nellonP...
Android - Interfaccia           Come viengono disegnati gli oggetti di un           interfaccia?           Tramite file XM...
Android - Interfaccia    Lato codice java linterfaccia scritta in XML va aggiunta col comando    setContentView() nel meto...
Android – Supportare diverse                    Risoluzioni        Un grande pregio di Android è che con relativamente poc...
Android - Servizi    I servizi si usano quando cè bisogno di un processo che andrà in    background e che non è legato a n...
Android - BroadcastReceiver        Il BroadcastReceiver è un “ricevitore” di segnali. Può essere usato        per segnali ...
Android – Altri esempi di                    integrazione    ●   Intent filter           NellAndroidManifest è possibile s...
Android – Altri esempi di               integrazione    Altri esempi intent-filter    AppLink                             ...
Fine    I could have made money this way, and perhaps amused myself    writing code. But I knew that at the end of my care...
Upcoming SlideShare
Loading in …5
×

Android, panoramica e sviluppo

1,546 views

Published on

Android, panoramica sulla storia, la licenza, il modello di sviluppo, perchè e come Google si è buttato nel mondo mobile.
Android programmazione, panoramica veloce sulle particolarità della programmazione Android rispetto altre piattaforme.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,546
On SlideShare
0
From Embeds
0
Number of Embeds
482
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android, panoramica e sviluppo

  1. 1. Chi sono Lorenzo Braghetto @monossido Student of Computer science in University of Padua, Free Software addicted, Travels lover, Android developer, Rugby fan. www.lorenzobraghetto.com   
  2. 2. Android – la crescita ● Inizialmente sviluppato dalla Android Inc. acquisita da Google nel 2005 ● Uno dei cofondatori della Android Inc., Andy Rubin, ora è vice presidente del settore mobile di Google ● A fine 2007 viene fondata la Open Headset Alliance, comprendente oggi 84 soggetti fra produttori software, hardware e operatori mobili. ● Subito dopo viene rilasciato lSDK di Android versione 1.0 ● Settembre 2008 primo telefono Android, T-mobile G1 (aka HTC Dream) - “With Google” ● Nel 2009 cè il primo boom; febbraio esce Android versione 1.1, aprile la 1.5, settembre la 1.6, ottobre la 2.0 ● Gennaio 2010 esce Android 2.1, assieme al primo Google Phone, il Nexus One. ● Maggio 2010 esce Android 2.2, considerata una versione stabile e matura di Android. ● Dicembre 2010 esce Android 2.3, assieme al secondo Google Phone, il Nexus S. ● Febbraio 2011 esce Android 3.0, prima versione di Android completamente closed source.   
  3. 3. Android - Numeri 550K terminali attivati al giorno (si parla già, non ufficialmente, di 1milione al giorno) 135 milioni di terminali venduti 400 modelli diversi di device dati aggiornati a giugno 2011 che riguardano solo i device con le Google Apps   
  4. 4. Android – Modello di sviluppo Android è open source, diffidate da chi dice il contrario.* ● Licenza Apache2 (con parti GPLv2) ● Sorgenti rilasciati sempre (honeycomb a parte) tempestivamente su http://android.git.kernel.org/ ● Nonostante la relativa velocità di rilascio di nuove versioni il modello di sviluppo si avvicina più ad un modello “Cattedrale” piuttosto che “Bazar” (© Eric S. Raymond) Sorgenti rilasciati tutti su un colpo, poca predisposizione ad accettare patch, tramacci con le aziende produttrici di dispositivi. ● Fork del kernel Linux Fin da subito il kernel usato poteva essere considerato un fork, solo col tempo si è capito però che Google non è molto interessata a contribuire al kernel “mainline”. Linus in questo però si è dimostrato ottimista. *Stallman ultimamente ha detto che Android non è software libero, non ho troppa difficoltà a dire che ha ragione, ma open source lo rimane.   
  5. 5. Android – i nostri telefoni Che software gira nei nostri telefoni? È Android, ma non è Android. Nella stra-grande maggioranza dei telefoni gira sempre una versione di Android più o meno pesantemente modificata dal produttore. Merito o demerito della licenza Apache2, che permette a chiunque di prendere i sorgenti Android, fare le proprie modifiche e rilasciarle con la licenza che più gli aggrada, anche closed source. Solo i Google Phone possono “vantarsi” di far girare una versione di Android direttamente derivata dai sorgenti Google. Anche in questo caso però non bisogna dimenticarsi delle Google Apps proprietarie e di eventuali probabili driver e librerie anchesse proprietarie.   
  6. 6. Android – Perchè e come. Perchè Google si è buttata nel mondo mobile? E perchè lha fatto utilizzando un modello di sviluppo open source? Perchè ha scelto la licenza Apache2? ● Il mobile è diventata una grande opportunità, Google lha capito giusto in tempo ed è riuscita a smuovere il mercato. ● Google, da sempre, guadagna soldi con ladvertising offrendo servizi gratuiti agli utenti. Questo è un modello di business che si adatta molto bene al modello di sviluppo open source. Il software non è un prodotto da vendere, ma un servizio. ● Apache2 è perfetta per accellerare ladozione di una nuova piattaforma. I produttori non sprecano soldi a reinventare la ruota e possono “brandizzare” a piacere Android, nel frattempo Google continua ad aumentare il bacino di utenti che usano i suoi servizi.   
  7. 7. Android – problemi per gli utenti La scelta della licenza Apache2 e di un modello di distribuzione aperto a qualunque produttore ha creato qualche problema agli utenti (e agli sviluppatori). Lutente che compra un nuovo telefono con Android andrà ad usare in realtà “Android by $produttore”. Tutto quello che riguarda la manutenzione del software, quindi, non è responsabilità di Google, ma dei produttori. Questo può comportare per esempio che: ● per motivi commerciali viene deciso di non aggiornare più il software di alcuni dispositivi (tipicamente di fascia bassa) ● se arrivano gli aggiornamenti normalmente arrivano sempre in ritardo rispetto i Google Phone ● vengono aggiunti bug (vedi camera samsung Galaxy S) ● linterfaccia, cambiando, può cambiare anche lestetica delle applicazioni create da terzi.   
  8. 8. Android - vantaggi E i vantaggi? ● SO mobile open source, con il progetto Neo Freerunner fallito e Meego abbandonato teniamoci ben stretto Android (e speriamo in Tizen) ● Ununica piattaforma sviluppata da un colosso dellinformatica disponibile in tante diverse versioni e, soprattutto, che gira su hardware tanto diversi è un grosso vantaggio sia per lutente che per lo sviluppatore. ● Non è solo il codice che è aperto, ma tutto lecosistema. A partire dalla semplice libertà di personalizzazione dellutente, passando per un market senza filtri e imposizioni dallalto, libertà di installare unapplicazione senza passare dal Market, buona possibilità di integrarsi col sistema tramite le API. ● Naturalmente la possibilità di crearsi una propria versione di Android :) (se si ha un dispositivo con bootloader sbloccabile)   
  9. 9. Come evitare gli svantaggi e godere dei vantaggi? Comprate un Google Phone e compilatevi la vostra personale versione di Android o usate/compilate quella di qualcuno più esperto di voi. (cyanogen ;) ) ● + i Google Phone hanno il supporto diretto in AOSP ● - rimarrete comunque dipendenti da librerie e driver proprietari oltre che dalle Google Apps (se le volete)   
  10. 10. Android - Programmiamo! Basi della programmazione Android: ● Activity → UI ● Service → Servizi in background ● BroadcastReceiver → Ricevono “segnali”   
  11. 11. Android - Activity Lactivity è quel processo che si prende carico di visualizzare linterfaccia grafica dellapplicazione. Vita di unactivity: onCreate() → onStart() → onResume() → onRestart() → onPause() → onStop() → onDestroy() Il sistema può decidere, nel caso di scarsa quantità di ram disponibile, di distruggere le activity che ha in memoria.   
  12. 12. Android - Activity   
  13. 13. Android – Activity Lo stato di un activity viene salvato? ● Fino a che lactivity rimane nellonStop() o nellonPause() lactivity mantiene tutti gli oggetti in memoria e lutente che tornerà ad un activity già precedentemente utilizzata la vedrà inalterata. ● Se lactivity entra nellonDestroy i dati venogno, ovviamente, persi. In quel caso lo sviluppatore può preoccuparsi di salvare alcuni dati “critici” grazi al onSaveInstanceState() e a recuperarli con lonRestoreInstanceState() Una volta con meno di 256mb di ram il secondo caso era il più probabile. Ora con 512mb di ram il problema è meno marcato.   
  14. 14. Android - Interfaccia Come viengono disegnati gli oggetti di un interfaccia? Tramite file XML è possibile realizzare linterfaccia. Recentemente leditor visuale ha finalmente raggiunto livelli accettabili (ma non sufficienti).   
  15. 15. Android - Interfaccia Lato codice java linterfaccia scritta in XML va aggiunta col comando setContentView() nel metodo onCreate() Qualsiasi altra interazione dellutente con linterfaccia grafica può essere implementata nellonCreate() o negli altri metodi, ma in questo modo le azioni verranno eseguite nel Thread dellUI, rallentandolo. Daltra parte nessun altro Thread esterno può modificare la UI. Soluzione → AsyncTask   
  16. 16. Android – Supportare diverse Risoluzioni Un grande pregio di Android è che con relativamente poca fatica si possono creare applicazioni compatibili con i più disparati dispositivi. I problemi principali sono la grandezza dello schermo e la densita di pixel. ● Regola numero 1, AndroidManifest.xml ● Regola numero 2, usare i dp(Density-independent pixel ) e se proprio necessario le cartelle layout-small/medium/large/xlarge (che identificano la grandezza dello schermo) ● Regola numero 3, usare le cartelle drawable-*dpi per le immagini (che identificano la densita di pixel) e se necessario usare il tool Draw 9-patch.   
  17. 17. Android - Servizi I servizi si usano quando cè bisogno di un processo che andrà in background e che non è legato a nessunactivity particolare. Ciclo di vita di un servizio: onCreate() → onStartCommand() → onDestroy() Anche i Servizi, come le Activity, possono essere killati dal sistema se manca RAM. Per ovviare a questo problema si può usare il metodo startForeground() che richiede come argomento un oggetto “notification”.   
  18. 18. Android - BroadcastReceiver Il BroadcastReceiver è un “ricevitore” di segnali. Può essere usato per segnali custom o segnali generati dal sistema. ● Segnali custom, potrebbe service al cambio di unimpostazione da parte dellutente o per avvisare un activity o un servizio di un certo evento. ● Segnali mandati dal sistema; utilissimi per lintegrazione col sistema, alcuni esempi: Grazie a questi Broadcast Intent molte applicazioni che si trovano di default nel sistema possono essere tranquillamente sostituite da applicazioni alternative, come lapp Messaggi, il launcher, il browser...   
  19. 19. Android – Altri esempi di integrazione ● Intent filter NellAndroidManifest è possibile specificare che una certa Activity riesca a gestire precise azioni e dati e che faccia parte di una precisa categoria. Esempio, fare in modo che compaia fra le applicazioni che riescono a “gestire” immagini.   
  20. 20. Android – Altri esempi di integrazione Altri esempi intent-filter AppLink   
  21. 21. Fine I could have made money this way, and perhaps amused myself writing code. But I knew that at the end of my career, I would look back on years of building walls to divide people, and feel I had spent my life making the world a worse place Avrei potuto fare soldi in questo modo, e mi sarei anche potuto divertire scrivendo codice. Ma sapevo che alla fine della mia carriera mi sarei guardato indietro verso anni passati a costruire muri per dividere le persone. E avrei sentito di aver speso la mia vita rendendo il mondo peggiore ?? Happy coding. Mail: lorenzo@lorenzobraghetto.com Twitter: @monossido Blog: lorenzobraghetto.com G+: Lorenzo Braghetto Jabber/Gtalk: monossido@lorenzobraghetto.com   

×