Condividi tramite


Aggiornamento di app iOS esistenti

Seguire questa procedura per aggiornare un'app Xamarin.iOS esistente per usare l'API unificata.

L'aggiornamento di un'app esistente per l'uso dell'API unificata richiede modifiche al file di progetto stesso, nonché agli spazi dei nomi e alle API usate nel codice dell'applicazione.

La strada a 64 bit

Le nuove API unificate sono necessarie per supportare architetture di dispositivi a 64 bit da un'applicazione per dispositivi mobili Xamarin.iOS. A partire dal 1° febbraio 2015 Apple richiede che tutti i nuovi invii di app all'iTunes App Store supportino architetture a 64 bit.

Xamarin offre strumenti sia per Visual Studio per Mac che per Visual Studio per automatizzare il processo di migrazione dall'API classica all'API unificata oppure è possibile convertire manualmente i file di progetto. Anche se l'uso degli strumenti automatici è altamente consigliato, questo articolo illustra entrambi i metodi.

Prima di iniziare...

Prima di aggiornare il codice esistente all'API unificata, è consigliabile eliminare tutti gli avvisi di compilazione. Molti avvisi nell'API classica diventeranno errori dopo la migrazione a Unified. Correggerli prima di iniziare è più semplice perché i messaggi del compilatore dall'API classica spesso forniscono suggerimenti su cosa aggiornare.

Aggiornamento automatico

Dopo aver risolto gli avvisi, selezionare un progetto iOS esistente in Visual Studio per Mac o Visual Studio e scegliere Esegui migrazione all'API unificata Xamarin.iOS dal menu Progetto. Ad esempio:

Choose Migrate to Xamarin.iOS Unified API from the Project menu

È necessario accettare questo avviso prima dell'esecuzione della migrazione automatizzata (ovviamente è necessario assicurarsi di disporre di backup/controllo del codice sorgente prima di intraprendere questa avventura):

Agree to this warning before the automated migration will run

Lo strumento automatizza fondamentalmente tutti i passaggi descritti nella sezione Aggiornamento manuale presentato di seguito ed è il metodo consigliato per convertire un progetto Xamarin.iOS esistente nell'API unificata.

Passaggi per l'aggiornamento manuale

Anche in questo caso, dopo aver risolto gli avvisi, seguire questa procedura per aggiornare manualmente le app Xamarin.iOS per usare la nuova API unificata:

1. Aggiornare il tipo di progetto e la destinazione di compilazione

Modificare il sapore del progetto nei file csproj da 6BC8ED88-2882-458C-8E55-DFD12B67127B a FEACFBD2-3405-455C-9665-78FE426C6842. Modificare il file csproj in un editor di testo, sostituendo il primo elemento dell'elemento <ProjectTypeGuids> come illustrato:

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

Modificare l'elemento Import che contiene Xamarin.MonoTouch.CSharp.targets in Xamarin.iOS.CSharp.targets come illustrato:

Change the Import element that contains Xamarin.MonoTouch.CSharp.targets to Xamarin.iOS.CSharp.targets as shown

2. Aggiornare i riferimenti al progetto

Espandere il nodo Riferimenti del progetto dell'applicazione iOS. Inizialmente mostrerà un riferimento *broken- monotouch simile a questo screenshot (perché è stato appena modificato il tipo di progetto):

It will initially show a broken- monotouch reference similar to this screenshot because the project type changed

Fare clic con il pulsante destro del mouse sul progetto di applicazione iOS per modificare i riferimenti, quindi fare clic sul riferimento monotouch ed eliminarlo usando il pulsante rosso "X".

Right-click on the iOS application project to Edit References, then click on the monotouch reference and delete it using the red X button

Scorrere ora fino alla fine dell'elenco dei riferimenti e selezionare l'assembly Xamarin.iOS .

Now scroll to the end of the references list and tick the Xamarin.iOS assembly

Premere OK per salvare le modifiche ai riferimenti al progetto.

3. Rimuovere MonoTouch dagli spazi dei nomi

Rimuovere il prefisso MonoTouch dagli spazi dei nomi nelle using istruzioni o ovunque un nome di classe sia stato completo (ad esempio, MonoTouch.UIKit diventa solo UIKit).

4. Rieseguire il mapping dei tipi

Sono stati introdotti tipi nativi che sostituiscono alcuni tipi usati in precedenza, ad esempio istanze di System.Drawing.RectangleF con CoreGraphics.CGRect (ad esempio). L'elenco completo dei tipi è disponibile nella pagina tipi nativi.

5. Correzione delle sostituzioni dei metodi

Alcuni UIKit metodi hanno modificato la firma per usare i nuovi tipi nativi , ad esempio nint. Se le sottoclassi personalizzate eseguono l'override di questi metodi, le firme non corrispondono più e genereranno errori. Correggere questi override del metodo modificando la sottoclasse in modo che corrisponda alla nuova firma usando i tipi nativi.

Gli esempi includono la modifica public override int NumberOfSections (UITableView tableView) in modo da restituire nint e modificare sia i tipi di tipo restituito che i tipi di parametro in public override int RowsInSection (UITableView tableView, int section) in nint.

Considerazioni

Quando si converte un progetto Xamarin.iOS esistente dall'API classica alla nuova API unificata, è necessario tenere conto delle considerazioni seguenti se tale app si basa su uno o più componenti o pacchetti NuGet.

Componenti

Qualsiasi componente incluso nell'applicazione dovrà anche essere aggiornato all'API unificata oppure si verifica un conflitto quando si tenta di compilare. Per qualsiasi componente incluso, sostituire la versione corrente con una nuova versione dall'archivio componenti Xamarin che supporta l'API unificata ed eseguire una compilazione pulita. Qualsiasi componente che non è ancora stato convertito dall'autore visualizzerà un avviso a 32 bit solo nell'archivio componenti.

Supporto NuGet

Anche se sono state apportate modifiche a NuGet per lavorare con il supporto dell'API unificata, non è stata rilasciata una nuova versione di NuGet, quindi si sta valutando come ottenere NuGet per riconoscere le nuove API.

Fino a quel momento, proprio come i componenti, sarà necessario cambiare qualsiasi pacchetto NuGet incluso nel progetto in una versione che supporta le API unificate ed eseguire una compilazione pulita in un secondo momento.

Importante

Se si verifica un errore nel formato "Errore 3 Non è possibile includere sia 'monotouch.dll' che 'Xamarin.iOS.dll' nello stesso progetto Xamarin.iOS - Viene fatto riferimento in modo esplicito a 'Xamarin.iOS.dll', mentre 'monotouch.dll' viene fatto riferimento da 'xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null'" dopo aver convertito l'applicazione nelle API unificate, è in genere dovuto alla presenza di un componente o di un pacchetto NuGet nel progetto che non è stato aggiornato all'API unificata. È necessario rimuovere il componente/NuGet esistente, eseguire l'aggiornamento a una versione che supporta le API unificate ed eseguire una compilazione pulita.

Abilitazione di build a 64 bit di app Xamarin.iOS

Per un'applicazione per dispositivi mobili Xamarin.iOS convertita nell'API unificata, lo sviluppatore deve comunque abilitare la compilazione dell'applicazione per computer a 64 bit dalle opzioni dell'app. Vedere il documento Abilitazione di build a 64 bit di app Xamarin.iOS del documento Considerazioni sulla piattaforma a 32/64 bit per istruzioni dettagliate sull'abilitazione delle build a 64 bit.

Completamento

Indipendentemente dal fatto che si scelga di usare il metodo automatico o manuale per convertire l'applicazione Xamarin.iOS dalla versione classica alle API unificate, sono disponibili diverse istanze che richiedono ulteriore intervento manuale. Vedere il Suggerimenti per l'aggiornamento del codice al documento dell'API unificata per i problemi noti e le correzioni.