Миграция 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, процесс миграции ничего не выполняет и не выполняется.
Дополнительные ссылки
- Разделы справки перенести приложение на Xamarin.Forms 5.0?
- Общие сведения о библиотеке поддержки Android на developer.android.com
- Обзор AndroidX в developer.android.com
- Сопоставления классов AndroidX
- Сборки AndroidX