Condividi tramite


Ricerca per categorie eseguire la migrazione dell'app alla Xamarin.Forms versione 5.0?

Xamarin.Forms 5.0 include le modifiche di rilievo seguenti:

  • Expander è stato spostato in Xamarin Community Toolkit. Per altre informazioni, vedere Funzionalità spostate da Xamarin.Forms.
  • MediaElement è stato spostato in Xamarin Community Toolkit. Per altre informazioni, vedere Funzionalità spostate da Xamarin.Forms.
  • DataPages e i progetti associati sono stati rimossi da Xamarin.Forms.
  • MasterDetailPage è stato rinominato in FlyoutPage. Analogamente, l'enumerazione MasterBehavior è stata rinominata in FlyoutLayoutBehavior.
  • Riferimenti da UIWebView cui sono stati rimossi Xamarin.Forms in iOS.
  • Il supporto per Visual Studio 2017 è stato rimosso.
  • XFCorePostProcessor.Tasks è stato rimosso. Questo progetto ha inserito IL per mantenere Xamarin.Forms la compatibilità 2.5.

Inoltre, i progetti Android e UWP creati con Xamarin.Forms la versione 5.0 richiederanno l'aggiornamento.

Importante

Quando si aggiorna un'applicazione alla Xamarin.Forms versione 5.0, assicurarsi di aggiornare ogni progetto che fa riferimento al Xamarin.Forms pacchetto NuGet a una versione identica.

Android

I progetti Android creati con Xamarin.Forms la versione 5.0 richiedono l'installazione della piattaforma AndroidX (Android 10.0) nell'ambiente di sviluppo. Questa operazione può essere eseguita con Android SDK Manager. Per altre informazioni su AndroidX, vedere Migrazione di AndroidX in Xamarin.Forms.

I progetti Android richiederanno quindi diversi aggiornamenti per la compilazione corretta.

TargetFrameworkVersion minimo

Xamarin.Forms 5.0 richiede una versione minima del framework di destinazione 10.0 (AndroidX) per i progetti Android. La versione del framework di destinazione può essere impostata in Visual Studio o nel file con estensione csproj Android:

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Se questo requisito minimo non viene soddisfatto, verrà generato un errore di compilazione:

error XF005: The $(TargetFrameworkVersion) for MyProject.Android (v9.0) is less than the minimum required $(TargetFrameworkVersion) for Xamarin.Forms (10.0). You need to increase the $(TargetFrameworkVersion) for MyProject.Android.

TargetSDKVersion minimo

AndroidX richiede che il manifesto Android imposti su targetSdkVersion 29+:

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />

Se non si esegue questa operazione, l'oggetto targetSdkVersion deve essere impostato su minSdkVersion. Inoltre, in alcune circostanze verrà generato un Android.Views.InflateException oggetto se targetSdkVersion non è impostato correttamente:

Android.View.InflateException has been thrown.

Binary XML file line #1 in com.companyname.myproject:layout/toolbar: Binary XML file line #1 in com.companyname.myproject:/layout/toolbar: Error inflating class android.support.v7.widget.Toolbar

Nota

In Visual Studio 2019 il manifesto Android verrà aggiornato automaticamente per specificare un'API targetSdkVersion 29 quando la versione del framework di destinazione è impostata su v10.0.

Migrazione automatica ad AndroidX

Se il progetto Android fa riferimento a qualsiasi libreria di supporto Android, come dipendenze dirette o dipendenze transitive, queste dipendenze e associazioni della libreria di supporto vengono scambiate automaticamente con dipendenze AndroidX durante il processo di compilazione. Per altre informazioni sulla migrazione automatica di AndroidX, vedere Migrazione automatica in Xamarin.Forms.

Migrazione manuale ad AndroidX

Se il progetto Android non ha dipendenze dirette o transitive nelle librerie di supporto Android, ma tenta comunque di usare i tipi di libreria di supporto tramite codice, è necessario eseguire manualmente la migrazione dell'app ad AndroidX. Questa operazione può essere eseguita usando i tipi AndroidX e rimuovendo tutti i file AXML non personalizzati.

Suggerimento

La migrazione manuale ad AndroidX comporterà il processo di compilazione più rapido per l'app.

Usare i tipi AndroidX

AndroidX sostituisce le librerie di supporto Android e pertanto tutti i riferimenti ai tipi di libreria di supporto Android devono essere sostituiti con riferimenti ai tipi AndroidX.

A tale scopo, è possibile aggiornare using le istruzioni per usare AndroidX gli spazi dei nomi anziché Android.Support gli spazi dei nomi. La tabella seguente elenca alcune delle modifiche comuni dello spazio dei nomi quando si passa dalle librerie di supporto Android ad AndroidX:

Spazio dei nomi della libreria di supporto Android Spazio dei nomi AndroidX
Android.Support.V4.App AndroidX.Core.App
Android.Support.V4.Content AndroidX.Core.Content
Android.Support.V4.App AndroidX.Fragment.App
Android.Support.V7.App AndroidX.AppCompat.App
Android.Support.V7.Widget AndroidX.AppCompat.Widget

Per un elenco completo dei mapping delle classi dalle librerie di supporto ad AndroidX, vedere Mapping delle classi AndroidX in github.com. Per un elenco completo dei mapping di assembly dalle librerie di supporto ad AndroidX, vedere Assembly AndroidX in github.com

Rimuovere i file AXML

È consigliabile eliminare tutti i file AXML dal progetto Android, purché non usi file AXML personalizzati. Dopo l'eliminazione, le righe seguenti devono essere rimosse dalla MainActivity classe :

TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

Importante

I progetti Android con file AXML personalizzati devono essere aggiornati in modo che questi file usino tipi AndroidX.

UWP

Xamarin.Forms 5.0 consiglia una versione della piattaforma di destinazione di >= 10.0.18362.0 per i progetti UWP. La versione della piattaforma di destinazione può essere impostata in Visual Studio o nel file con estensione csproj UWP:

<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>

Se il progetto UWP usa una versione della piattaforma di destinazione inferiore, verrà generato un avviso di compilazione.