Udostępnij za pomocą


Inteligentniejsze pakiety NuGet Xamarin Android Support w wersjach 4/13

Informacje o bibliotekach pomocy technicznej systemu Android

Firma Google utworzyła biblioteki pomocy technicznej, aby udostępnić nowe funkcje starszym wersjom systemu Android. Ogólnie rzecz biorąc, biblioteki pomocy technicznej mają numer wersji w nazwie, czyli najniższy poziom interfejsu API systemu Android, z którym są zgodne (np. Support-v4 można używać tylko na poziomie 4 i nowszym interfejsu API. Więcej informacji znajduje się w tej dyskusji na temat rozwiązania Stack Overflow).

Dwie biblioteki pomocy technicznej: Support-v4 i Support-v13 nie mogą być używane razem w tej samej aplikacji, czyli wzajemnie się wykluczają. Jest to spowodowane tym, że Support-v13 faktycznie zawiera wszystkie typy i implementację programu Support-v4. Jeśli spróbujesz odwołać się do obu w tym samym projekcie, wystąpią zduplikowane błędy typu.

Problemy z odwoływaniem się

Od tego czasu Support-v4 stało się tak popularne, wiele bibliotek innych firm teraz zależy od niego. Zamiast tego mogą one zależeć od wersji Support-v13, ale częściej zależy to od wersji 4 , ponieważ zapewnia to aplikacjom korzystającym z tych bibliotek innych firm opcję obsługi poziomów interfejsu API aż do 4.

Jeśli biblioteka innej firmy Xamarin odwołuje się do powiązania z usługą Xamarin.Android.Support.v4.dll , każda aplikacja korzystająca z tej biblioteki musi również odwoływać się do elementu Xamarin.Android.Support.v4.dll.Support-v4 Staje się to problemem, gdy ta sama aplikacja chce również użyć niektórych funkcji z Xamarin.Android.Support.v13.dll powiązania do Support-v13. Jeśli odwołujesz się do obu powiązań, wystąpią zduplikowane błędy typu.

Zestaw powiązań typu w wersji 4

Aby obejść ten problem, utworzyliśmy specjalny Xamarin.Android.Support.v4.dll zestaw, który nie ma implementacji, ale po prostu [assembly: TypeForwardedTo (..)] atrybuty, które przekazują wszystkie Support-v4 typy do implementacji w zestawie Xamarin.Android.Support.v13.dll .

Oznacza to, że deweloper może odwołać się do tego zestawu przekazywanego typu w swojej aplikacji, który będzie spełniał odwołanie do dowolnych bibliotek innych firm, jednocześnie pozwalając Xamarin.Android.Support.v13.dll na korzystanie z Xamarin.Android.Support.v4.dll aplikacji.

Pomoc narzędzia NuGet

Deweloper może ręcznie dodać odpowiednie odwołania, ale możemy użyć narzędzia NuGet, aby ułatwić wybór odpowiedniego zestawu (normalne powiązanie w wersji 4 lub zestaw v4) podczas instalowania pakietu NuGet.

Xamarin.Android.Support.v4 Pakiet NuGet zawiera teraz następującą logikę:

Jeśli aplikacja jest przeznaczona dla interfejsu API Level 13 (Gingerbread 3.2) lub nowszego:

  • Xamarin.Android.Support.v13 Narzędzie NuGet zostanie automatycznie dodane jako zależność
  • Typ przekazywany będzie przywoływane Xamarin.Android.Support.v4.dll w projekcie

Jeśli aplikacja jest przeznaczona dla dowolnego elementu niższego niż poziom 13 interfejsu API, otrzymasz normalne Xamarin.Android.Support.v4.dll powiązanie, do którego odwołujesz się w projekcie.

Czy muszę używać wersji Support-v13?

Jeśli aplikacja jest przeznaczona dla interfejsu API Level 13 lub nowszego Xamarin Android Support-v4 i wybierzesz użycie pakietu NuGet, Xamarin Android Support v13 pakiet NuGet jest wymaganą zależnością.

Uważamy, że bardzo niewielki wzrost rozmiaru aplikacji (dwa pliki .jar różnią się o 17 kb) jest godny zgodności i mniej bólów głowy powoduje.

Jeśli jesteś nieugięty w aplikacji Support-v4 , która jest przeznaczona dla interfejsu .nupkgAPI Level 13 lub nowszego, zawsze możesz ręcznie pobrać plik , wyodrębnić go i odwołać się do zestawu.