Inteligentnější balíčky NuGet pro podporu Xamarin Androidu verze 4 nebo 13

Informace o knihovnách podpory pro Android

Společnost Google vytvořila knihovny podpory, aby nové funkce byly dostupné pro starší verze Androidu. Knihovny podpory mají obecně ve svém názvu číslo verze, což je nejnižší úroveň rozhraní ANDROID API, se kterou jsou kompatibilní (např. Support-v4 je možné použít pouze na úrovni 4 a vyšší rozhraní API. Další informace v této Stack Overflow diskuzi).

Dvě z podpůrných knihoven: a nelze je použít společně ve stejné aplikaci, to znamená, že se vzájemně Support-v4Support-v13 vylučují. Je to Support-v13 proto, že ve skutečnosti obsahuje všechny typy a implementaci Support-v4 . Pokud se pokusíte odkazovat na obojí ve stejném projektu, dojde k chybám duplicitního typu.

Problémy s odkazováním

Vzhledem k tomu, že se stal tak populárním, na ní teď závisí spousta knihoven Support-v4 třetích stran. Místo toho se rozhodli, že budou záviset na Support-v13, ale obvyklejší je záviset na v4, protože to dává aplikacím, které používají tyto knihovny třetích stran, možnost podpory úrovní rozhraní API až na 4.

Pokud knihovna třetí strany Xamarinu odkazuje na vazbu na , musí každá aplikace, která tuto knihovnu Xamarin.Android.Support.v4.dllSupport-v4 používá, odkazovat také na Xamarin.Android.Support.v4.dll . To se stává problémem, když stejná aplikace také chce používat některé funkce z vazby Xamarin.Android.Support.v13.dll na Support-v13 . Pokud odkazujete na obě vazby, dojde k chybám duplicitního typu.

Type-Forwarded vazby sestavení v4

Pro řešení tohoto problému jsme vytvořili speciální sestavení, které nemá žádnou implementaci, ale jednoduše atributy, které přeposílá všechny typy do Xamarin.Android.Support.v4.dll[assembly: TypeForwardedTo (..)] implementace v rámci Support-v4Xamarin.Android.Support.v13.dll sestavení.

To znamená, že vývojář může odkazovat na toto sestavení předávkované typem ve své aplikaci, které bude vyhovovat odkazu na jakékoli knihovny třetích stran a zároveň bude možné ho v aplikaci Xamarin.Android.Support.v13.dll používat.

NuGet asistence

Vývojář sice může ručně přidat správné odkazy, ale při instalaci balíčku NuGet můžeme použít NuGet, které nám pomůže zvolit správné sestavení (buď normální vazba v4, nebo sestavení v4 s předáváním typu).

Balíček NuGet Xamarin.Android.Support.v4 teď obsahuje následující logiku:

Pokud vaše aplikace cílí na rozhraní API úrovně 13 (Nambread 3.2) nebo vyšší:

  • Xamarin.Android.Support.v13NuGet se automaticky přidá jako závislost.
  • Na typ předáte odkaz v projektu.

Pokud vaše aplikace cílí na něco nižšího než úroveň 13 rozhraní API, zobrazí se normální vazba, na kterou se Xamarin.Android.Support.v4.dll odkazuje ve vašem projektu.

Musím použít Support-v13?

Pokud vaše aplikace cílí na rozhraní API úrovně 13 nebo vyšší a vy se rozhodnete použít balíček NuGet, pak je NuGet Xamarin Android Support-v4Xamarin Android Support v13 závislostí.

Máme pocit, že velmi malý nárůst velikosti aplikace (dva soubory .jar se liší o 17 kB) stojí za kompatibilitu a výsledkem je méně chyb.

Pokud jste o použití v aplikaci, která cílí na úroveň 13 nebo vyšší rozhraní API, můžete vždy ručně stáhnout , extrahovat ji a odkazovat Support-v4.nupkg na sestavení.