• 跨平台APP开发我是该选择Xamarin还是Flutter?
  • 发布于 2个月前
  • 307 热度
    0 评论
在过去十年中,移动行业经历了巨大的增长,特别是在APP开发方面。据Statista报告称,全球智能手机用户超过20亿,预计到2022年底这一数字将增加到50亿以上。在这些智能手机中,近100%在三个热门平台上运行:来自谷歌的Android ,Apple开发的iOS和Microsoft开发的Windows Mobile。

一段时间以来,移动APP开发人员依赖于特定于平台的工具来开发本机APP,这些APP只能在单一平台上运行。例如,Kotlin和Java主要用于开发Android原生移动APP,而iOS开发人员使用Objective-C和最近的Swift,您可以在我们对这两种语言的比较中阅读这些内容。

原生移动APP开发的缺陷

传统的移动APP开发一直很慢且成本更高,因为企业必须为每个平台开发一个单独的APP,并且每个工具包都有不同的开发团队。今天,我们拥有跨平台的移动开发工具,帮助企业缩短开发时间,降低维护成本,并覆盖更多用户。跨平台移动开发仅意味着构建可在多个平台上运行的移动APP。目前开发人员可以使用多种跨平台框架,包括Intel XDK,Xamarin,Cordova和Flutter等。在本文中,我们将重点放在两个方面 - Xamarin和Flutter框架 - 通过比较每个的特性,优势和缺点来帮助开发人员决定何时使用一个而不是另一个。您也可以查看我们的比较 Xamarin,React Native和Ionic平台。

Xamarin和Flutter框架概述

Xamarin可以说是微软运营的领先的开源跨平台开发技术之一。它使用C#语言为Android,iOS和Windows Mobile设计移动APP。Xamarin允许开发人员访问原生的Android和iOS API,并通过Xamarin测试云提供共享的C#代码库以及跨设备的应用测试。Xamarin是由Mono背后的开发人员于2011年创建的,它使用CLI(公共语言基础结构)和公共语言规范(也称为Microsoft .NET)。微软于2016年收购了Xamarin,后来Xamarin SDK成为开源平台,成为Xamarin Visual Studio IDE不可或缺的一部分。为了充分利用Xamarin的潜力,开发人员除了C#之外还需要一些iOS和Android知识。

Flutter也是一个开源和免费的跨平台工具,由Google设计,允许开发人员为Android和iOS创建高性能的本机移动APP。该框架使用Google的Dart编程语言和轻量级C ++引擎。与Xamarin类似,它提供了单一的代码库。该框架提供用于2D渲染,模拟,手势和绘画的API和SDK,以及允许使用现有的Swift,Objective C和Java代码。它配备了Machine Design Widgets,也是一款Google产品。

Flutter和Xamarin比较

尽管Flutter在移动开发方面相对较新,其测试版于2018年1月推出,但Flutter跨平台开发框架引发了移动开发者社区的一些讨论。与Xamarin相比,不同的专家对这两个框架有不同的看法。Visual Studio Magazine的David Ramel 指出,这一比较可以追溯到2015年谷歌首次公布Flutter,但是在MWC正式发布后,它们在2018年愈演愈烈。

目前,Xamarin在开发者中更受欢迎,因为所有Stack Overflow 2018调查受访者中有7.2%表示他们使用Xamarin,而微软声称拥有140万Xamarin工程师,而Flutter根本没有将其列入名单。Flutter社区还不够大。然而,一些工程师认为Flutter是Xamarin的新兴替代品。

下面我们将看看这两个框架的特征和主要特征。虽然本文中的见解并不完全确定,但它们将为您提供关于这两个框架的一些有利观点。

可移植性

Flutter的目标是Android和iOS开发,而Xamarin则支持Android,iOS和Windows平台(即Windows 10 [UWP],Windows旧版[WPF]APP)以及MacOSAPP。更大的生态系统使Xamarin比Flutter更具优势。事实上,FlutterAPP无法移植到Windows移动平台并不是一个很大的缺点,因为Statista最近的调查显示,目前大约98.5%的智能手机可以在Android或iOS上运行。但是当你想为Windows mobile开发APP时,Xamarin可以是一个适合所有人的。

Flutter与32位OS设备不兼容。因此,例如,如果您计划覆盖iPhone 5等旧手机,Xamarin将是更好的选择。

编程语言

Xamarin使用C#,它受到开发人员的欢迎和广泛使用。如果您已具备C#和.NET技能,则可以立即使用Xamarin。如果您利用Xamarin.Forms,您可以在Xamarin中重复使用高达96%的C#代码。

Flutter使用相对较新且不受欢迎的Dart语言。但是,如果您有使用Java,Java和C ++等OOP语言的经验,那么学习Dart不会成为问题,因为它使用相同的方法和范例。

社区支持

Xamarin已经存在了一段时间,拥有大量的支持者社区,他们经验丰富,愿意与其他开发人员分享他们的知识。在Xamarin论坛上,致力于互相帮助的开发人员分享他们的代码和经验。该平台也得到了微软的支持,在解决常见问题时,这是一个很大的优势。Microsoft为其所有与Xamarin和.NET相关的产品提供了体面和最新的文档。

虽然Flutter得到了谷歌的支持,但它相对较新,目前缺乏社区支持。该平台也相当年轻,几个月前发布了测试版,这意味着开发人员尚未发现该框架的主要弱点和优势。

如果您正在计划一个长期的,复杂的项目,那么您应该选择Xamarin,其稳定性和问题已为人所知。然而,随着Flutter社区的发展,在一年之内,它可能会变得足够成熟,可以帮助解决大多数出现的问题。

访问本机操作系统

Flutter中的Dart代码使用AoT(Ahead of Time)编译编译为本机,但仍需要Dart VM(虚拟机)。AoT编译背后的原因是iOS平台不支持JIT或动态编译。Flutter还允许您构建支持特定于平台的代码的自定义插件。

Flutter可以通过包访问所有平台服务和API,包括存储和传感器。您还可以使用Flutter Libraries来实现用于从Dart调用本机函数的平台通道。

在Xamarin中,C#代码被编译成机器代码,然后打包在.app中。单声道代码生成器使用针对Xamarin.AndroidAPP的JIT编译和针对iOSAPP的AoT编译将中间机器代码(也称为托管代码)编译为本机平台代码。

Xamarin通过绑定使用.NET API和特定于平台的库来访问本机功能。

UI设计

尽管Xamarin使用原生UI组件是一件好事,但随着平台的定期更新,它会带来成本,而框架可能需要更长时间才能适应新版本。这也使得Xamarin仅适用于逻辑代码共享,但不适合UI代码重用。最重要的是,我们建议使用本机模块来处理重型图形,如游戏和动画。

Flutter使用内置小部件,不使用本机UI组件。然后,对于您正在构建UI的平台,预计小部件将进一步定制。目前,Flutter建议使用各种布局,基础小部件和平台来创建图形并支持2D API,手势,效果,动画和其他功能。虽然Flutter UI功能仍处于开发阶段,但它们有可能演变为功能强大的UI构建环境。此外,Flutter还带有Material Design组件。毕竟这是谷歌。

开发经验

Flutter中的热重新加载功能可帮助开发人员构建UI,实验并添加不同的功能,以及快速检测和修复错误,同时不会丢失模拟器上的状态。开发人员还可以访问本地功能,如第三方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或iOSAPP开发经验,那么您必须学习Dart才能完成任务。

二进制和APK大小

根据Capital One的工程师Korhan Bicarn的测试,Flutter的基本APP的二进制大小为40.2 MB,而Xamarin的等效APP为25.1 MB。基本FlutterAPP的APK大小消耗了近8MB,而Xamarin的大小约为7 MB。您可以在此处查看更详细的结果。

内存,CPU和GPU利用率

根据相同的比较,初始化APP的地址空间和动态链接在Flutter中花了1.05秒。该APP在大约220毫秒内启动,速度为58 FPS。在Xamarin中,APP的地址空间初始化和动态链接耗时3.2秒。该APP以大约345毫秒的速度启动,速度为53 FPS。

结论

虽然开发人员通常支持Flutter计划,但这并不一定意味着Xamarin已经过时了。如果您不熟悉跨平台移动开发,那么考虑Flutter是有道理的,因为这个平台很可能在不久的将来变得热门。

但是,Xamarin目前在很多方面都比较成熟,包括社区,工具集和稳定性。通常,对于复杂和长期项目,我们建议坚持使用Xamarin,特别是如果您拥有一个C#和.NET开发人员团队并且您正在进入Microsoft生态系统。
用户评论