Xamarin共享项目和可移植类库之间的确切区别是什么?
何时使用共享库,何时使用可移植类库?
在共享项目中编写原生功能(例如显示警报、访问相机)并将其用于Android和iOS是否可行?
能否有人给我解释一下。
Xamarin共享项目和可移植类库之间的确切区别是什么?
何时使用共享库,何时使用可移植类库?
在共享项目中编写原生功能(例如显示警报、访问相机)并将其用于Android和iOS是否可行?
能否有人给我解释一下。
#if
编译器指令包含特定于平台的代码。
当您想要访问相机时,您需要在所有目标平台的#if
块内编写访问代码。这可能会弄乱您的代码,但可以更容易地找到不同的实现方式。
了解更多: http://developer.xamarin.com/guides/cross-platform/application_fundamentals/shared_projects/
便携式类库(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/#Portable_Class_Libraries
我个人更喜欢PCLs,因为代码更易于阅读而无需任何编译器指令。使用MVVMCross,您可以通过NuGet使用许多插件。因此,您不需要编写自己的类来访问相机、显示警报等。