跨平台APP开发框架:Flutter与Xamarin之比较

2019-04-0316:57:31APP与小程序开发Comments6,666 views字数 4001阅读模式

跨平台APP开发框架:Flutter与Xamarin之比较文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

原生移动APP开发的缺陷文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

Xamarin和Flutter框架概述文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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知识。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

Flutter和Xamarin比较文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

目前,Xamarin在开发者中更受欢迎,因为所有Stack Overflow 2018调查受访者中有%表示他们使用Xamarin,而微软声称拥有140万Xamarin工程师,而Flutter根本没有将其列入名单。Flutter社区还不够大。然而,一些工程师认为Flutter是Xamarin的新兴替代品。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

下面我们将看看这两个框架的特征和主要特征。虽然本文中的见解并不完全确定,但它们将为您提供关于这两个框架的一些有利观点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

可移植性文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

Flutter与32位OS设备不兼容。因此,例如,如果您计划覆盖iPhone 5等旧手机,Xamarin将是更好的选择。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

编程语言文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Xamarin使用C#,它受到开发人员的欢迎和广泛使用。如果您已具备C#和.NET技能,则可以立即使用Xamarin。如果您利用,您可以在Xamarin中重复使用高达96%的C#代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Flutter使用相对较新且不受欢迎的Dart语言。但是,如果您有使用Java,Java和C ++等OOP语言的经验,那么学习Dart不会成为问题,因为它使用相同的方法和范例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

社区支持文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

虽然Flutter得到了谷歌的支持,但它相对较新,目前缺乏社区支持。该平台也相当年轻,几个月前发布了测试版,这意味着开发人员尚未发现该框架的主要弱点和优势。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

如果您正在计划一个长期的,复杂的项目,那么您应该选择Xamarin,其稳定性和问题已为人所知。然而,随着Flutter社区的发展,在一年之内,它可能会变得足够成熟,可以帮助解决大多数出现的问题。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

访问本机操作系统文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Flutter中的Dart代码使用AoT(Ahead of Time)编译编译为本机,但仍需要Dart VM(虚拟机)。AoT编译背后的原因是iOS平台不支持JIT或动态编译。Flutter还允许您构建支持特定于平台的代码的自定义插件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Flutter可以通过包访问所有平台服务和API,包括存储和传感器。您还可以使用Flutter Libraries来实现用于从Dart调用本机函数的平台通道。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

在Xamarin中,C#代码被编译成机器代码,然后打包在.app中。单声道代码生成器使用针对的JIT编译和针对iOSAPP的AoT编译将中间机器代码(也称为托管代码)编译为本机平台代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Xamarin通过绑定使用.NET API和特定于平台的库来访问本机功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

UI设计文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

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

开发经验文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Flutter中的热重新加载功能可帮助开发人员构建UI,实验并添加不同的功能,以及快速检测和修复错误,同时不会丢失模拟器上的状态。开发人员还可以访问本地功能,如第三方SDK和库,并重用现有的本机代码(Swift,Objective C,Java和Kotlin)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Xamarin的一个优点是它允许开发人员通过Microsoft Xamarin Cloud在设备上测试APP。但是,您必须支付订阅费才能访问该功能。Xamarin还提供了实时重新加载功能,相当于Flutter中的热重新加载,它可以帮助开发人员修改XAML并在不编译或部署APP的情况下“实时”查看结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Xamarin问题之一是与第三方库的集成,这似乎在Flutter中更好地实现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

开发人员技能文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

Xamarin允许共享大约96%的C#代码,但如果您选择完全本机体验,则必须使用一些特定于平台的代码。因此,如果开发人员具有C#经验并且还可以处理Java,Kotlin,Swift和Objective-C等本机开发平台,则Xamarin会发光。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

要在Flutter中开发APP,您需要了解Dart,这可能需要您花时间学习,但如果您熟悉Java和C ++,这应该不是问题。如果您是移动APP开发的先驱,并且没有Android或iOSAPP开发经验,那么您必须学习Dart才能完成任务。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

二进制和APK大小文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

根据Capital One的工程师Korhan Bicarn的测试,Flutter的基本APP的二进制大小为40.2 MB,而Xamarin的等效APP为25.1 MB。基本FlutterAPP的APK大小消耗了近8MB,而Xamarin的大小约为7 MB。您可以在此处查看更详细的结果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

内存,CPU和GPU利用率文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

根据相同的比较,初始化APP的地址空间和动态链接在Flutter中花了秒。该APP在大约220毫秒内启动,速度为58 FPS。在Xamarin中,APP的地址空间初始化和动态链接耗时秒。该APP以大约345毫秒的速度启动,速度为53 FPS。您还可以在我们的专门文章中了解有关Xamarin性能的更多信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

结论文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

虽然开发人员通常支持Flutter计划,但这并不一定意味着Xamarin已经过时了。如果您不熟悉跨平台移动开发,那么考虑Flutter是有道理的,因为这个平台很可能在不久的将来变得热门。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/11125.html

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

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/11125.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定