際際滷

際際滷Share a Scribd company logo
Writing apps for Android with .NET
Leo Alario
http://dotnetside.org/blogs/leo
http://twitter.com/leo_alario
leo.alario@gmail.com
Che cosa 竪 Android?
Android 竪 una piattaforma open source(AOSP) composta da:
 OS di base (Linux like)
 un middleware software
 applicazioni di sistema
 v1.0 10/2008 attualmente v4.2.1 11/2012
 Java: Piattaforma di riferimento
 Android SDK/NDK (strumenti di sviluppo, librerie, un
emulatore) + Eclipse + ADT plugin
Che cosa 竪 Android?
Svariati dispositivi supportati:
 Architettura x86 v.2.2 Froyo =>
 Architettura ARM6+
Architettura
Architettura
 Il codice Java (dialetto) viene compilato in
束Dalvik損 byte code (.dex)
 La Dalvik 束VM損 esegue .dex files
 Ogni applicazione viene eseguita in un proprio
processo Linux
 Ogni processo viene eseguito in una propria Dalvik
VM.
Architettura
Application Components
Le Activity
 Sono uno dei 4 elementi di base che possono
  costituire un'applicazione Android
 Sono adatte a quelle applicazioni destinate a una
  interazione diretta con l'utente
 Vengono create come oggetti di classe Activity da
  cui ereditano propriet e metodi
 Forniscono la UI per una schermata
 Lapplicazione pu嘆 essere composta da una o pi湛
  Activity
Application Components
Una Activity:
 Contrassegnata come principale diventa punto
   d'ingresso dellapplicazione
 Pu嘆 avviare altre Activity
 Pu嘆 assumere uno tra i seguenti stati:
     Running
     Paused
     Stopped
 Ha un ciclo di vita simile ad una pagina ASP.NET
Application Components
Life cycle di una Activity:
Application Components
La View
 Una View e la classe di base per la definizione
    dellinterfaccia grafica (lists, grids, text
    boxes, buttons)
 Linterfaccia grafica di una Activity viene in
    genere definita da una o pi湛 View
 Vari tipi di layout disponibili o layout custom
    estendendo uno preesistente
 Pu嘆 essere definita da codice (procedurale)
    oppure tramite un file XML (dichiarativa)
Application Components
Intent
 Un Intent rappresenta un meccanismo per
    descrivere la richiesta di unazione:
      Voglio aprire un link www.dotnetside.org
      Voglio aprite lapplicazione 束xyz損
   Consente di passare da una Activity ad unaltra
   Consente di avviare componenti di altre
    applicazioni
   Puo essere avviata senza alcun risultato, oppure
    richiedendo il ritorno di un risultato
   Consente di passare dati o parametri tra Activity
Application Components
Service
 Simile ai Windows services
 Privo di interfaccia utente
 Rimane attivo anche quando lapplicazione non
   竪 attiva
 Pu嘆 eseguire lunghi processi in background
   senza bloccare altri componente o la UI
 Pu嘆 comunicare con altre applicazioni tramite
   apposite interfacce definite
Application Components
Content Provider
Il modello di sicurezza impedisce di leggere o
scrivere i dati (db, file) di unaltra applicazione.
Il Content provider:
   Consente ad una applicazione di rendere
    disponibili i propri dati ad altre applizioni
    presenti nel sistema
   Queryable application data stores
   Content Provider nativi (android.provider)gi pronti
    alluso (REST like content://)
Application Components
Broadcast Receivers

Consentono allapplicazione di ricevere segnali dal
sistema o da altre applicazioni in esecuzione
   Privi di interfaccia utente
   Condivisione dati
   Segnali di sistema (batteria scarica, connettivit ..)
   Broadcast di messaggi custom
   Pu嘆 avviare una Activity
Application Components
Storage
   Internal storage
   External storage (SD card)
   External storage (USB)
   Local Database (SQLite)
Development
E se volessi scrivere applicazioni Android in .NET?




                        +             =
                                           Monodroid
Che cos竪 Mono?
   Implementazione del .NET CLR
   Open source
   Cross platform
   .NET 4.0
    No WPF, Entity Framework, WF, subset di WCF

   Attualmente 3.0.x Series (in beta)
      .NET 4.5
      C# 5.0 - async support
      Entity Framework
      WinRT compatibility API
      Migliorie a vari assembly per la gestione asincrona
Mono+Android=Monodroid
Mono for Android
 Applicazione commerciale di Xamarin
  Free Emulator only
  Professional 399$
  Enterprise 999$
Ambienti di sviluppo
   Plugin di Visual Studio 2010 - Visual Studio 2012
    (no Express)
   MonoDevelop
    Open source Multi-platform Linux, Windows and Mac OSX
Mono+Android=Monodroid
Come funziona Mono for Android?
   Mono VM Runs side by side with Dalvik
   Fornisce un interop engine che collega il mondo C#
    con il mondo Java e viceversa
    Android/Managed Callable Wrappers
Mono+Android=Monodroid
MonoDroid API
 Namespaces (System.* Mono.* Android.* java.*)
 Listener => Eventi .NET
 JavaBean Properties => c# properties
 Android constants => c# enums
 Java.util.collections => System.Collections.Generic
 Threading (Runnables) => Action
 Strongly typed API type safety, intellisense, docs,
 C# (delegates, lambdas, anonymous methods)
 Utilizzo di librerie jar esistenti-Java Binding Library
Mono+Android=Monodroid
MonoDroid API
 Parallel Framework and PLINQ
   LINQ to Objects
   LINQ to XML
   WCF (Silverlight)
   REST Based Web Service
 .NET Web Services (.asmx / SOAP)
 Client-side Odata
 System.Data.SqlClient - System.Data
Mono+Android=Monodroid
Perch辿 utilizzare MonoDroid in ambito Enterprise?
   Produttivit elevata con Visual Studio
   Riutilizzo delle competenze C# + .NET
   .NET Compact Framework => Monodroid
   Android ottima alternativa a Windows CE
   Piattaforma aperta hardware e driver custom
   Semplicit di distribuzione applicazioni
Mono+Android=Monodroid
Perch辿 utilizzare MonoDroid per sviluppare App?
 Produttivit elevata con Visual Studio
 Riutilizzo delle competenze C# + .NET
 Riutilizzo del codice e copertura del 100% del mercato:
Mono+Android=Monodroid
Perch辿 Android?
 PERCHE NON E NECESSARIO AVERE
  HARDWARE DEDICATO PER SVILUPPARE APP!
Risorse
http://developer.android.com
http://xamarin.com/monoforandroid
http://docs.xamarin.com/android/guides
https://github.com/xamarin/monodroid-samples
http://www.droiddraw.org/
Q&A



 Domande?

More Related Content

Writing apps for android with .net

  • 1. Writing apps for Android with .NET Leo Alario http://dotnetside.org/blogs/leo http://twitter.com/leo_alario leo.alario@gmail.com
  • 2. Che cosa 竪 Android? Android 竪 una piattaforma open source(AOSP) composta da: OS di base (Linux like) un middleware software applicazioni di sistema v1.0 10/2008 attualmente v4.2.1 11/2012 Java: Piattaforma di riferimento Android SDK/NDK (strumenti di sviluppo, librerie, un emulatore) + Eclipse + ADT plugin
  • 3. Che cosa 竪 Android? Svariati dispositivi supportati: Architettura x86 v.2.2 Froyo => Architettura ARM6+
  • 5. Architettura Il codice Java (dialetto) viene compilato in 束Dalvik損 byte code (.dex) La Dalvik 束VM損 esegue .dex files Ogni applicazione viene eseguita in un proprio processo Linux Ogni processo viene eseguito in una propria Dalvik VM.
  • 7. Application Components Le Activity Sono uno dei 4 elementi di base che possono costituire un'applicazione Android Sono adatte a quelle applicazioni destinate a una interazione diretta con l'utente Vengono create come oggetti di classe Activity da cui ereditano propriet e metodi Forniscono la UI per una schermata Lapplicazione pu嘆 essere composta da una o pi湛 Activity
  • 8. Application Components Una Activity: Contrassegnata come principale diventa punto d'ingresso dellapplicazione Pu嘆 avviare altre Activity Pu嘆 assumere uno tra i seguenti stati: Running Paused Stopped Ha un ciclo di vita simile ad una pagina ASP.NET
  • 10. Application Components La View Una View e la classe di base per la definizione dellinterfaccia grafica (lists, grids, text boxes, buttons) Linterfaccia grafica di una Activity viene in genere definita da una o pi湛 View Vari tipi di layout disponibili o layout custom estendendo uno preesistente Pu嘆 essere definita da codice (procedurale) oppure tramite un file XML (dichiarativa)
  • 11. Application Components Intent Un Intent rappresenta un meccanismo per descrivere la richiesta di unazione: Voglio aprire un link www.dotnetside.org Voglio aprite lapplicazione 束xyz損 Consente di passare da una Activity ad unaltra Consente di avviare componenti di altre applicazioni Puo essere avviata senza alcun risultato, oppure richiedendo il ritorno di un risultato Consente di passare dati o parametri tra Activity
  • 12. Application Components Service Simile ai Windows services Privo di interfaccia utente Rimane attivo anche quando lapplicazione non 竪 attiva Pu嘆 eseguire lunghi processi in background senza bloccare altri componente o la UI Pu嘆 comunicare con altre applicazioni tramite apposite interfacce definite
  • 13. Application Components Content Provider Il modello di sicurezza impedisce di leggere o scrivere i dati (db, file) di unaltra applicazione. Il Content provider: Consente ad una applicazione di rendere disponibili i propri dati ad altre applizioni presenti nel sistema Queryable application data stores Content Provider nativi (android.provider)gi pronti alluso (REST like content://)
  • 14. Application Components Broadcast Receivers Consentono allapplicazione di ricevere segnali dal sistema o da altre applicazioni in esecuzione Privi di interfaccia utente Condivisione dati Segnali di sistema (batteria scarica, connettivit ..) Broadcast di messaggi custom Pu嘆 avviare una Activity
  • 15. Application Components Storage Internal storage External storage (SD card) External storage (USB) Local Database (SQLite)
  • 16. Development E se volessi scrivere applicazioni Android in .NET? + = Monodroid
  • 17. Che cos竪 Mono? Implementazione del .NET CLR Open source Cross platform .NET 4.0 No WPF, Entity Framework, WF, subset di WCF Attualmente 3.0.x Series (in beta) .NET 4.5 C# 5.0 - async support Entity Framework WinRT compatibility API Migliorie a vari assembly per la gestione asincrona
  • 18. Mono+Android=Monodroid Mono for Android Applicazione commerciale di Xamarin Free Emulator only Professional 399$ Enterprise 999$ Ambienti di sviluppo Plugin di Visual Studio 2010 - Visual Studio 2012 (no Express) MonoDevelop Open source Multi-platform Linux, Windows and Mac OSX
  • 19. Mono+Android=Monodroid Come funziona Mono for Android? Mono VM Runs side by side with Dalvik Fornisce un interop engine che collega il mondo C# con il mondo Java e viceversa Android/Managed Callable Wrappers
  • 20. Mono+Android=Monodroid MonoDroid API Namespaces (System.* Mono.* Android.* java.*) Listener => Eventi .NET JavaBean Properties => c# properties Android constants => c# enums Java.util.collections => System.Collections.Generic Threading (Runnables) => Action Strongly typed API type safety, intellisense, docs, C# (delegates, lambdas, anonymous methods) Utilizzo di librerie jar esistenti-Java Binding Library
  • 21. Mono+Android=Monodroid MonoDroid API Parallel Framework and PLINQ LINQ to Objects LINQ to XML WCF (Silverlight) REST Based Web Service .NET Web Services (.asmx / SOAP) Client-side Odata System.Data.SqlClient - System.Data
  • 22. Mono+Android=Monodroid Perch辿 utilizzare MonoDroid in ambito Enterprise? Produttivit elevata con Visual Studio Riutilizzo delle competenze C# + .NET .NET Compact Framework => Monodroid Android ottima alternativa a Windows CE Piattaforma aperta hardware e driver custom Semplicit di distribuzione applicazioni
  • 23. Mono+Android=Monodroid Perch辿 utilizzare MonoDroid per sviluppare App? Produttivit elevata con Visual Studio Riutilizzo delle competenze C# + .NET Riutilizzo del codice e copertura del 100% del mercato:
  • 24. Mono+Android=Monodroid Perch辿 Android? PERCHE NON E NECESSARIO AVERE HARDWARE DEDICATO PER SVILUPPARE APP!