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 相关的内容 。