您在Xamrin构建中执行的C#代码是什么?

时间:2017-05-15 10:39:15

标签: xamarin

我已经阅读了很多关于Xamarin的文档,我的理解是它通过C#和.NET公开了每个平台上的本机API,这种方式提供了一种一对一的绑定。生成的本机构建包含一些适用的.NET库(基于链接器优化)。

但是,我似乎无法找到有关本机构建本身实际发生情况的任何信息。

假设我的理解是正确的,我的问题是: 在本机构建中,您编写的代码是否通过调用构建中包含的本机.NET函数调用本机API函数?

1 个答案:

答案 0 :(得分:2)

简短的回答是:是的,它通过您已经熟悉的绑定概念,通过在Mono上运行的.NET代码调用本机API。

Xamarin使用这些绑定从您的C#代码调用本机代码。根据您运行的平台,存在一些差异。

<强>的iOS

您的IPA文件将包含两件事:

  • .NET代码的可执行文件(AOT编译),通过Mono运行时
  • 运行
  • 使用objective-C运行时的本机库。 .NET代码通过绑定调用这些库/ API。

Mono运行时和Objective-C运行时都在类UNIX的内核上运行。

请查看this Xamarin iOS architecture documentation以获得更详尽的解释。

<强>的Android

Android的理解和解释要复杂一些。这是因为某些API仅通过Android Runtime API公开。

Android中的绑定正在通过以下概念进行:

  • &#34; Android Callable Wrappers&#34; (Android Runtime to Mono)
  • &#34;托管可调用包装器&#34; (绑定到Android Runtime API&#39; s)

The Xamarin Android architecture documentation非常详细地解释了这些概念和内部运作。