intro to xamarin
TRANSCRIPT
![Page 1: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/1.jpg)
Template designed by
Introduzione a XamarinMatteo PaganiSupport Engineer – AppConsult @ [email protected] http://wp.qmatteoq.com
![Page 2: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/2.jpg)
Lo sviluppo cross platform
I requisiti di Xamarin
L’approccio Xamarin tradizionale
Xamarin Forms
agenda
![Page 3: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/3.jpg)
Una applicazione, tante piattaforme
• In un mondo ideale, sarebbe bello poter sviluppare l’applicazione solo
• Nel mondo reale, le cose funzionano in maniera differente:• Windows Phone: C# / VB.NET + XAML o JS + HTML e Visual
Studio• iOS: Objective-C / Swift and Xcode• Android: Java e Eclipse / Android Studio / editor di terze parti
![Page 4: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/4.jpg)
Sviluppo nativo
Pro
• Performance
• Puoi utilizzare tutte le feature della piattaforma
Contro
• Devi conoscere linguaggi di programmazione e tool molto diversi tra di loro
• Tre differenti codebase da mantenere, senza la possibilità di condividere codice
![Page 5: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/5.jpg)
Sviluppo con tecnologie web
Basato su tecnologie web (HTML e Javascript) e tool come Apache Cordova, che offrono l’accesso alle API native tramite librerie Javascript.
L’applicazione nativa è composta da una singola WebView, che si fa carico di renderizzare il contenuto web.
![Page 6: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/6.jpg)
Sviluppo con tecnologie web
Pro• L’interfaccia utente e la logica sono sviluppate una volta sola.
• E’ possibile riutilizzare le skill web e i framework più diffusi come jQuery, AngularJS, Bootstrap, ecc.
Contro• Performance peggiori rispetto alle applicazioni native
• Un’unica interfaccia utente significa che è molto difficile realizzare una UI che rispetti le guideline di ogni piattaforma
• E’ possibile sfruttare solo le API che sono in comune tra tutte le piattaforme (storage, GPS, sensori, etc.)
![Page 7: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/7.jpg)
Welcome to Xamarin!
Access to all the platform
features
Native user interface
Android, iOS and Windows development with Visual
Studio
You can share, on
average, up to 75% of the
code
You can reuse your C# skills
![Page 8: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/8.jpg)
• E’ basato su Mono, l’implementazione open source di C# e .NET
• E’ stata creato per supportare lo sviluppo .NET su diverse piattaforme:• Linux• BSD• Windows• Console
• Xamarin iOS e Xamarin Android sono basati su Mono
Xamarin and Mono
![Page 9: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/9.jpg)
Xamarin and iOS
• Il codice è 100% nativo
• Compilazione Ahead-Of-Time (AOT): il processo di build produce direttamente codice nativo, offrendo le stesse performance di un’app realizzata con Objective-C o Swift.
• Tutte le API di iOS sono utilizzabili in Xamarin tramite la sintassi e le naming convention di C# e del framework .NET.
• Supporto a Apple Watch, iPhone, iPad e iPod.
![Page 10: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/10.jpg)
• Alcune limitazioni legate all’uso di feature C#
• Dato che viene usata compilazione AOT per produrre il pacchetto nativo, il processo di build effettua una analisi statica del codice:• Niente reflection• Niente classi con uso di generic• Niente generazione dinamica di codice
Xamarin and iOS
![Page 11: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/11.jpg)
iOS Runtime Model
iOS
Native APIsMapKit
UIViewControllerHealthKit
Etc.
App Native Code
Mono Runtime .NET BCL
![Page 12: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/12.jpg)
Xamarin and Android
• Approccio simile al framework .NET:• Il codice C# viene convertito in IL e incluso nell’APK• L’IL viene convertito in codice nativo tramite compilazione Just-In-
Time (JIT) dal device
• Xamarin produce un pacchetto che offre le stesse performance di un’applicazione di un’applicazione scritta in Java
• Sono supportate tutte le API di Android.
• Supporta diverse branch di Android: Kindle Fire, Android Wear, Android TV, ecc.
![Page 13: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/13.jpg)
Android Runtime Model
Android OS
Mono VM
Native APIsGoogle PlaySupport Lib
Activity, FragmentsEtc.
APK
IL CodeResourc
es
Dalvik/ART VM
Bridge
![Page 14: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/14.jpg)
Tool di sviluppo
Xamarin Studio:
• Disponibile su Windows e OS X
• Supporta Android e iOS (solo su OS X)
• Incluso nella licenza Xamarin
Visual Studio:
• Plugin che si integra con Visual Studio
• Supporta Android, iOS e Windows Phone
![Page 15: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/15.jpg)
Sviluppo iOS con Xamarin
• Richiede un Mac dato che, per limitazioni tecniche e di licenza, la compilazione iOS è possibile solo su OS X.
• E’ possibile utilizzare un Mac come macchina di build, grazie al tool Xamarin Build Host:• Lo sviluppo viene fatto su Windows con Visual Studio• La compilazione e il deploy vengono gestiti da OS X
![Page 16: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/16.jpg)
Sviluppo Android con Xamarin
• Nessun requisito speciale, è supportato sia da Windows che OS X
• E’ possibile testare le applicazioni con diversi emulatori:• Google (sconsigliato)• Genymotion https://www.genymotion.com• Xamarin Android Player https://xamarin.com/android-player• Emulatore Microsoft incluso in Visual Studio 2015 basato su Hyper-
V (utilizza l’immagine base OSP senza i servizi di Google)
![Page 17: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/17.jpg)
La licenza Xamarin
• Diverse licenze disponibili: Starter, Indie, Business e Enterprise• Xamarin Forms richiede almeno la licenza Indie• L’integrazione con Visual Studio richiede almeno la
licenza Business
• Prezzo scontato per gli abbonati MSDN
• Licenza gratuita per studenti e sviluppatori open source
![Page 18: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/18.jpg)
• Diverse librerie di terze parti che possono essere utilizzate nei progetti PCL, Xamarin iOS e Xamarin Android
Due piattaforme:
• NuGet
• Component Store:• Simile a NuGet• Supporta anche componenti a pagamento
Librerie di terze parti
![Page 19: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/19.jpg)
Condividere il codice
Shared project
• Una tipologia di progetto particolare, che non produce una DLL come output durante il processo di build.
• I fle inclusi nel progetto vengono copiati all’interno dei progetti specifici delle piattaforme, tramite il meccanismo dei link di Visual Studio
• E’ basato sulla compilazione condizionale per gestire le differenze tra le varie piattaforme
![Page 20: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/20.jpg)
Tramite la compilazione condizionale, è possibile includere codice che viene incluso durante il processo di build per una piattaforma
Condividere il codice
public void DoSomething(){ #if WINDOWS_PHONE //some Windows Phone APIs #endif
#if __ANDROID__ //some Android APIs #endif
#if __IOS__ //some iOS APIs #endif}
![Page 21: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/21.jpg)
Condividere il codice
Portable Class Library
• Il progetto produce una DLL come output, che può essere utilizzata in diverse tipologie di progetti (Windows, Windows Phone, Xamarin, etc.)
• E’ supportato il set minimo di API disponibili su ogni piattaforma
• Non supporta la compilazione condizionale
![Page 22: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/22.jpg)
L’approccio standard
![Page 23: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/23.jpg)
L’approccio standard
• L’interfaccia utente viene realizzata sfruttando i tool nativi (Storyboard in iOS, AXML in Android)
• Accesso a tutte le API native della piattaforma
• Richiede una buona conoscenza delle due piattaforme.
• Tramite le Portable Class Library, potete condividere la logica di business (accesso al cloud, database, comunicazione con i servizi, ecc.)
![Page 24: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/24.jpg)
In Xamarin, ogni pagina è una Activity composta da:
• Un file XML, che descrive il layout (può essere fatto anche da codice)
• Una classe, che gestisce le interazioni con la Activity
Xamarin Android
<?xml version="1.0" encoding="utf-8"?><LinearLayout ...> <TextView ... /> <EditText ... /> <Button ... /></LinearLayout>
[Activity(MainLauncher = true]public class MainActivity : Activity{
...}
UI definita tramite XML
Classe C# che eredita da Activity ed è
decorata con l’omonimo attributo
![Page 25: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/25.jpg)
Accesso ai controlli in Xamarin Android
<TextView android:id="@+id/PhoneNumber" />
// aapt resource value: 0x7f050000public const int PhoneNumber = 2131034112;
TextView phoneNumberView = this.FindViewById<TextView>(Resource.Id.PhoneNumber);
Viene assegnato un ID nell’XML
E’ possibile accedere ai controlli tramite un ID
Il processo di build genera una risorsa
Si sfrutta la risorsa per accedere al
controllo
![Page 26: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/26.jpg)
• Basato sul pattern MVC
• Ogni applicazione ha uno Storyboard, ovvero la rappresentazione visuale di tutte le schermate dell’app
• Ogni schermata è una scene
• Ogni scene è composta da una View (il layout) e da un ViewController, che ne gestisce le interazioni
Xamarin iOS
![Page 27: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/27.jpg)
• Le storyboard e la navigazione tra una scene e l’altra vengono creati direttamente nel designer di Xamarin
• Il design richiede il collegamento con un Mac
Il designer di Xamarin iOS
![Page 28: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/28.jpg)
dem
o Xamarin Android
![Page 29: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/29.jpg)
Si!
• Volete riutilizzare le skill su C# and .NET vostre o del vostro team
• Volete creare applicazioni che si integrino con le feature della piattaforma
• La vostra applicazione fa largo uso di business logic che volete riutilizzare in tutte le piattaforme
E’ la tecnologia giusta per me?
![Page 30: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/30.jpg)
No!
• Voi o il vostro team non avete skill su C# e il framework .NET
• Volete creare applicazioni mobile senza conoscere i dettagli di ogni singola piattaforma
Is the right technology for me?
![Page 31: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/31.jpg)
Xamarin Forms
Portable Class Library or Shared Project
C# Platform Specific
C# Platform Specific
C# Platform Specific
Shared C# Interface Code (Xamarin.Forms)
Shared C# App Logic (ViewModels, Models etc)
iOS 6.1+ Android 4.0+ WP8.0+ (Silverlight)WinRT support in preview
![Page 32: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/32.jpg)
Xamarin Forms
• Vi permette di condividere non solo la logica di business, ma anche l’interfaccia utente.
• Linguaggio per la UI basato su XAML: i controlli XAML vengono convertiti in controlli nativi a runtime.
• Supporta le caratteristiche princiapli dello XAML: binding, dependency property, trigger, behavior, etc.
• Non è lo stesso XAML di Microsoft: molti punti in comune, ma nomi diversi per alcuni controlli e proprietà
![Page 33: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/33.jpg)
Xamarin Forms<DatePicker />
![Page 34: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/34.jpg)
Si!
• Dovete creare il prototipo di un’applicazione per un cliente o per una demo
• Dovete creare un’applicazione di business
• Non volete imparare tutte le specifiche di ogni singola piattaforma
E’ la tecnologia giusta per me?
![Page 35: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/35.jpg)
No!
• La vostra applicazione è fortemente integrata con feature specifiche della piattaforma.
• La vostra applicazione deve avere UI differenti per ogni piattaforma.
E’ la tecnologia giusta per me?
![Page 36: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/36.jpg)
dem
o Xamarin Forms
![Page 37: INTRO TO XAMARIN](https://reader035.vdocumenti.com/reader035/viewer/2022062300/55cdc149bb61ebd8258b4568/html5/thumbnails/37.jpg)
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei prossimi giorni
Per contattarmi
Twitter: @qmatteoq
Grazie