Introduzione a Xamarin

Xamarin è uno strumento che permette lo sviluppo di applicazioni native per Android, iPhone e Windows Phone tramite un pc Windows con Visual Studio e C#.

Xamarin è stato fondato dagli stessi creatori del progetto Mono, il quale permetteva di far girare applicazioni .Net su ambienti non Microsoft. Successivamente Xamarin è stata acquisita da Microsoft.

Inizialmente Xamarin era a pagamento anche per le versioni più leggere, e questo ne impediva sicuramente la diffusione. Ad aprile 2016 la Microsoft ha finalmente deciso di rilasciare Xamarin gratuitamente insieme a Visual Studio 2015, compresa la versione Community.

Per comprendere meglio di cosa si sta parlando vi suggerisco di leggere il mio articolo in cui faccio una panoramica su come sviluppare applicazioni per dispositivi Mobile con Visual Studio.

Di seguito elenco una serie di caratteristiche riguardanti Xamarin allo scopo di dare un'idea di come funziona.

  • Prezzo: viene distribuito insieme a Visual Studio 2015, dall'edizione Community in su. Questo significa che è gratis per privati e piccole aziende.
  • Requisiti hardware e software: per lo sviluppo è necessario un pc Windows 7, 8.x o 10 con Visual Studio 2015.
    L'edizione Community di VS è scaricabile gratuitamente dal sito Microsoft.
  • Conoscenze necessarie per iniziare: programmazione con .Net / C#. Con un solo linguaggio si possono sviluppare app per Android, Windows Phone e iPhone.
  • In fase di installazione è possibile scegliere quali componenti aggiuntivi installare. E' necessario selezionare Cross Platform Development e Xamarin.
  • Qualora VS sia già installato e si desidera solamente aggiungere questa opzione, occorre andare in Pannello di Controllo, poi Modifica/Rimuovi e selezionare Cross Platform Development e Xamarin (in modo analogo ad una nuova installazione).
  • Per poter creare app per tutti i dispositivi target bisogna installare Visual Studio su un pc fisico e non su una macchina virtuale. Questo limite è dovuto al fatto che VS stesso utilizza la virtualizzazione per gli emulatori Android e iPhone.
  • Per testare le applicazioni per iPhone/iPad è necessario disporre di una machina Macintosh fisica; questa macchina può anche essere collegata in rete, e deve avere installato un agent per consentirne l'accesso da remoto.
  • In Visual Studio è possibile creare un progetto specifico per un ambiente target (es. Android, iPad) oppure si può creare un progetto di tipo Cross Platform Application quando si vuole creare un'applicazione che giri su più ambienti. In realtà non si crea una singola app, ma una app per ogni ambiente.
  • Una Cross Platform Application è costituita da una Solution contenente vari progetti, uno per ogni ambiente target (Android, iPhone, Windows Phone 8). Ognuno di essi contiene gli elementi dell'interfaccia grafica (nota: è possibile usare Xamarin.Forms).
    Viene creato un ulteriore progetto contente le librerie comuni a tutti gli altri progetti (Shared Project o Project Class Library).
    Questa stuttura permette di definire le logiche business in un progetto comune unico per tutti (usando naturalmente C#). I singoli progetti definiscono l'interfaccia grafica e usano elementi specifici per ogni ambiente.
  • Test: per Windows Phone e Android si possono usare diversi emulatori, facendoli girare sulla stessa macchina di sviluppo. Per iPhone è necessario avere una macchina Macintosh fisica su cui far girare l'emulatore. In ogni caso lo sviluppo e il debug avvengono sul pc Windows.
  • Rilascio su dispositivo mobile fisico: il Sideloading permette il deploy senza passare da uno store. Bisogna attivare sul dispositivo la possibilità di installare questo dipo di applicazione.
    Windows Phone e Android: si collega il dispositivo al pc tramite cavo USB, poi si seleziona Device al posto dell'emulatore.  Per Android è anche possibile generare un file .apk da distribuire manualmente.
  • Per iPhone il deploy non è così semplice e richiede alcuni ulteriori passaggi, dovuti a restrizioni di sicurezza imposte da Apple.
  • Come funziona: "Su Android e iPhone, Xamarin distribuisce un'implementazione completamente funzionale di .NET runtime, chiamato Mono, in bundle con la tua app affinché il codice venga eseguito con tutta la potenza di C# e .NET, tra cui la compilazione JIT, gestione della memoria, reflection e le librerie .Net di base. Gli sviluppatori possono utilizzare qualsiasi funzionalità nativa interagendo con le librerie di classi di .NET che forniscono una mappatura uno a uno per tutte le API native su Android/iPhone."

Autore: Sergio Roberto Boarina