Jak mogę przeprowadzić migrację mojej aplikacji do Xamarin.Forms wersji 5.0?
Xamarin.Forms 5.0 zawiera następujące zmiany powodujące niezgodność:
Expander
został przeniesiony do zestawu narzędzi Xamarin Community Toolkit. Aby uzyskać więcej informacji, zobacz Funkcje przeniesione z programu Xamarin.Forms.MediaElement
został przeniesiony do zestawu narzędzi Xamarin Community Toolkit. Aby uzyskać więcej informacji, zobacz Funkcje przeniesione z programu Xamarin.Forms.- Pliki DataPages i skojarzone projekty zostały usunięte z Xamarin.Formsprogramu .
MasterDetailPage
zmieniono nazwę naFlyoutPage
.MasterBehavior
Podobnie nazwa wyliczenia została zmieniona naFlyoutLayoutBehavior
.- Odwołania do
UIWebView
zostały usunięte z Xamarin.Forms systemu iOS. - Obsługa programu Visual Studio 2017 została usunięta.
- Plik XFCorePostProcessor.Tasks został usunięty. Ten projekt wstrzyknął IL, aby zachować Xamarin.Forms zgodność 2.5.
Ponadto projekty systemu Android i platformy UWP utworzone przy Xamarin.Forms użyciu wersji 5.0 będą wymagały aktualizacji.
Ważne
Podczas aktualizowania aplikacji do Xamarin.Forms wersji 5.0 upewnij się, że aktualizujesz każdy projekt odwołujący Xamarin.Forms się do pakietu NuGet do identycznej wersji.
Android
Projekty systemu Android utworzone przy Xamarin.Forms użyciu wersji 5.0 wymagają zainstalowania platformy AndroidX (Android 10.0) w środowisku projektowym. Można to zrobić za pomocą menedżera zestawu SDK systemu Android. Aby uzyskać więcej informacji na temat systemu AndroidX, zobacz Temat AndroidX migration in Xamarin.Forms.
Projekty systemu Android będą następnie wymagały kilku aktualizacji w celu poprawnego skompilowania.
Minimalna wersja elementu TargetFrameworkVersion
Xamarin.Forms Wersja 5.0 wymaga minimalnej wersji platformy docelowej 10.0 (AndroidX) dla projektów systemu Android. Wersję platformy docelowej można ustawić w programie Visual Studio lub w pliku csproj systemu Android:
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
Jeśli to minimalne wymaganie nie zostanie spełnione, zostanie wygenerowany błąd kompilacji:
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.
Minimalna wartość TargetSDKVersion
System AndroidX wymaga, aby manifest systemu Android ustawiał targetSdkVersion
wartość 29+:
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
Nie można tego zrobić, co spowoduje targetSdkVersion
ustawienie parametru minSdkVersion
na . Ponadto w niektórych okolicznościach zostanie wygenerowana wartość , Android.Views.InflateException
jeśli targetSdkVersion
parametr nie zostanie poprawnie ustawiony:
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
Uwaga
W programie Visual Studio 2019 manifest systemu Android zostanie automatycznie zaktualizowany w celu określenia targetSdkVersion
interfejsu API 29 po ustawieniu wersji docelowej platformy na 10.0.
Automatyczna migracja do systemu AndroidX
Jeśli projekt systemu Android odwołuje się do dowolnych bibliotek obsługi systemu Android, jako zależności bezpośrednie lub zależności przechodnie, te zależności biblioteki obsługi i powiązania są automatycznie zamieniane na zależności AndroidX podczas procesu kompilacji. Aby uzyskać więcej informacji na temat automatycznej migracji systemu AndroidX, zobacz Automatyczna migracja w systemie Xamarin.Forms.
Ręczna migracja do systemu AndroidX
Jeśli projekt systemu Android nie ma bezpośrednich lub przejściowych zależności od bibliotek obsługi systemu Android, ale nadal próbuje korzystać z typów bibliotek obsługi za pomocą kodu, musisz ręcznie zmigrować aplikację do systemu AndroidX. Można to zrobić za pomocą typów AndroidX i usuwając wszystkie pliki AXML, które nie zostały dostosowane.
Napiwek
Ręczna migracja do systemu AndroidX spowoduje najszybszy proces kompilacji aplikacji.
Korzystanie z typów AndroidX
AndroidX zastępuje biblioteki obsługi systemu Android i dlatego wszelkie odwołania do typów bibliotek obsługi systemu Android muszą zostać zastąpione odwołaniami do typów AndroidX.
Można to osiągnąć, aktualizując using
instrukcje tak, aby używały AndroidX
przestrzeni nazw, a nie Android.Support
przestrzeni nazw. W poniższej tabeli wymieniono niektóre typowe zmiany przestrzeni nazw podczas przechodzenia z bibliotek obsługi systemu Android do systemu AndroidX:
Przestrzeń nazw biblioteki obsługi systemu Android | Przestrzeń nazw 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 |
Aby uzyskać pełną listę mapowań klas z bibliotek pomocy technicznej na AndroidX, zobacz Mapowania klas AndroidX na github.com. Aby uzyskać pełną listę mapowań zestawów z bibliotek pomocy technicznej do systemu AndroidX, zobacz Zestawy AndroidX w github.com
Usuwanie plików AXML
Należy usunąć wszystkie pliki AXML z projektu systemu Android, pod warunkiem, że nie używa dostosowanych plików AXML. Po usunięciu z klasy powinny zostać usunięte MainActivity
następujące wiersze:
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
Ważne
Projekty systemu Android z dostosowanymi plikami AXML powinny być aktualizowane tak, aby te pliki używały typów AndroidX.
Platforma UWP
Xamarin.Forms 5.0 zaleca docelową wersję >platformy = 10.0.18362.0 dla projektów platformy UWP. Wersję platformy docelowej można ustawić w programie Visual Studio lub w pliku csproj platformy UWP:
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
Jeśli projekt platformy UWP używa niższej wersji platformy docelowej, zostanie wygenerowane ostrzeżenie kompilacji.