Разделы справки перенести приложение на 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 использует более низкую целевую версию платформы.