2020 年原生开发会彻底消亡吗?
TL; DR
长版本
事实 #1:你的 Flutter 应用将拥有与原生应用一样的性能
事实 #2:你将能够更快地发布应用程序
事实 #3:您可以将 Flutter 添加到现有应用程序中!
结论
随着 React Native 和 Flutter 等跨平台工具的出现,公司在 iOS 和 Android 上投资多个原生应用是否有意义?
这就是为什么会出现这样的问题——
“原生应用会消亡吗?
“原生应用开发是一条没有前途的职业道路吗?”
“原生应用开发正在消亡吗?”
还有更多。
好吧,我们已经找到了所有这些问题的答案。
在移动开发领域,许多人都在全力投入 Flutter 和 React Native。他们中的大多数人声称,使用 Flutter 或 React Native 可以节省高达 30% 到 35% 的时间(以及成本)。让我们分析一下这些说法有多少是真的,以及这些说法是否适用于你?
TL; DR
它可能不会消亡——但将面临激烈的竞争。
长版本
在过去的五年里,我们开发了 100 多个移动应用,其中许多都取得了巨大成功,获得了资金支持,并跻身榜单前十。我们从 2010 年开始使用 Objective-C 和 Java 开发 iOS 应用,之后逐渐过渡到 Swift,近年来又转向了 Kotlin。
我们对工具很满意,没有选择混合应用(基于 Cordova 或任何 Web 层构建),因为它们会大幅降低用户体验。早在 2015 年 1.0 版本发布之前,我们就开始使用 AngularJS (1.x) 了,后来 React 也出现了——随着它的成熟,我们欣然接受了它,并用它来支持我们大部分的前端系统,包括我们的网站(基于 GatsbyJS 构建)。
由于我们的生产系统已经使用了 React,而且客户也希望我们使用 React Native,所以我们决定尝试一下。就在我们开发 RN 的同时,2018 年 12 月, Flutter正式上线了!
Flutter 所采用的方法与 React Native 不同,它有一个强大的前提,那就是克服 React Native(以及其他跨平台应用普遍存在的)的缺陷。因此,我想是时候揭穿一些关于移动应用开发的迷思,并确立一些事实了。
误区 1:你的代码可以 100% 使用 React Native/Flutter
这纯属痴心妄想。正如人类是群居动物一样,如今的移动应用不可能是一座孤岛。根据产品功能的不同,用户需要与大量第三方解决方案进行交互才能集成到应用中——跨平台应用的情况比原生应用更是如此。
市面上有各种各样的库,用于错误跟踪、性能监控,甚至用于视频会议和聊天工具等非常专业的任务。大多数库都为原生库提供了一流的支持,并且如果它们认为有必要,还会创建跨平台的封装器。
由于功能创建和支持推出方式的本质,跨平台仍然是次等公民。因此,如果您正在开发跨平台应用,则需要集成第三方 SDK。为此,您需要编写原生代码来与 iOS 和 Android 交互。
根据您的方法,您必须选择使用本机代码或 Flutter/React 编写应用程序的部分内容 - 有时,这会造成更多的痛苦而不是轻松。
误解 2:Flutter 将会一直存在,直到永远
像谷歌这样的巨头公司永远不会只有单一的战略,而且如果项目达不到预期,它就会轻易放弃(有些项目甚至以多种标准来看都很成功)。此外,前端库和框架的生命周期短也是出了名的。
2016年初,微软以5亿到6亿美元收购了Xamarin——在我看来,这并非明智之举(事后看来,我们都可以成为沃伦·巴菲特😉)。近年来,微软像丢掉烫手山芋一样放弃了Xamarin,转而将重点转向机器学习。
谷歌备受推崇的 AngularJS 曾被认为是革命性的,在短短几年内获得了大量的关注、采用,然后又受到批评。
Google 同时还支持由 Jetbrains 开发的 Kotlin 语言。Kotlin 不仅可以创建跨平台原生应用(例如 Flutter),还可以在 Web 和后端系统上运行(Flutter 也支持 Kotlin)。这真正实现了在所有平台上使用一种语言进行编写。
考虑到以上几点,我建议,如果你所在的企业拥有非常长且广泛的产品路线图,那么理想情况下,你应该选择能够经受时间考验的产品。但如果你是一家能够快速发展、迭代、失败和重新发明的初创公司,我建议你选择一个能够节省时间(和成本)的框架——至少在短期内是这样。
误区 3:使用 Flutter/RN 总是能节省 30% 以上的成本
是的,跨平台应用确实可以节省成本和时间——不仅在开发方面,在质量保证和项目管理方面也是如此。但这些优势的前提是你不依赖太多几乎或根本不支持你的 SDK 的第三方框架。
例如,由于谷歌正在推广 Flutter,Firebase 作为原生 SDK,但Twilio和Stripe等巨头尚未推出 Flutter 的官方 SDK。
尽管 React Native 已经存在很长时间了,但是它仍然不具备一些动画效果、渐变等功能。
因此,有时让这些与您的应用程序配合使用可能会很麻烦,但如果您希望构建不严重依赖这些服务的应用程序,或者这些 SDK 只占应用程序的一小部分,那么是的,使用 Flutter/RN 您仍然可以节省资金
误区四:我的 Flutter/RN 团队不需要了解任何原生开发
哦,我多么希望这是真的!让一个对原生开发一无所知的新手直接使用 Flutter/RN 开发,简直是太鲁莽了。如果你是移动开发新手,建议先学习 Kotlin/Swift,扎实掌握之后再学习 Flutter/RN。(另外,要了解 RN,你首先需要熟悉 React——学习曲线可不短啊!)
同样,根据您的应用程序,您可以取消此要求,但如果您需要支持 - 您将不得不亲自动手编写本机代码或从团队中的其他本机开发人员那里获得帮助(如果您很幸运的话!)
现在,该了解一些事实了!
事实 #1:你的 Flutter 应用将拥有与原生应用一样的性能
Flutter 以性能为核心,我们近期在 Flutter 应用构建方面的经验也取得了显著成功。我们最近为全球第五大海洋公司推出了一款 Flutter 应用!
Flutter 开发应用的唯一缺点是体积。它们通常超过 30MB(不过,考虑到全球带宽和互联网普及率的提高,这对于大多数人来说并不是什么大问题)。
事实 #2:你将能够更快地发布应用程序
虽然从宏观层面来看,开发人员在使用 React Native/Flutter 时可能会花费比原生开发更多的时间,但总体而言它们确实节省了时间。
使用 Flutter,您可以更快地发布应用程序,这意味着您可以在每个冲刺中加入更多功能,因此每个人通常都会很高兴!:)
事实 #3:您可以将 Flutter 添加到现有应用程序中!
随着 Flutter v1.12 版本的发布,“添加到应用”功能终于成为主流。即使在 Solutelabs 内部(我相信其他产品也一样),我们也已经开始向客户推介如何在 Flutter 中创建新功能。
将 Flutter 添加到现有应用意味着您的原生开发团队必须重新学习 Flutter 技能。对于某些团队来说,这可能是一个阻碍因素,但对某些团队来说则并非如此。
结论
如果您已经拥有原生 iOS 或 Android 应用程序并且不需要太多外部 SDK,请尝试添加 Flutter,它很容易学习,并且有一些关于 Flutter 的优秀教程!
如果您是从零开始,请检查您的应用,看看它是否严重依赖于未安装 Flutter/RN SDK 的 SDK。如果没有,并且您刚刚起步,那么就选择 Flutter。
如果您已经在 RN 上进行投资,或者在时间、成本和组建原生开发团队方面投入了大量资金 - 请继续坚持下去!
文章来源:https://dev.to/solutelabs/will-native-development-be-dead-for-good-in-2020-54m9