专栏首页喵叔's 专栏1. 什么是Xamarin

1. 什么是Xamarin

Xamarin 是一个 .NET 开源的平台,主要用于通过 .NET 构建 IOS 、 Android 以及 Windows App 。利用 Xamarin 我们可以管理不同平台 APP 的共享代码与基础平台代码的通信,并且 Xamarin 上开发的 APP 是在托管环境中运行的,也就是说它会帮助我们来管理内存分配、垃圾回收等事情。Xamarin 可以让开发人员跨平台共享应用程序的代码,这样就可以使用一种编程语言开发所有平台的 App 。

Tip:编译、部署 IOS 应用程序必须在 MacOS 种进行。

零、原理

Xamarin 可以在每个平台上创建本机 UI ,并在 C# 里编写跨平台的共享业务逻辑。

1.添加功能 Xamarin 除了包含目标平台的功能,还新增了如下功能:

  • 基础 SDK 全绑定:Xamarin 包含了 IOS 、 Android 平台几乎整个基础平台 SDK 的绑定。这些绑定都是强类型,这说明可以很简单的导航和使用并提供可靠的编译时类型检查以及开发过程,此外还可以减少运行时错误以及提高程序质量。
  • 互操作性: Xamarin 可以直接调用 Object-C 、 Java 、 C 以及 C++ 所开发的库,并且可以使用声明性语法绑定本机的 Object-C 以及 Java 库。
  • 充分利用 C# 语言的优势: Xamarin 使用 C# 编写 App ,可以充分利用 C# 的并行编程、泛型以及功能性构造等。
  • 稳定的 BCL :Xamarin 开发的 App 使用的是 .NET BCL ,BCL 是大量基础类的集合,可以快速的开发 App 。
  • 优秀的 IDE :开发人员使用 Visual Studio 就可以开发 Xamarin 应用程序。
  • 跨移动平台支持: Xamarin 对 iOS、Android 和 Windows 这三个主要平台提供复杂的跨平台支持,并且可以在这三个平台共享百分之九十的代码。

2.Xamarin.Android Xamarin.Android 将 C# 编译为 IL ,启动应用程序时实时编译为本机程序集。 Xamarin.Android 开发的应用程序是运行在 Mono 环境中的,Mono 环境与 Android 运行时虚拟机并行运行。 Xamarin 会向 Android.* 和 Java.* 命名空间提供 .NET 绑定。 Mono 执行环境通过托管可调用包装器引入 Android.* 和 Java.* 命名空间,并向 Android 运行时提供 Android 可调用包装器,这使的两种环境可以相互调用代码。

3.Xamarin.IOS Xamarin.IOS 将 C# 编译为 ARM 程序集代码。 Xamarin 使用选择器向托管 C# 公开 Objective-C,并使用注册器向 Objective-C 公开托管 C# 代码。选择器和注册器共同称为“绑定”,使 Objective-C 和 C# 可以进行通信。

4.Xamarin.Essentials Xamarin.Essentials 是为本机设备功能提供跨平台 API 的库。 它和 Xamarin 一样是一种简化本机功能访问过程的抽象。 Xamarin.Essentials 提供的功能包括:

  • 设备信息
  • 文件系统
  • 加速计
  • 电话拨号程序
  • 文本到语音转换
  • 屏幕锁定

5.Xamarin.Forms Xamarin.Forms 是一个开源 UI 框架。它可以让开发人员从共享代码生成 iOS、Android 和 Windows 应用程序。 Xamarin.Forms 使用 XAML 来创建 UI 界面。这些 UI 会在不同平台上呈现为本机控件。 Xamarin.Forms 提供的功能包括:

  • XAML 用户界面语言
  • 数据绑定
  • 笔势
  • 效果
  • 样式

一、总结

这篇主要简单的介绍了一下 Xamarin 相关的知识,属于入门级别的内容。从下节开始我将的通过贯穿整个专栏的例子来讲解 Xamarin.Forms 。这里要提醒各位读者的是,这个专栏讲解的是 Xamarin.Forms 的知识,它是整个 Xamarin 的基础。后续专栏我将讲解 IOS 、Android 、 Essentials 以及 XAML 相关的内容 。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Try 和异常

    Try 以及异常在c#中是很重要的内容,很多开发人员其实并不是很了解try 和异常。在这篇文章中我将会各大家具体讲解一下Try和异常。

    喵叔
  • 闲话资源管理

    对于 .NET 开发人员来说程序的资源管理是必不可少的,要开发出一款优秀的应用就必须明白 .NET 的资源管理机制。在 .NET 中垃圾回收器 GC 帮助我们管...

    喵叔
  • char+char=number

    在面试中面试官往往会考察 char 类型的知识和随机数的知识,部分开发人员很容易就掉入了坑中,下面我们通过两个例子来讲解一下 char 和随机数中的坑。

    喵叔
  • 修改Hexo自动生成的HTML文件名

    我们在使用Hexo框架生成静态博客时,其实是将你写好的.md文件输出成HTML文件进行渲染,其中HTML的文件名称就是.md的文件名称。

    编程大道
  • 新人怎样学习嵌入式Linux?

    作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条...

    韦东山
  • SAP S/4HANA Material Fiori应用根据扩展字段搜索的实现原理

    You should first enable your extension field to be used in search scenario:

    Jerry Wang
  • 如何在SAP S/4HANA Cloud系统里创建employee

    In S4 cloud, it is not possible to create employee via tcode BP any more in back...

    Jerry Wang
  • 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!

    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。HarmonyOS是全场景操作系统。也就是说,从理论上,HarmonyOS可以在任何...

    蒙娜丽宁
  • ClickHouse之DBA运维宝典

    最近有位网友与我聊天,他是一名 DBA,问我在 ClickHouse 中有没有一些能够 “安家立命” 的运维 SQL 语句。我想对于这个问题很多朋友都会有兴趣,...

    Nauu
  • SAP S/4HANA的原生扩展字段,如何能够配到S/4CRM WebClient UI上

    Currently all AET HEADER fields are appended to structure INCL_EEW_ORDERADH_H. S...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券