Xamarin.Forms 入门学习路线与完整指南

Viewed 0

Xamarin.Forms 入门学习路线与完整指南

Xamarin 介绍

Xamarin 是一套跨平台解决方案,旨在使用 C# 语言创建原生的 iOS、Android、Mac 和 Windows 应用。Xamarin 具有三个主要优势:

  1. 原生应用性能:Xamarin 应用最终使用原生控件和 API,因此其体验和效率与原生应用相近。
  2. 熟悉的 C# 语法:开发者可以使用 C# 完成在 Objective-C、Swift 或 Java 中能做的任何事情,同时享受强大的 IDE 智能提示、Lambda 表达式、更自然的异步语法(Task、Async)以及 NuGet 快速获取组件。
  3. 代码共享:在不同平台上使用同一种语言可实现代码共享,各平台大约可共享 75% 的 API 和数据结构代码。如果使用 Xamarin.Forms 创建 UI,几乎可以共享 100% 的代码。

最终的思想:共享代码

Xamarin 宣称的最大优势是在多个平台上使用同一种语言共享代码。实现技术主要有三种:

  1. Shared Projects:可以添加供多个平台公用的代码、图片和多媒体文件等,通过条件编译符(如 #if __ANDROID__)指定特定平台的编译输出。
  2. Portable Class Libraries (PCLs):PCLs 库可直接被各个平台引用,许多流行库如 SQLite 和 ReactiveUI 都支持 PCL。
  3. Xamarin.Forms:允许使用 C# 代码创建在三个平台上共享的 UI 界面,提供超过 40 个控件,这些控件在运行时映射为原生控件。

Xamarin 安装指南

工欲善其事,必先利其器。Xamarin 的安装过程可参考外部资源,例如简书上的详细文章。以下是 Windows 和 Mac 下的大体安装流程。

Windows 安装流程:

  1. 安装 Visual Studio(推荐 VS2013)。
  2. 安装 JDK 并修改环境变量。
  3. 安装 Android SDK,建议改为国内镜像以加速下载。
  4. 安装 NDK。
  5. 安装 GTK。
  6. 安装 Xamarin.VisualStudio。
  7. (可选)安装 Xamarin Studio。

注意:Xamarin.VisualStudio 和 Xamarin Studio 的版本号必须与 Mac 端相匹配,并与破解补丁版本兼容。后续升级通常只需更新这两个组件即可。

关于 Android 模拟器,推荐使用专为游戏玩家设计的海马玩模拟器,性能流畅,但首次使用时需手动将横屏调整为竖屏。

Mac 安装流程(仅开发 iOS 程序):

  1. 安装 MonoFramework。
  2. 安装 Monotouch。
  3. 安装 Xamarin Studio。

需确保三者版本一一对应。

商业证书与破解:
Xamarin 的商业授权价格昂贵,通常针对单用户单设备平台。若需用于 Android 和 iOS 两个平台,价格需翻倍。安装后若无商业证书,可按照相关文章进行破解试用。破解分为离线破解和在线破解:

  • 离线破解流程:获取机器特征码,通过邮件申请授权证书(免费试用期为1个月,付费20元可获得10年有效期),将证书和破解文件拷贝到指定目录。
  • 在线破解流程:邮件申请开通在线服务,修改 hosts 文件,导入 SSL 证书,最后登录 Xamarin 账号。

请注意,试用结束后应购买官方商业授权。

Xamarin.Forms 程序结构

典型的 Xamarin.Forms 程序目录结构包括三个特定平台工程(iOS、Android、Windows),以及一个共享工程(如 PCL 或 SAP 工程)。共享工程引用核心库 Xamarin.Forms.Core 和 Xamarin.Forms.Xaml,而特定平台工程则引用对应的平台库,以便使用平台特定 API。

Xamarin.Forms 官方 Demo

Xamarin 提供了大量学习用 Demo,官方地址为 https://developer.xamarin.com/samples-all/,但网速较慢。GitHub 上有更全的 Forms Demo:https://github.com/xamarin/xamarin-forms-samples。

以下几个 Demo 尤为重要:

  • CustomRenderers:学习如何重写 Forms 中原生控件的样式。
  • Forms2Native 和 Native2Forms:演示 Forms 页面与原生页面之间的跳转。
  • FormsGallery:展示几乎所有 Forms 控件。
  • Navigation:讲解 Forms 应用的页面导航。
  • UsingDependencyService:演示如何使用依赖服务在 Forms 中调用原生方法。
  • XamFormsImageResize:处理图片尺寸相关操作。

Xamarin.Forms 官方文档

Xamarin 官方提供了一套完整的在线学习指南,地址为 https://developer.xamarin.com/guides/xamarin-forms/getting-started/,涵盖从创建第一个程序到应用发布的全部内容。此外,还有免费离线教材可供下载:https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/,随书 Demo 地址为 https://github.com/xamarin/xamarin-forms-book-preview-2。该教材支持 Forms 1.3 以上版本,并持续更新。

教材目录共24章,对重要章节简介如下:

  • 第7-8章:比较 XAML 与代码创建 UI 的两种方式,以及如何协同工作。
  • 第10章:介绍 XAML 扩展标记语言。
  • 第11和16章:深入讲解数据绑定的基础知识。
  • 第18章:介绍 MVVM 开发模式。
  • 第3、5、13章:分别深入文本处理、尺寸处理以及图片使用,涉及移动开发中的像素、DPI、DIU 等概念。
  • 第19章:讲解集合控件(如列表)的使用。
  • 第20章:介绍异步文件 I/O 操作。

其中,第5章重点讨论了移动平台下的尺寸问题,强调应使用字体枚举和比例布局,而非关注具体数值。

Forms 中 UI 布局细节

在 Xamarin.Forms 中设计布局可参考网页开发的盒模型思想,每个元素视为由内容区、内边距、边框和外边距组成的盒子。需注意,Forms 中没有标准的 margin 概念,通常通过嵌套 ContentView 并设置其 Padding 属性来模拟外边距。

Forms 中易混淆的类包括:

  • ContentView:继承自 Layout,用于包裹内容视图,其 Padding 可视为外边距。
  • Frame:继承自 ContentView,常用于定义页面中的区块,具有边框和阴影属性。
  • BoxView:矩形填充区,常用于绘制分割线。

APP 的发布

发布流程涉及平台特定步骤:

  • Android 发布:参考官方教程,但若通过网址直接分发,则无需提交到应用商店。
  • iOS 发布:需处理开发者证书、App Store 证书、打包 IPA、提交到 iTunes Connect 等环节,详细教程可参考 Xamarin 文档。

Xamarin 组件商店的使用

Xamarin 拥有自己的组件商店(https://components.xamarin.com/),提供免费和收费组件。但访问速度较慢,建议优先在 GitHub 上搜索相关资源。Xamarin 官方维护的插件目录(https://github.com/xamarin/plugins)包含常用插件的 NuGet 和 GitHub 地址。

GitHub 资源搜索

在 GitHub 上以 “Xamarin.Forms” 为关键词搜索,可找到大量资源,例如:

  • Xamarin-Forms-Labs:包含 IOC 容器、序列化组件、缓存和 UI 控件等,但多数控件处于 Beta 状态,使用时需注意 Bug。
  • XamarinFormsGestureRecognizers:用于实现手势操作。

IDE 调试技巧

  • Android 调试:在 Windows 上启动模拟器(如海马玩),设置 Android 项目为启动项并附加到模拟器;真机通过 USB 连接后同样方式调试。
  • iOS 调试:需在 Mac 上打开 BuildHost,Visual Studio 设置 iOS 为启动项并连接 BuildHost;真机只能连接在 Mac 上。

常用插件

Xamarin.Forms 插件使用方式统一:PCL 工程引用带 Abstractions 后缀的库(定义接口)和不带后缀的库(创建实现),平台工程引用具体实现库。常用插件包括:

  • Corcav.Behaviors:帮助绑定列表项命令。
  • EZ-Compress-for-Xamarin:压缩图片流。
  • MvvmLight:支持 MVVM 开发模式。
  • Xam.Plugins.Messaging:提供打电话、发短信、发邮件功能。
  • Media.Plugin:拍照和选照片。
  • PCLStorage:跨平台异步 I/O。
  • Vibrate:手机震动功能。
  • Toasts.Forms.Plugin:顶部彩色浮动提示框。

UI 组件方面,常用圆形图片、Checkbox、RadioButton 等,部分基于 Xamarin-Forms-Labs 修改。使用 Android 插件时,需在 AndroidManifest.xml 中添加相应权限。

Xamarin 官方论坛

遇到疑难问题时,可访问 Xamarin 官方论坛(http://forums.xamarin.com/)搜索,大部分问题已有解答。

未涉及内容

本指南未涵盖 GIS 相关内容,也未深入介绍平台特定 API。对于平台特定知识(如 Tab 页样式差异),解决难度较大,建议在新应用中纯手写 Tab 页面以避免兼容性问题。

0 Answers