更聰明的 Xamarin Android 支援 v4 / v13 NuGet 套件
關於 Android 支援連結庫
Google 已建立支持連結庫,讓舊版 Android 提供新功能。 一般而言,支持連結庫的名稱會提供版本號碼,這是與它們相容的最低 Android API 層級(例如:Support-v4 只能用於 API 層級 4 和更高層級。此 Stack Overflow 討論中的詳細資訊。
其中兩個支持連結庫: Support-v4
且 Support-v13
無法在相同的應用程式中一起使用,也就是說,它們互斥。 這是因為 Support-v13
實際上包含 的所有型別和 實作 Support-v4
。 如果您嘗試並參考相同專案中的兩者,您將會遇到重複的類型錯誤。
參考問題
由於 Support-v4
變得如此受歡迎,現在很多第三方連結庫都相依於它。 他們可以選擇改為相 依於 Support-v13,但相依於 v4 比較常見,因為這可讓任何使用這些第三方連結庫的應用程式,一路支援 API 層級的選項降到 4 。
如果 Xamarin 第三方連結庫參考系 Xamarin.Android.Support.v4.dll
結至 Support-v4
,則任何使用此連結庫的應用程式也必須參考 Xamarin.Android.Support.v4.dll
。 當同一個應用程式也想要使用系 Xamarin.Android.Support.v13.dll
結至 Support-v13
的一些功能時,這會成為問題。 如果您參考這兩個系結,您將會遇到重複的類型錯誤。
類型轉送 v4 系結元件
為了解決這個問題,我們建立了一個沒有實作的特殊 Xamarin.Android.Support.v4.dll
元件,而只是 [assembly: TypeForwardedTo (..)]
將所有 Support-v4
類型轉送至元件內 Xamarin.Android.Support.v13.dll
實作的屬性。
這表示開發人員可以在其應用程式中參考此 類型轉 送元件,以滿足任何第三方連結庫的參考 Xamarin.Android.Support.v4.dll
,同時仍允許 Xamarin.Android.Support.v13.dll
在應用程式中使用。
NuGet 協助
雖然開發人員可以在安裝 NuGet 套件時,手動新增所需的正確參考,但我們可以使用 NuGet 來協助選擇正確的元件(一般 v4 系結或類型轉送的 v4 元件)。
因此, Xamarin.Android.Support.v4
NuGet 套件現在包含下列邏輯:
如果您的應用程式是以 API 層級 13 為目標(姜餅 3.2) 或更高版本:
Xamarin.Android.Support.v13
NuGet 會自動新增為相依性- 系統會在項目中參考類型轉送
Xamarin.Android.Support.v4.dll
如果您的應用程式以低於 API 層級 13 的任何項目為目標,您將會取得專案中參考的一般 Xamarin.Android.Support.v4.dll
系結。
我是否必須使用 Support-v13?
如果您的應用程式是以 API 層級 13 或更新版本為目標,而且您選擇使用 Xamarin Android Support-v4
NuGet 套件,則 Xamarin Android Support v13
NuGet 套件是必要的相依性。
我們覺得應用程式大小(這兩個.jar檔案不同 17 kb)非常值得相容性,而且導致頭痛較少。
如果您堅持在以 API 層級 13 或更新版本為目標的應用程式中使用 Support-v4
,您一律可以手動下載 .nupkg
、擷取它,以及參考元件。