共用方式為


如何? 將應用程式移轉至 Xamarin.Forms 5.0?

Xamarin.Forms 5.0 包含下列重大變更:

  • Expander 已移至 Xamarin Community Toolkit。 如需詳細資訊,請參閱 從 Xamarin.Forms移動的功能。
  • MediaElement 已移至 Xamarin Community Toolkit。 如需詳細資訊,請參閱 從 Xamarin.Forms移動的功能。
  • DataPages 和相關聯的專案已從 Xamarin.Forms中移除。
  • MasterDetailPage 已經重新命名為 FlyoutPage。 同樣地, MasterBehavior 列舉已重新命名為 FlyoutLayoutBehavior
  • UIWebView的參考已從 Xamarin.Forms iOS 上移除。
  • 已移除 Visual Studio 2017 的支援。
  • 已移除 XFCorePostProcessor.Tasks。 此專案插入 IL 以維護 Xamarin.Forms 2.5 相容性。

此外,使用 5.0 建置的 Xamarin.Forms Android 和 UWP 專案將需要更新。

重要

將應用程式更新為 Xamarin.Forms 5.0 時,請務必將參考 Xamarin.Forms NuGet 套件的每個專案更新為相同的版本。

Android

使用 Xamarin.Forms 5.0 建置的 Android 專案需要您已將 AndroidX (Android 10.0) 平台安裝到您的開發環境。 這可以使用Android SDK管理員來完成。 如需 AndroidX 的詳細資訊,請參閱 中的 Xamarin.FormsAndroidX 移轉。

Android 項目接著需要數個更新才能正確建置。

Minimum TargetFrameworkVersion

Xamarin.Forms 5.0 需要 Android 專案的最低目標 Framework 版本 10.0 (AndroidX)。 您可以在 Visual Studio 或 Android .csproj 檔案中設定目標 Framework 版本:

<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.

Minimum 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 中,當目標 Framework 版本設定為 v10.0 時,Android 指令清單會自動更新為指定 targetSdkVersion API 29 的 。

自動移轉至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 之元件對應的完整清單,請參閱 github.com 上的 AndroidX 元件

拿掉 AXML 檔案

您應該從 Android 項目刪除任何 AXML 檔案,前提是它不使用自定義的 AXML 檔案。 刪除之後,應該從類別 MainActivity 中移除下列幾行:

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

重要

應更新具有自定義 AXML 檔案的 Android 專案,讓這些檔案使用 AndroidX 類型。

UWP

Xamarin.Forms 5.0 建議 UWP 專案的目標平臺版本 >= 10.0.18362.0。 您可以在 Visual Studio 或 UWP .csproj 檔案中設定目標平臺版本:

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

如果您的 UWP 專案使用較低的目標平臺版本,就會產生組建警告。