Parte 3: Configurazione di una soluzione multipiattaforma Xamarin
Indipendentemente dalle piattaforme usate, tutti i progetti Xamarin usano lo stesso formato di file della soluzione (il formato di file di Visual Studio .sln ). Le soluzioni possono essere condivise tra ambienti di sviluppo, anche quando non è possibile caricare singoli progetti, ad esempio un progetto Windows in Visual Studio per Mac.
Quando si crea una nuova applicazione multipiattaforma, il primo passaggio consiste nel creare una soluzione vuota. Questa sezione illustra le operazioni successive: configurazione dei progetti per la creazione di app per dispositivi mobili multipiattaforma.
Condivisione del codice
Fare riferimento al documento Opzioni di condivisione del codice per una descrizione dettagliata di come implementare la condivisione del codice tra piattaforme.
.NET Standard
I progetti .NET Standard offrono un modo semplice per condividere il codice tra piattaforme, producendo assembly che possono essere usati in Windows, piattaforme Xamarin (iOS, Android, Mac) e Linux. Questo è il modo consigliato per condividere il codice per le soluzioni Xamarin.
Altre opzioni
Storicamente Xamarin usava librerie di classi portabili (PCLs)] e progetti condivisi. Nessuno di questi sono consigliati per i nuovi progetti; è consigliabile valutare la possibilità di eseguire la migrazione di app esistenti per l'uso di .NET Standard.
Popolamento della soluzione
Indipendentemente dal metodo usato per condividere il codice, la struttura complessiva della soluzione deve implementare un'architettura a più livelli che incoraggia la condivisione del codice. L'approccio Xamarin consiste nel raggruppare il codice in due tipi di progetto:
- Progetto core (o "condiviso") : scrivere codice utilizzabile nuovamente in un'unica posizione, da condividere tra piattaforme diverse. Usare i principi di incapsulamento per nascondere i dettagli di implementazione laddove possibile.
- Progetti di applicazioni specifici della piattaforma: usare il codice riabilitabile con il minor accoppiamento possibile. A questo livello vengono aggiunte funzionalità specifiche della piattaforma, basate su componenti esposti nel progetto Core.
Progetto principale
I progetti di base che condividono il codice devono essere .NET Standard e fare riferimento solo agli assembly disponibili in tutte le piattaforme, ad esempio . spazi dei nomi del framework comuni, ad esempio System
, System.Core
e System.Xml
.
I progetti di base devono implementare il maggior numero possibile di funzionalità non dell'interfaccia utente, che possono includere i livelli seguenti:
- Livello dati: codice che si occupa dell'archiviazione dei dati fisici, ad esempio. SQLite-NET o addirittura file XML. Le classi livello dati vengono in genere usate solo dal livello di accesso ai dati.
- Livello di accesso ai dati: definisce un'API che supporta le operazioni di dati necessarie per la funzionalità dell'applicazione, ad esempio i metodi per accedere a elenchi di dati, singoli elementi di dati e creare, modificare ed eliminarli.
- Livello di accesso al servizio: livello facoltativo per fornire servizi cloud all'applicazione. Contiene codice che accede alle risorse di rete remota (servizi Web, download di immagini e così via) ed eventualmente memorizzazione nella cache dei risultati.
- Livello business: definizione delle classi Model e delle classi Di facciata o Manager che espongono funzionalità alle applicazioni specifiche della piattaforma.
Progetti di applicazioni specifici della piattaforma
I progetti specifici della piattaforma devono fare riferimento agli assembly necessari per l'associazione a ogni SDK della piattaforma (Xamarin.iOS, Xamarin.Android, Xamarin.Mac o Windows) e al progetto .NET Standard.
I progetti specifici della piattaforma devono implementare:
- Livello applicazione: funzionalità e conversione specifiche della piattaforma tra gli oggetti Livello business e l'interfaccia utente.
- Livello interfaccia utente: schermate, controlli dell'interfaccia utente personalizzati, presentazione della logica di convalida.
Riferimenti al progetto
I riferimenti al progetto riflettono le dipendenze per un progetto. I progetti principali limitano i riferimenti agli assembly comuni in modo che il codice sia facile da condividere. I progetti di applicazione specifici della piattaforma fanno riferimento al progetto .NET Standard, oltre ad altri assembly specifici della piattaforma necessari per sfruttare i vantaggi della piattaforma di destinazione.
Esempi specifici del modo in cui i progetti devono essere strutturati vengono forniti nei case study.
Aggiunta di file
Azione di compilazione
È importante impostare l'azione di compilazione corretta per determinati tipi di file. Questo elenco mostra l'azione di compilazione per alcuni tipi di file comuni:
- Tutti i file C# - Azione di compilazione: Compilazione
- Immagini in Xamarin.iOS e Windows - Azione di compilazione: contenuto
- File XIB e Storyboard in Xamarin.iOS - Azione di compilazione: InterfaceDefinition
- Immagini e layout XML in Android - Azione di compilazione: AndroidResource
- File XAML nei progetti Windows - Azione di compilazione: pagina
- File XAML Xamarin.Forms - Azione di compilazione: EmbeddedResource
In genere l'IDE rileverà il tipo di file e suggerirà l'azione di compilazione corretta.
Distinzione tra maiuscole e minuscole
Infine, tenere presente che alcune piattaforme hanno file system con distinzione tra maiuscole e minuscole (ad esempio iOS e Android), quindi assicurarsi di usare uno standard di denominazione dei file coerente e assicurarsi che i nomi di file usati nel codice corrispondano esattamente al file system. Ciò è particolarmente importante per le immagini e altre risorse a cui si fa riferimento nel codice.