跨平台APP开发框架:Flutter与Xamarin之比较
原生移动APP开发的缺点
传统的移动APP开发速度较慢且成本较高,因为企业必须为每个平台开发单独的APP,并且每个工具包都有不同的开发团队。现在,我们拥有跨平台的移动开发工具,可以帮助企业缩短开发时间、降低维护成本并覆盖更多用户。跨平台移动开发简单地意味着构建在多个平台上运行的移动应用程序。如今,开发人员可以使用各种跨平台框架,包括 Intel XDK、Xamarin、Cordova 和 Flutter 等。在本文中,我们将重点关注两个框架 - Xamarin 和 Flutter 框架 - 比较每个框架的功能、优点和缺点,以帮助开发人员决定何时使用其中一个。您还可以查看我们对 Xamarin、React Native 和 Ionic 平台的比较。
Xamarin 和 Flutter 框架概述
Xamarin 可以说是微软管理的最流行的开源开发技术之一。它使用C#语言开发Android、iOS和Windows Mobile的移动应用程序。 Xamarin 使开发人员能够访问本机 Android 和 iOS API,并通过 Xamarin 测试云提供共享 C# 代码库和应用程序测试。 Xamarin 由 Mono 背后的开发人员于 2011 年创建,使用 CLI(公共语言接口)和公共定义语言(也称为 Microsoft .NET)。 Microsoft 于 2016 年收购了 Xamarin,Xamarin SDK 已成为开源平台和 Xamarin Visual Studio IDE 的组成部分。为了充分利用 Xamarin 的功能,除了 C# 之外,开发人员还需要了解一些 iOS 和 Android 知识。
Flutter 是由 Google 开发的免费开源跨平台平台,允许开发人员创建适用于 Android 和 iOS 的移动应用程序。该框架使用 Google 的 Dart 编程语言和轻量级 C++ 引擎。与 Xamarin 类似,它提供单一代码库。该框架提供了用于 2D 渲染、模拟、动画和绘画的 API 和 SDK,并允许使用现有的 Swift、Objective C 和 Java 代码。它带有 Machine Design Widgets,也是 Google 产品。
颤振与颤振与Xamarin相比,不同的专家对这两个框架有不同的看法。 Visual Studio 杂志的 David Ramel 指出,这些比较始于 2015 年,当时 Google 首次发布了 Flutter,但在 2018 年 MWC 正式发布后,这种比较加剧了。 目前,Xamarin 更受开发者欢迎,Stack Overflow 2018 调查受访者中有 % 表示他们使用 Xamarin,而微软称他们有 1 名 Xamarin 工程师,400 万,Flutter 从未将他们列入名单。 Flutter 社区从未如此庞大。然而,一些工程师认为 Flutter 是 Xamarin 的替代品。 下面我们就来看看这两个系统的主要特点和特点。尽管本文中的概念没有完全定义,但它会给您一些关于这两个系统的想法。 可移植性 Flutter 针对 Android 和 iOS 开发,而 Xamarin 支持 Android、iOS 和 Windows 平台(即 Windows 10 [UWP]、Windows Legacy [WPF] APP)以及 MacOS APP。更大的生态系统使 Xamarin 比 Flutter 更具优势。 Flutter APP 无法在 Windows 移动平台上运行并不是一个很大的缺点,Statista 最近的一项调查显示,目前约有 % 的手机运行在 Android 或 iOS 上。但是,当您想要开发 Windows 移动应用程序时,Xamarin 适合所有人。 Flutter 与 32 位操作系统设备不兼容。因此,举例来说,如果您打算承保 iPhone 5 这样的旧手机,那么 Xamarin 是更好的选择。 编程语言 Xamarin 使用流行并被开发人员使用的 C#。如果您已经具备 C# 和 .NET 技能,则可以立即使用 Xamarin。如果您充分利用的话,您可以在 Xamarin 中重用高达 96% 的 C# 代码。 Flutter 使用相对较新且不太流行的 Dart 语言。但是,如果您有 Java、Java 和 C++ 等 OOP 语言的经验,那么学习 Dart 不会有问题,因为它使用相同的方法和范例。 社区支持 Xamarin 已经存在很长时间了,并且拥有经验丰富的支持社区,愿意与其他开发人员分享他们的知识。在 Xamarin 论坛中,专门的开发人员互相帮助,分享他们的代码和经验。该平台还得到了微软的支持,这对于解决常见问题来说是一个很大的优势。 Microsoft 为其所有 Xamarin 和 .NET 产品提供了良好的最新文档。 Flutter 虽然得到 Google 支持,但它相对较新,目前缺乏社区支持。该平台还很年轻,几个月前才发布了测试版,这意味着开发人员尚未发现该系统的弱点和优点。 如果您正在规划一个长期且复杂的项目,您应该选择以稳定性和问题而闻名的 Xamarin。然而,随着 Flutter 社区的成长,一年之内它可能就足够成熟,可以解决出现的大部分问题。 访问原生操作系统 Flutter 中的 Dart 代码是使用 AoT(提前)编译进行原生编译的,但仍然需要 Dart VM(虚拟机)。 AoT编译背后的原因是iOS平台不支持JIT或动态编译。 Flutter 还允许您构建支持特定于平台的代码的自定义插件。 Flutter 可以通过包访问所有平台服务和 API,包括存储和传感器。您还可以使用 Flutter 库来实现从 Dart 调用本机函数的管道。 在 Xamarin 中,C# 代码被编译为机器代码,然后打包到 .app 中。 Mono 代码生成器使用 iOS 应用程序的 JIT 编译和 iOS 应用程序的 aoT 编译将中间机器代码(也称为托管代码)编译为本机平台代码。 Xamarin 通过绑定使用 .NET API 和特定于平台的库来访问本机功能。 UI 设计 虽然使用 Xamarin 原生 UI 组件是一件好事,但这是有代价的,因为平台会定期更新,系统可能需要更长的时间来适应新版本。这也使得Xamarin只适合逻辑代码共享,而不适合重用UI代码。最重要的是,我们建议对游戏和动画等繁重图形使用本机模式。 Flutter 使用内置小部件,不使用原生 UI 元素。然后,对于您正在构建 UI 的平台,希望小部件能够得到进一步优化。目前,Flutter 提供了多种布局、基本的 widget 和用于创建图形的平台,并支持 2D API、手势、效果、动画和其他功能。由于 Flutter UI 功能仍在开发中,因此它们可以演变成强大的 UI 构建环境。此外,Flutter 还附带 Material Design 组件。这只是谷歌。 开发经验 Flutter 的热重载功能可以帮助开发者构建 UI、测试和集成各种功能,并快速识别和修复 bug,而不会丢失模拟器上的状态。开发人员可以访问第三方 SDK 和库等本机功能,并重用现有本机代码(Swift、Objective C、Java 和 Kotlin)。 Xamarin 的优势之一是开发人员能够使用 Microsoft Xamarin Cloud 在设备上测试他们的 APP。但是,您必须支付订阅费才能访问此功能。 Xamarin还提供实时审核功能,类似于Flutter的热审核,可以帮助开发者编辑XAML并“实时”查看结果,而无需编译或使用APP。 Xamarin 的问题之一是第三方库的集成,这似乎在 Flutter 中实现得更好。 开发人员能力 Xamarin 允许共享大约 96% 的 C# 代码,但如果您选择完整的本机体验,则必须使用特定于平台的代码。因此,如果开发人员具有 C# 经验并且能够处理 Java、Kotlin、Swift 和 Objective-C 等本机开发平台,Xamarin 就会大放异彩。 要用Flutter开发APP,你需要了解Dart,这可能需要一些时间来学习,但如果你熟悉Java和C++,那应该不成问题。如果你是移动APP开发的初学者,没有Android或iOS APP开发经验,那么你必须学习Dart才能完成工作。 二进制和 APK 大小 根据 Capital One 工程师 Korhan Bicarn 的测试,Flutter 的基础 APP 的二进制大小为 40.2 MB,而 Xamarin 中的等效 APP 为 25.1 MB。基本 FlutterAPP 的 APK 大小消耗近 8MB,而 Xamarin 的大小为 7 MB。您可以在这里找到更详细的答案。 内存、CPU和GPU使用情况 根据同样的比较,Flutter中初始化APP地址空间和活动链接需要几秒钟的时间。应用程序在 220 毫秒内以 58 FPS 启动。在Xamarin中,初始化APP地址空间并动态连接需要几秒钟的时间。该应用程序启动时间约为 345 毫秒,达到 53 FPS。您还可以在专门的文章中了解有关 Xamarin 性能的更多信息。 结论 尽管开发者普遍支持 Flutter 运动,但这并不一定意味着 Xamarin 已经过时了。如果您是跨平台移动开发的新手,那么考虑 Flutter 是有意义的,因为这个平台可能很快就会流行起来。 然而,如今 Xamarin 在很多方面都已经成熟,包括社区、工具和稳定性。一般来说,对于复杂且长期的项目,我们建议坚持使用 Xamarin,特别是如果您拥有 C# 和 .NET 开发团队并加入 Microsoft 生态系统。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。