Costruire app per WinPhone, iOS e Android con C# e Xamarin
1. Costruire app per WinPhone,
iOS e Android con C# e Xamarin
Fabio Cozzolino
2. • Sviluppare un’app cross-platform
– Target: iOS, Android e Windows Phone
• Condividere quanto più codice possibile tra le
diverse piattaforme
• Ottimizzare i tempi di sviluppo e centralizzare la
code base
obiettivi
6. Anatomia di una app nativa
Il look-and-feel delle app Xamarin sembra nativo, perchè è nativo!
Native User Interfaces Native API Access Native Performance
7. • evoluzione di mono (ximian, novell...)
• framework sempre aggiornato e tools di sviluppo
– binding e accesso alle API native di iOS e Android
– aggiornamento entro le 24 ore successive ad ogni
rilascio ufficiale
– ambiente di sviluppo (Xamarin Studio e/o Visual
Studio)
• C# everywhere
– permette il riutilizzo delle nostre conoscenze in
.NET
• riutilizzo del codice
Xamarin?
9. come funziona xamarin?
• compilazione nativa
– devono essere incluse le librerie
Xamarin/Mono utilizzate
– minimizzazione del pacchetto con il
Linker (30% più piccolo)
• iOS: AOT (ahead-of-time)
– precompilazione per ARM con mtouch
• Android: JIT (just-in-time)
– compilato in bytecode ed eseguito
nella MonoVM (inclusa)
– esecuzione side-by-side con la DalvikVM
– è possibile utilizzare anche le
funzionalità Java esposte dalla Dalvik
10. come condivido il codice?
File Linking
... e uso le costanti di compilazione condizionale
Shared Project
Stesso del file linking, ma più semplice
Portable Class Library (PCL)
1 assembly + piattaforme
supporto completo in Visual Studio 2013
e in Xamarin Studio
11. portable class library
• codebase centralizzata
• compatibilità attraverso limitazione
(esempio: supporto al MVVM limitato)
• non disponibile con versioni del .NET Framework antecedenti
alla 4.5 (manca la ObservableCollection, per esempio)
• reference alla System.Window necessaria
• richiedono un approccio architetturale più
avanzato
12. Xamarin 3.0
• Semplificazione del Code Sharing
– Shared Project
• Xamarin.Form
– Cross-platform UI
• Aggiunto il designer (storyboard) Xamarin per iOS
– Su Xamarin Studio e Visual Studio
• Potenziamento del plugin per Visual Studio e di
Xamarin Studio
• Supporto a F#, NuGet e documentazione della BCL
13. Cosa serve per lo sviluppo
• Xamarin Studio
• Un account Apple Developer o Google Developer
• Android SDK
• Un Mac con Xcode
• Ma anche Windows
– Xamarin Plugin per
Visual Studio
– Un mac che agisce da
server di compilazione
20. MVVM with Xamarin.Forms
Shared App Logic
Native UI
C#
Native UI
C#
Native UI
C#
Shared C# App Logic
Shared C# App Logic
Shared App Logic
Shared UI
Code
Android
UI Code
Windows
UI Code
in C#
Shared App Logic
Shared App Logic
iOS
UI
Android
UI
Windows
UI
Shared UI Code
Model
View and ViewModel
(UI and controller)
21. Xamarin.Forms
• Sviluppo di UI con Xaml 2009 (o anche
programmaticamente)
– Data Binding
– Converters
– Commands
– …manca il designer
• Gestione delle specificità delle piattaforme
– Dependency Service
– Rendering personalizzato dei controlli
• Astrazione delle animazioni
• E’ possibile combinare l’utilizzo sia di Xamarin.Form
che delle UI classiche
AOT: Compilazione in codice nativo fin dall’inizio
JIT: compilazione durante l’esecuzione
Performance: AOT > JIT > interpretato
On Android, most of the system facilities like Audio, Graphics, OpenGL and Telephony are not available directly to native applications, they are only exposed through the Dalvik Java APIs residing in one of the Java.* namespaces or the Android.* namespaces, the architecture is roughly like this:
Xamarin.Android developers access the various features in the operating system either by calling into .NET APIs that they know (for low-level access) or using the classes exposed in the Android namespaces which provides a bridge to the Java APIs that are exposed by Dalvik.