Миграция AndroidX в Xamarin.Forms

AndroidX заменяет библиотеку поддержки Android. В этой статье объясняется, почему AndroidX существует, как это влияет Xamarin.Formsи как перенести приложение для использования библиотек AndroidX.

Внимание

Если вы переносите приложение на Xamarin.Forms 5.0, ознакомьтесь с Разделы справки миграции приложения на Xamarin.Forms 5.0?.

История AndroidX

Библиотека поддержки Android была создана для предоставления новых функций в более старых версиях Android. Это уровень совместимости, который позволяет разработчикам использовать функциональные возможности, которые могут не существовать во всех версиях операционной системы Android и имеют изящные резервные варианты для более старых версий. Библиотека поддержки также включает в себя удобные и вспомогательные классы, средства отладки и служебные программы, а также сложные классы, которые зависят от других классов библиотек поддержки для работы.

Хотя библиотека поддержки изначально была одним двоичным файлом, она выросла и превратилась в набор библиотек, которые почти важны для современной разработки приложений. Это некоторые часто используемые функции из библиотеки поддержки:

  • Класс поддержки Fragment .
  • , RecyclerViewиспользуемый для управления длинными списками.
  • Поддержка multidex для приложений с более чем 65 536 методами.
  • Класс ActivityCompat.

AndroidX является заменой библиотеки поддержки, которая больше не поддерживается- все новые разработки библиотеки будут выполняться в библиотеке AndroidX. AndroidX — это переработанная библиотека, которая использует семантику управления версиями, более четкие имена пакетов и улучшенную поддержку распространенных шаблонов архитектуры приложений. AndroidX версии 1.0.0 является двоичным эквивалентом библиотеки поддержки версии 28.0.0. Полный список сопоставлений классов из библиотеки поддержки с AndroidX см. в разделе "Сопоставления классов библиотеки поддержки" на developer.android.com.

Google создал процесс миграции с помощью Jetifier с AndroidX. Jetifier проверяет jar-байт-код во время процесса сборки и переназначает ссылки на библиотеку поддержки, как в коде приложения, так и в зависимости в эквиваленте AndroidX.

Xamarin.Forms В приложении, как и в приложении Java для Android, необходимо перенести jar-зависимости в AndroidX. Однако привязки Xamarin также должны быть перенесены, чтобы указать на правильные базовые JAR-файлы. Xamarin.Forms добавлена поддержка автоматической миграции AndroidX в версии 4.5.

Дополнительные сведения об AndroidX см. в обзоре AndroidX на developer.android.com.

Автоматическая миграция в Xamarin.Forms

Чтобы автоматически выполнить миграцию в AndroidX, Xamarin.Forms необходимо выполнить проект платформы Android:

  • Целевая версия API Android версии 29 или более поздней.
  • Используйте Xamarin.Forms версию 4.5 или более поздней.
  • Имеют прямые или транзитивные зависимости в библиотеках поддержки Android.

После подтверждения этих параметров в проекте создайте приложение Android в Visual Studio 2019. Во время сборки проверяется промежуточный язык (IL), а зависимости библиотеки поддержки и привязки переключаются с зависимостями AndroidX. Если в приложении есть все зависимости AndroidX, необходимые для сборки, вы не заметите никаких различий в процессе сборки.

Внимание

Миграция вручную в AndroidX приведет к быстрому процессу сборки приложения и рекомендуется использовать для миграции AndroidX. Это включает замену зависимостей библиотеки поддержки зависимостями AndroidX и обновление кода для использования типов AndroidX. Дополнительные сведения см. в разделе "Использование типов AndroidX".

Если обнаружены зависимости AndroidX, которые не входят в проект, сообщается об ошибке сборки, указывающая, какие пакеты AndroidX отсутствуют. Ниже показан пример ошибки сборки:

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" />

Отсутствующие пакеты NuGet можно установить с помощью диспетчер пакетов NuGet в Visual Studio или установить, изменив файл Android CSPROJ, чтобы включить PackageReference элементы XML, перечисленные в ошибке.

После устранения отсутствующих пакетов перестроение проекта загружает отсутствующие пакеты и проект компилируется с помощью зависимостей AndroidX вместо зависимостей библиотеки поддержки.

Примечание.

Если проект и зависимости проекта не ссылаются на библиотеки поддержки Android, процесс миграции ничего не выполняет и не выполняется.