Xamarin 是微软旗下基于 .NET/C# 的跨平台移动开发框架,2011 年面世,2016 年被微软收购,已于 2024-05-01 终止支持,继任者是 .NET MAUI Xamarin。它让你用 C# 写 iOS/Android/macOS 原生应用,共享业务逻辑,原生性能。


一、Xamarin 的两大形态

1. Xamarin.Native(Xamarin.iOS / Xamarin.Android)
  • 完全原生:直接调用 iOS/Android 原生 API,用 C# 写原生 UI,性能接近原生(Swift/Kotlin)
  • 适用场景:高度定制 UI、复杂交互、需深度调用平台能力(蓝牙、相机、传感器)。
  • 缺点:UI 代码无法共享,iOS/Android 需分别写界面,仅业务逻辑共享。
2. Xamarin.Forms(跨平台 UI)


二、核心原理


三、与 .NET 6/.NET MAUI 的关系

表格

维度 Xamarin .NET MAUI(.NET 6+)
支持状态 2024-05-01 终止支持 活跃开发,长期支持
项目结构 多项目(iOS/Android/ 共享) 单项目,统一配置
性能 一般(渲染器模式) 显著提升(Handlers 架构、源生成器)
平台覆盖 iOS/Android/macOS iOS/Android/macOS/Windows
.NET 集成 独立 Xamarin SDK 原生集成 .NET 6+,共享 BCL


四、适用场景(历史参考)


五、总结

Xamarin 是 .NET 移动开发的里程碑:首次让 C# 开发者用一套栈覆盖 iOS/Android,奠定了 .NET 统一战略的基础。如今已被 .NET MAUI(.NET 6+) 全面取代,新项目直接用 MAUI,旧项目建议规划迁移。

  • 共享 UI + 共享逻辑:用 XAML + C# 写一套 UI,运行时渲染为各平台原生控件,代码复用率 70%–90%
  • 优点:开发快、一套代码多端、VS 全集成。
  • 缺点:复杂 UI / 动画性能略差、原生平台特性需用 “自定义渲染器” 扩展。
  • 绑定层(Binding):C# 与平台原生 API(Objective-C/Java)的双向映射,托管代码调用原生功能。
  • 运行时:Mono 运行时嵌入 App,负责垃圾回收、内存管理、JIT 编译(iOS 因审核限制需 AOT 预编译)。
  • 编译产物:Android 生成 .apk,iOS 生成 .ipa原生包、非混合应用
  • Xamarin 是 .NET MAUI 的前身:.NET MAUI 由 Xamarin.Forms 演进而来,并入 .NET 6+ 统一生态,2022 年正式发布。
  • 关键区别
  • 迁移建议:微软提供升级助手,可将 Xamarin.Forms 项目平滑迁移至 .NET MAUI,自定义渲染器需改为 Handler
  • ✅ 企业级移动应用(ERP、CRM、内部工具)
  • ✅ 数据驱动、表单密集型 App
  • ✅ 团队熟悉 C#/.NET,不想学习 Swift/Kotlin
  • ✅ 需快速交付、多端一致性要求高

更多推荐