据我所知,Xamarin将c#转换为二进制文件并使用mtouch来实现这一点。
LLVM是将Objective-C转换为二进制代码的XCode方式。
因此Xamarin不使用LLVM。
如果我错了,请纠正我
答案 0 :(得分:5)
Xamarin.iOS项目可选择使用LLVM编译器。看看here。您可以通过选中Xamarin.iOS项目属性中的框来启用它。
Xamarin.iOS文档有一个有用的图形,显示了一般编译过程here中的LLVM步骤。在文本中谈论图形是说你的C#代码如何编译成IL。使用真正的iOS设备时,不允许使用JIT,因此AOT编译器用于托管代码,可选地,LLVM用于进一步优化代码。
Xamarin.Android还有一个可选的LLVM编译器,但它需要一个或更高的营业执照才能访问。更多信息here。
在Android上JIT在设备上是允许的,但您可以选择使用AOT编译器以减少启动时间,但代价是增加您的APK大小。如果启用AOT,也可以启用LLVM。虽然在Android上有关此问题的警告是,他们暂时禁用了UI选项(但仍然允许您手动更改.csproj
文件中的设置)并且他们已经说过这些功能充其量是实验性的。我不知道状态或影响或他们禁用Android的这些选项。