Совместная библиотека Xamarin и PCL

В чем разница между общим проектом xamarin и переносимой библиотекой классов?

Когда использовать разделяемую библиотеку и когда использовать переносную библиотеку классов?

Возможно ли написать нативную функциональность в общих проектах, таких как отображение оповещений, доступ к камере и использовать их как для Android, так и для iOS?

Может кто-нибудь, пожалуйста, объясните мне.

1 ответ

Решение
  • В общих проектах каждый файл кода будет компилироваться для каждого места назначения (Android, iOS, Windows Phone и т. Д.). Вы можете включить специфичный для платформы код, используя #if директивы компилятора. Если вы хотите получить доступ к камере, вам нужно написать код доступа внутри #if блок для всех предназначенных платформ. Это может испортить ваш код, но может быть проще найти различные реализации. Узнайте больше: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/
  • Protable Class Libraries (PCL) скомпилированы на основе общего подмножества.NET, которое совместимо со всеми желаемыми платформами. Таким образом, вы можете получить доступ System.Net.Http но вы не можете получить доступ к какой-либо платформе конкретного кода. Если вы хотите получить доступ к камере внутри кода PCL, то вам нужно получить к ней доступ через обобщенный интерфейс посредством внедрения зависимостей. Есть несколько довольно хороших фреймворков, помогающих вам достичь этой цели. Одним из самых известных является MVVMCross ( https://github.com/MvvmCross/MvvmCross/wiki). Узнайте больше о PCL: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/

Я лично перехожу на PCL, потому что код гораздо легче читать без каких-либо директив компилятора. Используя MVVMCross вы можете использовать множество плагинов через NuGet. Так что вам не нужно писать свои собственные классы для доступа к камере, показывать предупреждения и т. Д.

Другие вопросы по тегам