请注明转载来源:葡萄城的官方网站。 Grape City为开发人员提供专业的开发工具,解决方案和服务,并赋予开发人员权力。
原始来源:
多年来,跨平台移动开发已成为最受欢迎的软件开发趋势之一。这不足为奇,因为跨平台开发技术的使用允许软件工程师使用相同的代码为不同的平台构建应用程序,从而节省了时间,金钱和不必要的工作。
移动市场的现状
截至2019年12月,全球有超过45亿活跃互联网用户。他们平均每人在线花费6个小时42分钟,相当于一年超过100天。
此外,人们越来越渴望从手持设备中获取大量信息,这为为什么移动应用如此受欢迎提供了合理的解释。截至2019年,全球移动应用程序收入达到4610亿美元,据估计,到2023年,付费下载和应用程序内广告收入预计将超过9350亿美元。
移动开发的技术选择
十年前,老板们不得不决定他们的产品将覆盖哪些移动操作系统:Android,iOS,微soft,RIM或Symbian。今天,初创公司公司的创始人面临着另一个困境。由于Android和iOS占据了移动操作系统市场98%的份额,因此很明显这两个系统不容忽视,并且哪个平台不再是问题。 。但是问题是,应该使用哪种方法来构建可以在两个平台上使用的应用程序?
每个操作系统对应一个开发环境
顾名思义,Java或Kotlin用于开发Android,而Objective-C或SWIFT用于开发iOS。对于开发人员来说,使用不同的开发语言来开发不同的应用程序不是一个好消息。
尽管特定的开发环境对特定的操作系统具有更有效的资源分配效率,但是可以避免性能问题。但是缺点也很明显。您的开发人员需要使用不同的开发语言来构建两个独立的应用程序,这需要更多的时间,金钱和精力。
渐进式Web应用程序(PWA)
可以解决此问题的一个示例是渐进式Web应用程序(PWA),它基本上是网站,它模仿本机应用程序的行为(例如,在发送推送通知,脱机工作或仅添加到移动设备上时)。设备的主屏幕)。但是,就像其他任何选项一样,PWA也不是完美的,因为它们消耗更多的电池,并且无法授予应用程序使用设备的所有功能的机会。
跨平台应用程序开发
幸运的是,我们还有一个跨平台开发选项,使您可以使用一段代码同时为两个操作系统开发应用程序。它并不总是使用某种平台编程语言来编写代码。而且,由于系统的本机控件直接用于呈现界面,因此可以为用户提供近乎本机的平台应用程序体验。
我应该使用这项技术进行跨平台开发吗?
下面,我将使用一系列维度来帮助您评估是否应该采用跨平台开发以适合您的业务。
平台
首先,也是最重要的是,您需要确定您的应用程序是否需要在一个或多个操作系统上可用。如果您的目标组由不同平台上的用户组成,则跨平台开发将是首选解决方案。
另一方面,如果您的用户组只有Android或iOS之一,那么使用本机解决方案进行开发是您的首选。
复杂度
该标准与您要使用产品的距离有关。解决此问题的一种方法是,您的目标是使用MVP来测试您的视力,或者准备使用成熟的应用程序开始运行。您需要回答的另一个问题是产品的功能(例如,访问移动设备的硬件或平台特定的功能)。
本地经验
您的用户是否需要使用本机或近乎本机的体验。使用Material Design(Android)或Human Interface Guidance(iOS)设计的移动应用程序是移动产品直观且用户友好的原因。在设计移动应用程序时应考虑这些因素,但是您可以使用跨平台框架来达到类似的效果。
时间和费用
可以肯定的是,本机开发成本不低,效率不高。为不同的平台构建不同的应用程序需要雇用更多的开发人员,这可能会导致启动公司超出项目开始时的紧张项目预算。同时,如果采用跨平台方法,则可以将项目外包给规模较小但同样专业的团队,这既节省时间又是节省成本的解决方案。
跨平台移动应用程序开发的优缺点
假设您得出的结论是,您更倾向于跨平台的移动应用程序开发,但是在做出决定之前,您需要彻底了解此解决方案的优缺点,没关系,我将在下面一一列出。
跨平台移动应用程序开发和更广泛的市场覆盖范围的好处
尽管我们每个人都有自己喜欢的移动操作系统,但是个人喜好不会妨碍您的业务成功。允许Android和iOS用户同时使用您的移动应用程序,这可以为将来的更高收集量奠定基础。
一组代码
跨平台开发使您可以同时编写包含多个操作系统的代码(有时会有平台差异)。但是,一组代码肯定会影响软件开发过程的所有阶段,因为它可以节省您通常花费在修理和升级两组独立代码上的成本。
更有效的发布过程
尽管只需要一组代码,但是跨平台应用程序开发仍然需要开发人员考虑解决系统差异的方法,例如将应用程序发布到平台存储的过程。
这种方法将缩短从设计到发布的时间。换句话说,这可以为您节省大量的初始项目预算。
平台一致性
毫无疑问,Android和iOS在用户体验和用户界面方面有很大不同。默认情况下,这些差异中的大多数可以通过跨平台开发框架来处理,这使设计和实际性能不一致。发生这种情况的可能性进一步降低。
缺点是什么?
尽管有上述优点,但绝不是没有缺点。它的主要缺点包括可能会导致性能降低,以及用户体验和用户界面稍差。
2020年还有哪些其他跨平台移动开发框架值得考虑
尽管跨平台的移动APP开发具有优缺点。但是从业务初创企业的角度来看,优点应该大于缺点。此外,随着对跨平台移动应用程序的需求持续增长,现在可用的工具和框架的数量也相当可观。

但是太多的选择可能令人头疼,这就是为什么我们只关注最杰出的跨平台移动开发框架:React Native,Flutter,NativeScript和Xamarin。
为了让您更深入地了解这些工具在2020年成为软件开发的可选选项的原因,我们将根据以下标准对它们进行评分:社区支持,基于编程的语言,代码可重用性,性能,接口和重要意义使用它们构建的应用程序。
反应原生
Reaction Native是Facebook在2015年发布的开源,跨平台应用程序开发框架。作为2013年举行的内部黑客马拉松的一种产品,它已成为最受欢迎的本机应用程序开发替代方案之一,拥有2043个GitHub贡献者。以及超过82900个GitHub明星。社区意识的增强使得找到可靠和经验丰富的开发团队来执行您的项目相对容易。
学习一次,随处写
基于Native.JS的React Native使用JavaScript(根据2019年Stack Overflow调查,JavaScript已成为最受欢迎的编程语言)为Android和iOS用户提供了真正的原生App外观和体验。此外,使该框架脱颖而出的原因在于,如果需要,React Native允许您使用Java,Objective-C或SWIFT编写一些本机模块,以平稳地处理诸如视频回放或图像编辑之类的复杂操作。
尽管这些组件不能在不同平台之间共享,并且要求开发人员做更多的工作,但是最多可以重用90%的React Native代码。它清楚地表明,该框架的座右铭不是“一次编写,可在任何地方使用”,而是“一次学习,可在任何地方编写”。
就GUI而言,由于使用了Android和iOS的本机控制器,React Native可以提供接近本机的用户体验。它还使用带有UI元素的ReactJS库,这有助于加快UI设计过程。开发移动应用程序时值得考虑的另一个原因是,它可以用于更改UI而不丢失应用程序的状态。
React Native在2020年成为跨平台移动开发框架的首选之一的另一个原因是不断更新,例如最新版本0.60和0.61:
以上发行说明只是适应变化的需求的一小部分React Native。
颤振
2020年值得考虑的第二个框架是Flutter。它在Google I / O 2017上宣布并于2018年发布。对于跨平台世界,它仍然是“新来者”。但是尽管如此,它已经赢得了80,500颗GitHub星,并且大多数工程师都将其称为2019年Stack Overflow调查中三个最受欢迎的框架之一。颤振无疑是不容忽视的力量。
Dart如何使Flutter变得独一无二
Flutter背后的编程语言是Dart,Google称之为“客户端优化”,适用于在任何平台上“快速构建应用程序”。它于2011年推出。它是一种反应式的面向对象语言。开发人员认为它相对容易学习。原因有两个:第一,它借鉴了C / C ++和Java语法;第二,在官方网站中,您可以找到大量且相当简单的文档。值得一提的是,Dart附带了大量兼容Flutter的软件包,使您的应用程序更加复杂。
Flutter的主要优点之一是其性能优于本文提到的任何其他跨平台移动开发框架。这是由于Dart的编译器和Flutter自己的小部件集所致。结果是它可以更快,更直接地与平台直接通信,而无需JavaScript桥(例如,React Native就是这种情况)。说到小部件:通过Flutter的“ UI-as-a-code”方法,它们仅用DART编写,从而提高了代码的可重用性。
效率与用户体验和界面密不可分。如前所述,Flutter不依赖于一组本机组件,而是使用可视化,结构,平台和交互式小部件进行UI设计,所有这些都由框架的图形引擎呈现。更重要的是,Flutter留有很大的定制空间。如果您想设计一个完美的UI,这是一个不错的选择。
谈到Flutter的更新,最新的稳定版本于12月12日发布。根据官方发行说明,它合并了来自188个贡献者的近2000条请求。例如,版本1.12.13中包含的改进:
这不是一个完整的列表,因为Flutter的目标是允许每年发布的四个版本中的每个版本都可以提高框架的可用性。
Flutter是一个年轻的跨平台移动应用程序开发框架,因此毫不奇怪,它不像React Native这样的许多大型公司都喜欢它。但是,这并不意味着它不好。截至2019年12月,阿里巴巴,谷歌广告,Groupon以及许多其他公司和企业也采用了它。
NativeScript
如果要开始开发产品,“ React Native”和“ Flutter”绝不是唯一的解决方案。 2020年初,您企业的替代框架也可能是NativeScript。
此开源框架于2015年3月公开发布,并迅速成为一种流行的解决方案。例如,发布后仅两个月,它就获得了3,000个GitHub星,并在Twitter上吸引了1,500多个粉丝的关注。截至今天,市场上有700多种插件可供选择。
在使用NativeScript构建跨平台应用程序时,开发人员首先使用JavaScript及其超集TypeScript编写代码。然后,将代码库编译为相应平台的本机编程语言。
值得一提的是,使用NativeScript的开发人员也可以使用第三方库(CocoaPods和Android SDK)而无需打包。
与React Native相似,NativeScript允许访问Android和iOS本机API,这对跨平台应用程序具有明显的积极影响。但是,不同之处在于,前者需要构建桥API,而后者(用Progress首席开发人员倡导者TJ VanToll的话说,“将所有iOS和Android API注入JavaScript虚拟机”)。与Facebook框架的另一个相似之处是代码重用,在两种情况下都可以达到90%。
Xamarin
Xamarin开源框架创建于2011年,使其成为此列表中“最古老”的框架,但直到5年前被微soft收购后,它才获得发展。到今天为止,它声称拥有超过60,000名贡献者的社区。
从技术上讲,要使用Xamarin构建跨平台的移动应用程序,您需要掌握.NET和C#。前者是多种语言(包括C#编程语言),编辑器和库平台的开发。 Xamarin通过一组工具来补充上述平台,这些工具可帮助构建跨平台的应用程序,例如库,编辑器扩展和XAML。第二种技术是C#,它是一种面向对象的编程语言,被认为比JavaScript难学一些。 Xamarin使用这种编程语言来编写整个应用程序,从后端到本机API,再到业务逻辑。
Xamarin.Native和Xamarin.Forms
Xamarin与其他框架之间的区别在于,它提供了两种编译跨平台移动应用程序的方式:Xamarin Native(也称为Xamarin.Android/iOS)和Xamarin.Forms。前一种方法优先考虑共享业务逻辑,并通过使用本机界面控件获得接近本机的性能。
后者专注于共享代码,而不是业务原则。这方面将导致代码重用的比例增加(使用Xamarin,开发人员可以重用96%的C#代码),但另一方面,这将降低代码性能。
您可能已经注意到,跨平台移动应用程序的性能与GUI密切相关,因此如果我说在Xamarin中构建应用程序的两种方法对最终版本有很大影响,我可能不会感到惊讶。界面的外观。
Xamarin.Android/iOS允许开发人员使用本机控件和布局,而Xamarin.Forms基于标准UI元素,允许使用单个API设计应用程序,但是如果您需要更完善的本机UI,则可以还不够。
跨平台应用程序开发在2020年是否仍然值得考虑?
无论如何,跨平台确实是一个有前途的方向,特别是我们上面提到的“ React Native”和“ Flutter”。
前者是一个成熟且稳定的框架,它使用最流行的编程语言之一并拥有成熟且庞大的开发者社区。后者是一项快速发展的技术,尽管它比React Native还年轻,但它也赢得了全世界许多开发人员的青睐。
但是,无论您选择“ React Native”,“ Flutter”还是任何其他框架,跨平台方法无疑都可以为您节省时间和金钱,同时最大程度地扩大市场覆盖范围。
最后,价值不值得考虑,最终取决于您的业务目标,预算和时间范围。如果您对开发效率和交付周期有更高的要求,您也可以尝试支持多平台移动终端低代码开发技术,例如支持Android,iOS,微信,鼎鼎移动型企业级低代码开发平台,Android和iOS均基于Xamarin。 微信和DingTalk在纯HTML5中实现。开发人员无需为特定平台定制开发就可以拥有支持多个终端的企业级移动应用程序。