Android per sistemi embedded Valter Minute [email protected] Vminute By PresenterMedia.com •Agenda or Summary Layout A second line of text could go here 1 Cos’è Android 2 Android e l’embedded 3 L’accesso all’hardware 4 Android Open Source Project 5 Customizzare Android Parenti serpenti I molti possibili utilizzi del robottino To Java or not to Java? Datemi i sorgenti! Un’occhiata sotto il cofano •Valter Minute Una veloce presentazione • Sviluppatore su sistemi embedded dal 1999 •Chi siete voi? Piccoli sondaggisti crescono • • • • • Sviluppatori Sviluppatori Embedded Sviluppatori in ambiente Java Sviluppatori in ambiente Linux Sviluppatori Android •COS’È ANDROID? •Android Vi presento il robottino! • • • Android è il più diffuso sistema operativo per dispositivi mobili E’ basato sul kernel linux e utilizza il linguaggio Java E’ sviluppato da Google e supportato dai principali silicon vendor •La storia di Android C’era una volta un robottino... • • • • 2003 – Viene fondata Android inc. 2005 – Google acquisisce Android inc. 2007 – Viene annunciata la Open Headset Alliance 2008 – Viene rilasciato il primo device Android •Le versioni di Android Un sistema ad alto tasso glicemico • • • • • • • • • • • 1.0 – Settembre 2008 1.1 – Febbraio 2009 1.5 (cupcake) – Aprile 2009 1.6 (donut) – Settembre 2009 2.0/2.1 (eclair) – Ottobre 2009 2.2 (froyo) – Maggio 2010 2.3 (gingerbread) – Dicembre 2010 3.0 (honeycomb) – Febbraio 2011 4.0 (ice cream sandwitch) – Ottobre 2011 4.1/4.2 (jellybean) – Luglio 2012 4.2.2 – Febbraio 2013 •Android e Linux Parenti serpenti? • • • • • Android è basato sul kernel di Linux Le applicazioni user mode in Android sono normalmente basate sull’Android Framework Kernel mode comune User mode differente Licensing •L’architettura di Android Deja vù? •Android e Java Welcome to Dalvik, Iceland • • • Le applicazioni Android possono essere sviluppate in linguaggio Java Android non utilizza la JVM ufficiale Dalvik è una JVM che non esegue bytecode Java •Licensing Roba per avvocati... • • • • Il Kernel di Linux ha licenza GPL La maggior parte dei componenti di Android hanno licenza BSD/Apache Android Brand Google applications •L’ambiente di sviluppo Si eclissa Eclipse? • • • • Android Development Toolkit è attualmente basato su Eclipse Android Studio Linguaggio Java Ambiente di sviluppo gratuito •DEMO – ECLIPSE E ANDROID STUDIO •ANDROID E L’EMBEDDED •Android e l’embedded To custom or not to custom... • • Dispositivi Android commerciali Dispositivi Android custom •Utilizzare un dispositivo commerciale? Android the easy way... • • • • • Android è molto più aperto degli altri sistemi mobili Non è necessario passare per un marketplace E’ possibile rimpiazzare funzionalità di sistema Le applicazioni hanno accesso alla maggior parte delle funzionalità del sistema Non ci sono vincoli di form-factor etc. •DEMO – CONTROLLARE UN DEVICE EMBEDDED DA ANDROID •Realizzare un dispositivo custom Costruiamoci il nostro robottino! • • • • • Possibilità di customizzazione maggiori Hardware specializzato Integrazione di funzioni specifiche Compatibilità con le applicazioni Nessun costo di licenza •Qualche esempio Come on baby light my kindle fire! •Qualche esempio Inchiostro elettronico a fiumi •Qualche esempio L’ora ai tempi di Android •Qualche esempio Android videogames •Licensing Roba da avvocati... • • • • Il Kernel Linux ha licenza GPL La maggior parte dei componenti user mode ha licenza Apache/BSD Branding Google applications •L’ACCESSO ALL’HARDWARE •Dispositivi supportati Hardware access the Android way • • • • • Android supporta nativamente una serie di dispositivi Display e touch, tastiere, GPS, connettività, cattura video, sensori, led etc. Kernel mode HAL Le funzioni di questi device sono accessibili attraverso il framework •Dispositivi non supportati I live it my way.... • • • • • Supporto kernel mode Supporto user mode E’ possibile estendere il framework per supportare funzionalità aggiuntive SDK estesi JNI •DEMO – JNI •ANDROID OPEN SOURCE PROJECT •AOSP The source of power • • • • • source.android.com GIT e repo Componenti user mode C/C++/Java Librerie e componenti esterni •Sorgenti alternative Famolo strano... • • • • Linaro Silicon vendors (Freescale, Intel, Texas Instruments etc.). Supporto per board specifiche Versioni non sempre aggiornate rispetto ad AOSP •CUSTOMIZZARE ANDROID •Aggiungere componenti Dal pinguino al robottino • • • • • Il porting di software da Linux ad Android richiede qualche modifica Makefile Libreria C Librerie esterne THTTPD •DEMO – THTTPD •Customizzare componenti esistenti Use the source Luke! • • • Documentazione (o mancanza di…) Modifiche ai sorgenti Modifiche alla user interface •DEMO – ANDROID E PANDABOARD •Q&A