Flutter与Xamarin跨平台移动开发相比

在过去十年中,移动行业经历了巨大的增长,特别是在应用程序开发方面。据Statista报告称,全球智能手机用户超过20亿,预计到2022年底这一数字将增加到50亿以上。在这些智能手机中,近100%在三个热门平台上运行:来自谷歌的Android ,Apple开发的iOS和Microsoft开发的Windows Mobile。一段时间以来,移动应用程序开发人员依赖于特定于平台的工具来开发本机应用程序,这些应用程序只能在单一平台上运行。例如,Kotlin和Java主要用于开发Android原生移动应用程序,而iOS开发人员使用Objective-C和最近的Swift, 您可以在我们对这两种语言的比较中阅读这些内容。

原生移动应用开发的缺陷

传统的移动应用程序开发一直很慢且成本更高,因为企业必须为每个平台开发一个单独的应用程序,并且每个工具包都有不同的开发团队。今天,我们拥有跨平台的移动开发工具,帮助企业缩短开发时间,降低维护成本,并覆盖更多用户。跨平台移动开发仅意味着构建可在多个平台上运行的移动应用程序。目前,开发人员可以使用多种跨平台框架,包括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)。微软于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产品。

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的新兴替代品。

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

image

Xamarin与Flutter的比较简而言之

可移植性

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

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

编程语言

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

Flutter使用相对较新且不受欢迎的Dart语言。但是,如果您有使用Java,JavaScript和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调用本机函数的平台通道。

image

*Flutter iOS和Android结构 *

在Xamarin中,C#代码被编译成机器代码,然后打包在.app中。mono代码生成器使用针对Xamarin.Android应用程序的JIT编译和针对iOS应用程序的AoT编译将中间机器代码(也称为托管代码)编译为本机平台代码。

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

image

Xamarin iOS和Android架构

UI设计

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

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

开发经验

Flutter中的热重新加载功能可帮助开发人员构建UI,实验并添加不同的功能,以及快速检测和修复错误,同时不会丢失模拟器上的状态。开发人员还可以访问本地功能,如第三方SDK和库,并重用现有的本机代码(Swift,Objective C,Java和Kotlin)。

Xamarin的一个优点是它允许开发人员通过Microsoft Xamarin Cloud在设备上测试应用程序。但是,您必须支付订阅费才能访问该功能。Xamarin还提供实时重新加载功能,相当于Flutter中的热重新加载,它可以帮助开发人员修改XAML并在不编译或部署应用程序的情况下“实时”查看结果。

Xamarin问题之一是与第三方库的集成,这似乎在Flutter中更好地实现。

开发人员技能

Xamarin允许共享大约96%的C#代码,但如果您选择完全本机体验,则必须使用一些特定于平台的代码。因此,如果开发人员具有C#经验并且还可以处理Java,Kotlin,Swift和Objective-C等本机开发平台,Xamarin就会大放异彩。

要在Flutter中开发应用程序,您需要了解Dart,这可能需要您花时间学习,但如果您熟悉Java和C ++,这应该不是问题。如果您是移动应用程序开发的先驱,并且没有Android或iOS应用程序开发经验,那么您必须学习Dart才能完成任务。

二进制和APK大小

根据去年Capital One的工程师Korhan Bicarn的测试,Flutter的基本应用程序的二进制大小为40.2 MB,而Xamarin的等效应用程序为25.1 MB。您可以在此处查看更详细的结果。从那时起,谷歌努力将基本Flutter应用的APK大小减少到4.28 MB,而Xamarin的大小则保持在7 MB左右。

内存,CPU和GPU利用率

根据相同的比较,初始化应用程序的地址空间和动态链接在Flutter中花了1.05秒。该应用程序在大约220毫秒内启动,速度为58 FPS。在Xamarin中,应用程序的地址空间初始化和动态链接耗时3.2秒。该应用程序以大约345毫秒的速度启动,速度为53 FPS。您还可以在我们的专门文章中了解有关Xamarin性能的更多信息。

结论

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

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

本文翻译:https://www.altexsoft.com/blog/engineering/flutter-vs-xamarin-cross-platform-mobile-development-compared/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容