Udostępnij za pośrednictwem


Migracja systemu AndroidX w programie Xamarin.Forms

AndroidX zastępuje bibliotekę pomocy technicznej systemu Android. W tym artykule wyjaśniono, dlaczego system AndroidX istnieje, jak ma to wpływ Xamarin.Formsna platformę i jak migrować aplikację do korzystania z bibliotek AndroidX.

Ważne

Jeśli migrujesz aplikację do Xamarin.Forms wersji 5.0, zobacz Jak mogę zmigrować moją aplikację do Xamarin.Forms wersji 5.0?.

Historia systemu AndroidX

Biblioteka obsługi systemu Android została utworzona w celu zapewnienia nowszych funkcji w starszych wersjach systemu Android. Jest to warstwa zgodności, która umożliwia deweloperom korzystanie z funkcji, które mogą nie istnieć we wszystkich wersjach systemu operacyjnego Android i mają łagodne rezerwowe dla starszych wersji. Biblioteka pomocy technicznej zawiera również klasy wygody i pomocnika, debugowanie i narzędzia oraz zaawansowane klasy, które zależą od innych klas bibliotek pomocy technicznej do działania.

Biblioteka pomocy technicznej była pierwotnie pojedynczym plikiem binarnym, ale rozwinęła się w zestaw bibliotek, które są prawie niezbędne do tworzenia nowoczesnych aplikacji. Są to niektóre często używane funkcje z biblioteki pomocy technicznej:

  • Fragment Klasa pomocy technicznej.
  • Element RecyclerView, używany do zarządzania długimi listami.
  • Obsługa multidex dla aplikacji z ponad 65 536 metodami.
  • Klasa ActivityCompat .

AndroidX jest zamiennikiem biblioteki pomocy technicznej, która nie jest już utrzymywana — w bibliotece AndroidX zostaną wykonane wszystkie nowe programowanie biblioteki. AndroidX to przeprojektowana biblioteka, która korzysta z semantycznego przechowywania wersji, jaśniejszych nazw pakietów i lepszej obsługi typowych wzorców architektury aplikacji. AndroidX w wersji 1.0.0 jest plikiem binarnym odpowiadającym bibliotece pomocy technicznej w wersji 28.0.0. Aby uzyskać pełną listę mapowań klas z biblioteki pomocy technicznej do systemu AndroidX, zobacz Mapowania klas biblioteki pomocy technicznej w developer.android.com.

Firma Google utworzyła proces migracji o nazwie Jetifier z systemem AndroidX. Narzędzie Jetifier sprawdza kod bajtowy jar podczas procesu kompilacji i ponownie mapuje odwołania do biblioteki pomocy technicznej, zarówno w kodzie aplikacji, jak i w zależnościach, do odpowiednika androidX.

Xamarin.Forms W aplikacji, podobnie jak w aplikacji Java dla systemu Android, zależności jar muszą zostać zmigrowane do systemu AndroidX. Jednak powiązania platformy Xamarin muszą być również migrowane, aby wskazywały poprawne, bazowe pliki jar. Xamarin.Forms dodano obsługę automatycznej migracji androidX w wersji 4.5.

Aby uzyskać więcej informacji na temat systemu AndroidX, zobacz Artykuł AndroidX overview on developer.android.com (Omówienie systemu AndroidX w developer.android.com).

Automatyczna migracja w programie Xamarin.Forms

Aby automatycznie przeprowadzić migrację Xamarin.Forms do systemu AndroidX, projekt platformy systemu Android musi:

  • Docelowy interfejs API systemu Android w wersji 29 lub nowszej.
  • Użyj Xamarin.Forms wersji 4.5 lub nowszej.
  • Mają zależności bezpośrednie lub przechodnie w bibliotekach obsługi systemu Android.

Po potwierdzeniu tych ustawień w projekcie skompiluj aplikację dla systemu Android w programie Visual Studio 2019. Podczas procesu kompilacji język pośredni (IL) jest sprawdzany, a zależności biblioteki pomocy technicznej i powiązania są zamieniane na zależności AndroidX. Jeśli aplikacja ma wszystkie zależności AndroidX wymagane do skompilowania, nie zauważysz żadnych różnic w procesie kompilacji.

Ważne

Ręczna migracja do systemu AndroidX spowoduje najszybszy proces kompilacji aplikacji i jest zalecanym podejściem do migracji systemu AndroidX. Obejmuje to zastąpienie zależności biblioteki pomocy technicznej zależnościami AndroidX i zaktualizowanie kodu w celu korzystania z typów AndroidX. Aby uzyskać więcej informacji, zobacz Używanie typów AndroidX.

Jeśli wykryto zależności AndroidX, które nie są częścią projektu, zgłaszany jest błąd kompilacji wskazujący, których pakietów AndroidX brakuje. Poniżej przedstawiono przykładowy błąd kompilacji:

Could not find 37 AndroidX assemblies, make sure to install the following NuGet packages:
- Xamarin.AndroidX.Lifecycle.LiveData
- Xamarin.AndroidX.Browser
- Xamarin.Google.Android.Material
- Xamarin.AndroidX.Legacy.Supportv4
You can also copy and paste the following snippit into your .csproj file:
 <PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.1.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.Google.Android.Material" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0-rc1" />

Brakujące pakiety NuGet można zainstalować za pośrednictwem Menedżer pakietów NuGet w programie Visual Studio lub zainstalować, edytując plik csproj systemu Android, aby uwzględnić PackageReference elementy XML wymienione w błędzie.

Po rozwiązaniu problemów z brakującymi pakietami ponowne skompilowanie projektu ładuje brakujące pakiety, a projekt jest kompilowany przy użyciu zależności AndroidX zamiast zależności biblioteki obsługi.

Uwaga

Jeśli projekt i zależności projektu nie odwołują się do bibliotek obsługi systemu Android, proces migracji nic nie wykonuje i nie jest wykonywany.