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 inFlyoutPage
. Entsprechend wurde dieMasterBehavior
Enumeration inFlyoutLayoutBehavior
umbenannt.- 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.