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

O knihovnách podpory Androidu

Společnost Google vytvořila knihovny podpory, které zpřístupnily nové funkce starším verzím Androidu. Obecně platí, že knihovny podpory mají v názvu číslo verze, což je nejnižší úroveň rozhraní Android API, se kterou jsou kompatibilní (např. Support-v4 lze použít pouze na úrovni rozhraní API 4 a vyšší. Další informace najdete v této diskuzi o Stack Overflow).

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

Problémy s odkazováním

Vzhledem k tomu Support-v4 , že se stala tak populární, na ní teď závisí mnoho knihoven třetích stran. Místo toho se mohli rozhodli záviset na podpoře verze 13, ale je častější, že závisí na verzi 4 , protože všechny aplikace, které používají tyto knihovny třetích stran, mají možnost podporovat úrovně rozhraní API až do 4.

Pokud knihovna Xamarinu třetí strany odkazuje na Xamarin.Android.Support.v4.dll vazbu Support-v4, všechny aplikace, které tuto knihovnu používají, musí také odkazovat Xamarin.Android.Support.v4.dll. To se stane problém, když stejná aplikace také chce použít 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.

Sestavení vazby s předáváním typu v4

Abychom tento problém obejít, vytvořili jsme speciální Xamarin.Android.Support.v4.dll sestavení, které nemá žádnou implementaci, ale jednoduše [assembly: TypeForwardedTo (..)] atributy, které předávají všechny Support-v4 typy implementaci v rámci Xamarin.Android.Support.v13.dll sestavení.

To znamená, že vývojář může odkazovat na toto typově přesměrované sestavení ve své aplikaci, které bude splňovat odkaz na Xamarin.Android.Support.v4.dll jakékoli knihovny třetích stran, a zároveň umožní Xamarin.Android.Support.v13.dll použití v aplikaci.

Pomoc NuGet

I když vývojář může ručně přidat správné odkazy potřebné, můžeme při instalaci balíčku NuGet použít NuGet k výběru správného sestavení (buď normální vazby v4 , nebo sestavení přeposlaného typu v4 ).

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

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

  • Xamarin.Android.Support.v13 NuGet se automaticky přidá jako závislost.
  • Typ přeposlanýXamarin.Android.Support.v4.dll bude odkazován v projektu.

Pokud vaše aplikace cílí na cokoli, co je nižší než rozhraní API level 13, získáte v projektu odkazovanou běžnou Xamarin.Android.Support.v4.dll vazbu.

Musím použít support-v13?

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

Cítíme velmi menší zvětšení velikosti aplikace (dva .jar soubory se liší o 17 kB) je dobře stojí za kompatibilitu a méně bolesti hlavy to má za následek.

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