Разделы справки перенести приложение на Xamarin.Forms 5.0?

Xamarin.Forms 5.0 включает следующие критические изменения:

  • Expanderпереехал в набор средств сообщества Xamarin. Дополнительные сведения см. в разделе "Функции, перенесенные из Xamarin.Forms".
  • MediaElementпереехал в набор средств сообщества Xamarin. Дополнительные сведения см. в разделе "Функции, перенесенные из Xamarin.Forms".
  • DataPages и связанные проекты были удалены из Xamarin.Forms.
  • MasterDetailPage переименован в FlyoutPage. Аналогичным образом MasterBehavior перечисление было переименовано FlyoutLayoutBehaviorв .
  • Ссылки на UIWebView них были удалены из Xamarin.Forms iOS.
  • Поддержка Visual Studio 2017 удалена.
  • XFCorePostProcessor.Tasks удален. Этот проект внедрял IL для обеспечения Xamarin.Forms совместимости 2.5.

Кроме того, для проектов Android и UWP, созданных с Xamarin.Forms версией 5.0, потребуется обновление.

Внимание

При обновлении приложения до Xamarin.Forms версии 5.0 убедитесь, что каждый проект ссылается на Xamarin.Forms пакет NuGet на идентичную версию.

Android

Для проектов Android, созданных с помощью Xamarin.Forms версии 5.0, необходимо установить платформу AndroidX (Android 10.0) в среду разработки. Это можно сделать с помощью диспетчера пакетов SDK для Android. Дополнительные сведения об AndroidX см. в Xamarin.Formsстатье о миграции AndroidX.

Затем для проектов Android требуется несколько обновлений для правильной сборки.

Минимальное значение TargetFrameworkVersion

Xamarin.Forms 5.0 требует минимальной целевой платформы версии 10.0 (AndroidX) для проектов Android. Целевая версия платформы может быть задана в Visual Studio или в файле Android .csproj:

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Ошибка сборки будет возникать, если это минимальное требование не выполняется:

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.

Минимальная целевая версия TargetSDKVersion

Для AndroidX требуется, чтобы манифест Android установил targetSdkVersion значение 29+:

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />

Сбой этого приведет targetSdkVersion к тому, что для параметра задано minSdkVersionзначение . Кроме того, в некоторых случаях Android.Views.InflateException будет создано значение, если targetSdkVersion оно не задано правильно:

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

Примечание.

В Visual Studio 2019 манифест Android автоматически обновляется, чтобы указать targetSdkVersion API 29, если для целевой версии платформы задано значение версии 10.0.

Автоматическая миграция в AndroidX

Если проект Android ссылается на любые библиотеки поддержки Android, как прямые зависимости или транзитивные зависимости, эти зависимости библиотеки поддержки автоматически переключаются с зависимостями AndroidX во время процесса сборки. Дополнительные сведения об автоматической миграции AndroidX см. в Xamarin.Formsразделе "Автоматическая миграция".

Ручная миграция в AndroidX

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

Совет

Миграция вручную в AndroidX приведет к быстрому процессу сборки приложения.

Использование типов AndroidX

AndroidX заменяет библиотеки поддержки Android, поэтому все ссылки на типы библиотек поддержки Android должны быть заменены ссылками на типы AndroidX.

Это можно сделать, обновив using инструкции для использования AndroidX пространств имен, а не Android.Support пространств имен. В следующей таблице перечислены некоторые распространенные изменения пространства имен при переходе из библиотек поддержки Android в AndroidX:

Пространство имен библиотеки поддержки Android Пространство имен 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

Полный список сопоставлений классов из библиотек поддержки с AndroidX см. в github.com сопоставлениях классов AndroidX. Полный список сопоставлений сборок из библиотек поддержки с AndroidX см. в сборках AndroidX на github.com

Удаление файлов AXML

Вы должны удалить все файлы AXML из проекта Android, если он не использует настраиваемые файлы AXML. После удаления из класса должны быть удалены MainActivity следующие строки:

TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

Внимание

Проекты Android с настраиваемыми файлами AXML должны обновляться таким образом, чтобы эти файлы использовали типы AndroidX.

UWP

Xamarin.Forms 5.0 рекомендует целевую версию >платформы = 10.0.18362.0 для проектов UWP. Целевая версия платформы может быть задана в Visual Studio или в ФАЙЛЕ CSPROJ UWP:

<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>

Предупреждение о сборке будет создано, если проект UWP использует более низкую целевую версию платформы.