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