Aracılığıyla paylaş


Akıllı Xamarin Android Desteği v4 / v13 NuGet Paketleri

Android Destek Kitaplıkları Hakkında

Google, yeni özellikleri Android'in eski sürümleri için kullanılabilir hale getirmek için destek kitaplıkları oluşturmuştur. Genel olarak, Destek Kitaplıklarına kendi adlarında uyumlu oldukları en düşük Android API Düzeyi olan bir sürüm numarası verilir (örneğin: Support-v4 yalnızca API Düzeyi 4 ve üzerinde kullanılabilir. Bu Stack Overflow tartışması hakkında daha fazla bilgi).

Destek kitaplıklarından ikisi: Support-v4 ve Support-v13 aynı uygulamada birlikte kullanılamaz, yani birbirini dışlar. Bunun nedeni Support-v13 , aslında tüm türlerini ve uygulamasını içermesidir Support-v4. Aynı projede her ikisini de dener ve başvurursanız yinelenen tür hatalarıyla karşılaşırsınız.

Başvuru ile ilgili sorunlar

Bu kadar popüler hale geldikten sonra Support-v4 , birçok üçüncü taraf kitaplığı artık buna bağımlıdır. Bunun yerine Support-v13'e bağımlı olmayı seçebilirlerdi, ancak bu üçüncü taraf kitaplıklarını kullanan tüm uygulamalara API düzeylerini 4'e kadar destekleme seçeneği sağladığından v4'e bağımlı olmak daha yaygındır.

Xamarin 3. taraf kitaplığı bağlamaya başvuruyorsaXamarin.Android.Support.v4.dll, bu kitaplığı kullanan tüm uygulamalar da öğesine başvurmalıdırXamarin.Android.Support.v4.dll.Support-v4 Bu sorun, aynı uygulama bağlamadan Support-v13bazı işlevleri Xamarin.Android.Support.v13.dll de kullanmak istediğinde bir sorun haline gelir. Her iki bağlamaya da başvurursanız, yinelenen tür hatalarıyla karşılaşırsınız.

Tür İletilmiş v4 Bağlama Derlemesi

Bu sorunu geçici olarak çözmek için uygulaması olmayan özel Xamarin.Android.Support.v4.dll bir derleme oluşturduk, ancak yalnızca [assembly: TypeForwardedTo (..)] tüm türleri derleme içindeki Support-v4 Xamarin.Android.Support.v13.dll uygulamaya ileden öznitelikler oluşturduk.

Bu, bir geliştiricinin kendi uygulamasındaki bu tür iletilen derlemeye Xamarin.Android.Support.v4.dll başvurabileceği ve bu derlemenin 3. taraf kitaplıkları tarafından başvuruyu karşılayıp uygulamada kullanılmaya devam edeceği Xamarin.Android.Support.v13.dll anlamına gelir.

NuGet Yardımı

Bir geliştirici gerekli doğru başvuruları el ile ekleyebilse de, NuGet paketi yüklendiğinde doğru derlemeyi (normal v4 bağlaması veya tür iletilen v4 derlemesi) seçmenize yardımcı olması için NuGet'i kullanabiliriz.

Bu nedenle, Xamarin.Android.Support.v4 NuGet paketi artık aşağıdaki mantığı içerir:

Uygulamanız API Düzey 13 (Zencefilli kurabiye 3.2) veya üzerini hedefleiyorsa:

  • Xamarin.Android.Support.v13 NuGet otomatik olarak bağımlılık olarak eklenir
  • Projede iletilen Xamarin.Android.Support.v4.dll türe başvurulacaktır

Uygulamanız API Düzeyi 13'ten düşük bir şeyi hedeflediyse projenizde başvuruda bulunan normal Xamarin.Android.Support.v4.dll bağlamayı alırsınız.

Support-v13 kullanmam gerekiyor mu?

Uygulamanız API Düzey 13 veya üzerini hedeflediyse ve NuGet paketini kullanmayı Xamarin Android Support-v4 seçerseniz, Xamarin Android Support v13 NuGet paketi gerekli bir bağımlılıktır.

Uygulama boyutundaki çok küçük artışın (iki .jar dosya 17 kb'ye kadar farklılık gösterir) uyumluluk ve sonuç olarak daha az baş ağrısına değer olduğunu hissediyoruz.

API Düzeyi 13 veya üzerini hedefleyen bir uygulamada kullanma Support-v4 konusunda kararlıysanız, istediğiniz zaman el ile indirebilir .nupkg, ayıklayabilir ve derlemeye başvurabilirsiniz.