Gewusst wie meine App zu Xamarin.Forms 5.0 migrieren?

Xamarin.Forms 5.0 enthält die folgenden Breaking Changes:

  • Expander wurde in das Xamarin Community Toolkit verschoben. Weitere Informationen finden Sie unter Features, die aus verschoben wurden Xamarin.Forms.
  • MediaElement wurde in das Xamarin Community Toolkit verschoben. Weitere Informationen finden Sie unter Features, die aus verschoben wurden Xamarin.Forms.
  • DataPages und zugehörige Projekte wurden aus Xamarin.Formsentfernt.
  • MasterDetailPage wurde umbenannt in FlyoutPage. Entsprechend wurde die MasterBehavior Enumeration in FlyoutLayoutBehaviorumbenannt.
  • Verweise, die UIWebView unter iOS aus Xamarin.Forms entfernt wurden.
  • Die Unterstützung für Visual Studio 2017 wurde entfernt.
  • XFCorePostProcessor.Tasks wurde entfernt. Dieses Projekt hat IL eingefügt, um die Kompatibilität mit Version 2.5 zu gewährleisten Xamarin.Forms .

Darüber hinaus müssen Android- und UWP-Projekte, die mit Xamarin.Forms Version 5.0 erstellt wurden, aktualisiert werden.

Wichtig

Stellen Sie beim Aktualisieren einer Anwendung auf Xamarin.Forms 5.0 sicher, dass Sie jedes Projekt, das auf das Xamarin.Forms NuGet-Paket verweist, auf eine identische Version aktualisieren.

Android

Android-Projekte, die mit Xamarin.Forms Version 5.0 erstellt wurden, erfordern, dass Sie die AndroidX-Plattform (Android 10.0) in Ihrer Entwicklungsumgebung installiert haben. Dies kann mit dem Android SDK-Manager erreicht werden. Weitere Informationen zu AndroidX finden Sie unter AndroidX-Migration in Xamarin.Forms.

Android-Projekte erfordern dann mehrere Updates, um ordnungsgemäß zu erstellen.

Minimum TargetFrameworkVersion

Xamarin.Forms 5.0 erfordert eine Mindestzielframeworkversion von 10.0 (AndroidX) für Android-Projekte. Die Zielframeworkversion kann in Visual Studio oder in der Android-CSPROJ-Datei festgelegt werden:

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Wenn diese Mindestanforderung nicht erfüllt ist, wird ein Buildfehler erzeugt:

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.

Minimum TargetSDKVersion

AndroidX erfordert, dass Ihr Android-Manifest auf targetSdkVersion 29 und höher festlegt:

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

Andernfalls wird die targetSdkVersion auf festgelegt minSdkVersion. Darüber hinaus wird unter bestimmten Umständen ein Android.Views.InflateException erstellt, wenn die targetSdkVersion nicht ordnungsgemäß festgelegt ist:

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

Hinweis

In Visual Studio 2019 wird das Android-Manifest automatisch aktualisiert, um api targetSdkVersion 29 anzugeben, wenn die Zielframeworkversion auf v10.0 festgelegt ist.

Automatische Migration zu AndroidX

Wenn Ihr Android-Projekt auf Android-Supportbibliotheken verweist, entweder als direkte oder transitive Abhängigkeiten, werden diese Bibliotheksabhängigkeiten und -bindungen während des Buildprozesses automatisch durch AndroidX-Abhängigkeiten getauscht. Weitere Informationen zur automatischen AndroidX-Migration finden Sie unter Automatische Migration in Xamarin.Forms.

Manuelle Migration zu AndroidX

Wenn Ihr Android-Projekt keine direkten oder transitiven Abhängigkeiten von Android-Supportbibliotheken aufweist, aber dennoch versucht, Supportbibliothekstypen über Code zu nutzen, müssen Sie Ihre App manuell zu AndroidX migrieren. Dies kann erreicht werden, indem Sie AndroidX-Typen verwenden und alle AXML-Dateien entfernen, die Sie nicht angepasst haben.

Tipp

Die manuelle Migration zu AndroidX führt zum schnellsten Buildprozess für Ihre App.

Verwenden von AndroidX-Typen

AndroidX ersetzt die Android-Supportbibliotheken, und daher müssen alle Verweise auf Android-Supportbibliothekstypen durch Verweise auf AndroidX-Typen ersetzt werden.

Dies kann erreicht werden, indem Sie Ihre using -Anweisungen aktualisieren, um Namespaces anstelle von Android.Support Namespaces zu verwendenAndroidX. In der folgenden Tabelle sind einige der allgemeinen Namespaceänderungen aufgeführt, wenn Sie von den Android-Supportbibliotheken zu AndroidX wechseln:

Namespace der Android-Supportbibliothek AndroidX-Namespace
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

Eine vollständige Liste der Klassenzuordnungen von Supportbibliotheken zu AndroidX finden Sie unter AndroidX-Klassenzuordnungen auf github.com. Eine vollständige Liste der Assemblyzuordnungen von Supportbibliotheken zu AndroidX finden Sie unter AndroidX-Assemblys auf github.com

Entfernen von AXML-Dateien

Sie sollten alle AXML-Dateien aus Ihrem Android-Projekt löschen, vorausgesetzt, es verwendet keine angepassten AXML-Dateien. Nach dem Löschen sollten die folgenden Zeilen aus Ihrer MainActivity Klasse entfernt werden:

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

Wichtig

Android-Projekte mit angepassten AXML-Dateien sollten aktualisiert werden, damit diese Dateien AndroidX-Typen verwenden.

UWP

Xamarin.Forms 5.0 empfiehlt eine Zielplattformversion von >= 10.0.18362.0 für UWP-Projekte. Die Zielplattformversion kann in Visual Studio oder in der UWP-CSPROJ-Datei festgelegt werden:

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

Wenn Ihr UWP-Projekt eine niedrigere Version der Zielplattform verwendet, wird eine Buildwarnung ausgegeben.