writing apps for android with .net

26
Writing apps for Android with .NET Leo Alario http://dotnetside.org/blogs/leo http://twitter.com/leo_alario [email protected]

Upload: leonardo-alario

Post on 24-Jun-2015

1.294 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: Writing apps for android with .net

Writing apps for Android with .NET Writing apps for Android with .NET Leo Alariohttp://dotnetside.org/blogs/leohttp://twitter.com/[email protected]

Page 2: Writing apps for android with .net

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? Che cosa è Android?

Page 3: Writing apps for android with .net

Che cosa è Android? Che cosa è Android? Svariati dispositivi supportati:• Architettura x86 v.2.2 Froyo =>• Architettura ARM6+

Page 4: Writing apps for android with .net

Architettura Architettura

Page 5: Writing apps for android with .net

ArchitetturaArchitettura• 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.

Page 6: Writing apps for android with .net

ArchitetturaArchitettura

Page 7: Writing apps for android with .net

Application Components Application ComponentsLe 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• L’applicazione può essere composta da una o più

Activity

Page 8: Writing apps for android with .net

Application Components Application ComponentsUna Activity:• Contrassegnata come principale diventa punto

d'ingresso dell’applicazione• Può avviare altre Activity• Può assumere uno tra i seguenti stati:

RunningPausedStopped

• Ha un ciclo di vita simile ad una pagina ASP.NET

Page 9: Writing apps for android with .net

Application Components Application ComponentsLife cycle di una Activity:

Page 10: Writing apps for android with .net

Application Components Application ComponentsLa View• Una View e’ la classe di base per la definizione

dell’interfaccia grafica (lists, grids, textboxes, buttons)

• L’interfaccia 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)

Page 11: Writing apps for android with .net

Application Components Application ComponentsIntent• Un Intent rappresenta un meccanismo per

descrivere la richiesta di “un’azione”: Voglio aprire un link www.dotnetside.org Voglio aprite l’applicazione «xyz»

• Consente di passare da una Activity ad un’altra• 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

Page 12: Writing apps for android with .net

Application Components Application ComponentsService• Simile ai Windows services• Privo di interfaccia utente• Rimane attivo anche quando l’applicazione non

è attiva• Può eseguire lunghi processi in background

senza bloccare altri componente o la UI• Può comunicare con altre applicazioni tramite

apposite interfacce definite

Page 13: Writing apps for android with .net

Application Components Application ComponentsContent ProviderIl modello di sicurezza impedisce di leggere o scrivere i dati (db, file) di un’altra 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

all’uso (REST like content://)

Page 14: Writing apps for android with .net

Application Components Application ComponentsBroadcast Receivers

Consentono all’applicazione 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

Page 15: Writing apps for android with .net

Application Components Application ComponentsStorage

• Internal storage• External storage (SD card)• External storage (USB)• Local Database (SQLite)

Page 16: Writing apps for android with .net

DevelopmentDevelopment

+ =E se volessi scrivere applicazioni Android in .NET?

Monodroid

Page 17: Writing apps for android with .net

Che cos’è Mono?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 supportEntity Framework WinRT compatibility APIMigliorie a vari assembly per la gestione asincrona

Page 18: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidMono for Android

• Applicazione commerciale di XamarinFree Emulator onlyProfessional 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

Page 19: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidCome 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 viceversaAndroid/Managed Callable Wrappers

Page 20: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidMonoDroid 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

Page 21: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidMonoDroid 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

Page 22: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidPerché 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

Page 23: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidPerché utilizzare MonoDroid per sviluppare App?• Produttività elevata con Visual Studio• Riutilizzo delle competenze C# + .NET• Riutilizzo del codice e copertura del 100% del mercato:

Page 24: Writing apps for android with .net

Mono+Android=MonodroidMono+Android=MonodroidPerché Android?• PERCHE’ NON E’ NECESSARIO AVERE

HARDWARE DEDICATO PER SVILUPPARE APP!

Page 26: Writing apps for android with .net

Q & A Q & A

Domande?Domande?