likes
comments
collection
share

谁告诉你 Flutter 会干掉原生开发?

作者站长头像
站长
· 阅读数 19

如下图所示,今天刚好收到一个知乎问题,而刚刚好这个视频我也在抖音上看到过,播放量还不低,本来是“一笑而过”但是既然这么“有缘份”,那就关于 “Flutter 会干掉原生开发?” 这个问题再聊聊我的看法。

谁告诉你 Flutter 会干掉原生开发?

我在 2017 开始对 flutter 产生兴趣,至今已经写了 20 几篇关于 flutter 文章,github 的几个 flutter 开源项目 star 数大概在 14k 左右,如今 flutter 也是我的本质工作之一,所以我想说这个观点很偏面很偏激也很博眼球

在说这个问题之前,先说下 flutter 是什么。

flutter 其实就是一套谷歌开源的跨平台 UI 开发框架,支持 Android 和 iOS ,并且目前开始支持 Web 和 MacOS,未来还会继续支持 Win和 Linux 平台的一套 UI 框架。

和以前的跨平台开发不同的是:它的性能更好,更接近原生并且跨平台体验更优秀,因为它的跨平台实现机制更像是游戏引擎,所以在积累到 2019 年后迅猛上位,到今天 flutter 在 github 的 star 已经超过了前辈 react-native,当然, issue 也超越了 react-native。

谁告诉你 Flutter 会干掉原生开发?

所以通过上述可以总结:flutter 确实很不错,但是, flutter 的定位只是跨平台 UI 框架,并且 flutter 目前的 issue 感人。

关于 Flutter “干掉原生开发的问题”

这个问题其实追溯到 react-native 、weex 等跨平台框架出现的时候,都会有原生开发“要凉”的口号盛行,但是事实上 react-native 、weex 和 flutter 都只是 UI 框架,它解决的其实是跨平台上的 UI 实现,让界面布局或者实现的业务逻辑可以在多端统一。

但是它也仅仅只是 UI 框架,比如 react-native 本身就是依赖于原生控件,而 flutter 的 webview 、mapview 也都需要依赖原生开发来支撑。

接着说除了 UI 框架之外,比如蓝牙、数据存储、传感器、应用之间的通信交互、多进程等等一大堆支持其实都属于原生平台,这些在 flutter 上都需要对应平台的开发支持,之后再封装到 flutter 插件中。

有的人可能觉得这些都有官方和第三方提供,但是首先 flutter 的插件社区如今还比较年轻,当然项目小的时候可能无所谓,但是只要项目稍微比较大的,这些肯定远远不够,官方提供的永远赶不上 PM 或者 Boss 们的奇思妙想

如果按照截图上所说,他一个人能做 iOS、Android 和 Flutter 所有的工作,能做编程界的“叶问”,那我无话可说。。。

再说就flutter 的 issue ,天见尤怜,加上 pr 还有 8000+ 的 issue 没有 Closed ,心疼 flutter 官方一秒钟。跨平台框架的问题一直都不可能少,因为涉及的平台多了,问题自然也就多了,而很多问题其实都是和原有的平台有关,没有对应平台的开发人员很多时候是搞不清问题所在。

谁告诉你 Flutter 会干掉原生开发?

混合开发也是一个考虑的因素,因为很多企业并不是从零开始,一般都是在原有项目的基础上做混合开发,对某些业务进行改造成 flutter 来尝试新技术;同时大厂也不会把鸡蛋放在一个笼子里,所以很多时候对于大厂而言更多会是混合开发的模式。

最后就是打包和分发,“打包失败和审核不过”是最常出现问题的阶段,特别是 iOS 平台的打包和审核,这些往往也都需要有对应平台经验的人来处理。

所以 flutter 的定位,甚至跨平台开发的定位,都不是干掉原生,而是在原生开发上拓展技能和能力。能干掉平台的只有平台!

关于 Flutter 真正的定位

最后聊聊 flutter 的定位,flutter 作为跨平台 UI 框架,很众多跨平台框架一样,它是和原生相辅相成的存在,我在做技术分享和文章中不止一次表达过这个观点,跨平台解决的问题是:

1、开发成本

直接学 Java/KotlinObject-C/SwiftJavaScript/CSS 去写各平台的代码可以吗?

当然可以,这样的性能肯定最有保证,但是跨平台的主要优势在于代码逻辑的复用,减少各平台同一逻辑,因人而异的开发成本。对于企业而言,一套业务逻辑可以在多处使用是最理想也是最保险的。

2、学习机会

一般情况下,各平台开发者容易局限在自己的领域开发,而作为应用开发者,跨平台是接触另一平台或领域的过渡机会。

3、团队结构

一般而言做跨平台的团队还是会有 Android 和 iOS 的原生开发,甚至于在大中型项目中人数都不会变少,但是用跨平台会让所有人都参与都一个开发进度中,而不是 iOS 和 Android 各做各的,最后再扯谁的实现有问题。

每次出现新的技术框架都有猛吹的,也有抗拒的,希望大家都能保持客观的态度面对改变~

资源推荐

开源 Flutter 完整项目:github.com/CarGuo/GSYG…

开源 Flutter 多案例学习型项目: github.com/CarGuo/GSYF…

开源 Fluttre 实战电子书项目:github.com/CarGuo/GSYF…

谁告诉你 Flutter 会干掉原生开发?