中的AndroidX移轉 Xamarin.Forms

AndroidX 取代 Android 支援連結庫。 本文說明 AndroidX 存在的原因、其影響 Xamarin.Forms方式,以及如何移轉應用程式以使用 AndroidX 連結庫。

重要

如果您要將應用程式移轉至 Xamarin.Forms 5.0,請參閱 如何? 將我的應用程式移轉至 Xamarin.Forms 5.0?

AndroidX 的歷程記錄

Android 支援連結庫已建立,可在舊版 Android 上提供較新的功能。 這是一個相容性層,可讓開發人員使用所有 Android 作業系統版本上可能不存在的功能,並且具有舊版的正常後援。 支持連結庫也包含便利性和協助程序類別、偵錯和公用程式工具,以及相依於其他支持連結庫類別運作的複雜類別。

雖然支持連結庫原本是單一二進位檔,但它已成長並演變成一套連結庫,這對新式應用程式開發而言幾乎至關重要。 以下是支援連結庫中的一些常用功能:

  • Fragment支持類別。
  • RecyclerView,用於管理長清單。
  • 具有超過 65,536 個方法之應用程式的 Multidex 支援。
  • ActivityCompat 類別。

AndroidX 是不再維護的支持連結庫的取代專案,所有新的連結庫開發都會發生在 AndroidX 連結庫中。 AndroidX 是重新設計的連結庫,其使用語意版本控制、更清楚的套件名稱,以及更好的常見應用程式架構模式支援。 AndroidX 1.0.0 版是二進位檔,相當於支持連結庫 28.0.0 版。 如需從支持連結庫到 AndroidX 之類別對應的完整清單,請參閱 支援連結庫類別對應 developer.android.com。

Google 建立了名為 Jetifier 與 AndroidX 的移轉程式。 Jetifier 會在建置程式期間檢查 jar 位元組程式代碼,並將應用程式程式碼和相依性中的支持連結庫參考重新對應至其 AndroidX 對等專案。

Xamarin.Forms在應用程式中,就像在Android Java 應用程式中一樣,jar 相依性必須移轉至AndroidX。 不過,也必須移轉 Xamarin 系結,以指向正確的基礎 jar 檔案。 Xamarin.Forms 已新增 4.5 版中自動 AndroidX 移轉的支援。

如需 AndroidX 的詳細資訊,請參閱 developer.android.com 上的 AndroidX 概觀

中的自動移轉 Xamarin.Forms

若要自動移轉至 AndroidX,Android Xamarin.Forms 平台項目必須:

  • 以 Android API 第 29 版或更新版本為目標。
  • 使用 Xamarin.Forms 4.5 版或更新版本。
  • 在 Android 支援連結庫上具有直接或可轉移的相依性。

在專案中確認這些設定之後,請在 Visual Studio 2019 中建置 Android 應用程式。 在建置程式期間,會檢查中繼語言 (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 套件可以透過 Visual Studio 中的 NuGet 封裝管理員 安裝,或藉由編輯 Android .csproj 檔案來安裝,以包含PackageReference錯誤中列出的 XML 專案。

解析遺漏的套件之後,重建專案會載入遺漏的套件,並使用AndroidX相依性編譯您的專案,而不是支持連結庫相依性。

注意

如果您的專案和專案相依性未參考 Android 支援連結庫,則移轉程式不會執行任何動作且不會執行。