前言
近年来,跨平台开发框架逐渐成为开发界的主流。其中,Flutter作为谷歌推出的一款备受关注的UI工具包,曾一度受到广泛关注。然而,在2023年,我们似乎很少听到关于Flutter的讨论。那么,Flutter是否已经失去竞争力?
Flutter 的引入和发展
2017年,闲鱼引入了 Flutter。2019年,闲鱼开始推进 Flutter 在闲鱼的应用,进行大规模的落地。
在这三年的实践中,闲鱼不断修正 Bug 提高 Flutter 的稳定性并同步给 Google,甚至琢磨出了一套自己的混合技术方案,开源了 Flutter Boost 引擎。
到现在,闲鱼几乎已经完全拥抱flutter,但是质疑的声音从开始到现在一直没有停过。甚至有传言:Flutter 正在被放弃。
身边批判的声音也不少,比如:
Flutter 只是重复造轮子,根本就没啥亮点;
Flutter 用 Dart 语言就是一个致命缺点;
那些用 Flutter 框架的APP真的拉跨;
……
新技术的涌现和竞争
随着科技的飞速发展,市场上不断涌现出新的技术和框架。现在的跨平台框架真是跟打了鸡血似的,跟生产队的驴一样玩命的更新啊,一会儿功夫就遍地开花。
相较于Flutter,一些新兴的跨平台框架如React Native、Unity等,为开发者提供了更多选择。这些框架不仅在性能上表现优秀,而且在社区支持和生态系统方面也日益完善。
而像KMM 、更是凭借kotlin语言和后面的金主爸爸(谷歌)也是在快速崛起。
- KMM
与 Flutter 这种框架的思想相反,KMM 是用一套语言生成多个平台特定的字节码,所有的翻译工作由 kotlinc 或 kotlin-nativec 编译器来执行,从某种角度来讲,是『从上到下』,而 Flutter 的思想是『从下到上』,这也决定了两种框架适用的场景,Flutter 就适合绘制 UI,而 KMM 则是更适合与 UI 无关的逻辑代码,比如:Model 层,网络请求、数据解析、建模等
它两成本差异
使用 Flutter 需要在 App 包内部增加两个引擎:
一个是 Flutter 的渲染引擎,该引擎使用 C/C++ 开发,直接调用 OpenGL/Skia 的 API 进行绘制,从而摆脱 iOS
的 UIKit 以及 Android 的 View 组件直接渲染成需要的样式,从保证样式高度统一
另一个是 Dart 语言的 Runtime,用于解析并运行 Dart 语言编译的 Bundle
这两者减小了开发者的适配成本,但增大了 APP 的包体积(其他类似的跨平台框架,如:React Native 等,也会内置
JavaScript Core 或 V8 引擎)
KMM 针对不同平台生成不同的二进制依赖包,根本上还是调用了 Android、iOS 的原生 API,并不会内置引擎这类文件,对 App
的体积影响相对较小,同时也保证了性能
技术栈:
虽然Flutter在跨平台开发方面具有很多优势,但对于新手开发者来说,学习曲线仍然相对较高
Flutter 使用 Dart 开发,无论是 Web 开发者,还是原生 App开发者,都需要抽时间去学习一门新的语言,理解新的开发模式,虽然 Dart 与 JavaScript、Java 有着类似之处,且开发形式和React 相近,但仍有一定学习门槛
Kotlin 已经成为 Google 官方主推的 Android开发语言
且由于 Kotlin 与Java 交互非常方便,目前大部分 Android 开发者已经完全切换到 Kotlin 来进行 App开发,很多与平台无关的工具类、算法、数据模型可以直接利用 KMM 实现跨平台,与 Flutter 相比,至少 Android
开发者的门槛要求几乎为零
Flutter的不可取代的优势
- 稳定
Flutter UI由于自绘UI,从而避免了平台层面的UI和系统升级导致的各种兼容问题。但是作为跨平台开发技术不可避免的需要去维护底层适配层和各种插件实现与原始平台的通信,这是所有跨平台的通病。
- 大型项目都爱用Flutter
Flutter采用自渲染引擎,能够实现高性能的UI体验。与基于Web技术的React Native等框架相比,Flutter在性能上具有明显优势。这对于大型项目而言尤为重要,因为这些项目往往需要处理大量数据,保证应用的流畅性和响应速度。
热重载功能
Flutter的热重载功能使得开发者可以在无需重新编译和安装的情况下快速预览和调试代码更改。这对于大型项目的开发过程具有极大的帮助,可以大大提高开发效率。
最后
综上所述,虽然Flutter在跨平台开发领域具有一定的优势,但在面对新技术、学习曲线、谷歌战略调整和企业采用情况等多重挑战时,它在市场上的地位可能已经受到影响。然而,这并不意味着Flutter已经竞争力。大厂对Flutter仍然青睐有加。
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
在这里为了方便大家系统的学习Flutter,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Flutter全家桶学习资料。
内容概要:Flutter技术解析与实战、Flutter进阶学习笔记、Flutter入门与实战和Flutter完整开发实战详解。
内容特点:条理清晰,含图像化表示更加易懂。
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
目录
第一章 为什么 Flutter 是跨平台开发 的终极之选
- 01 这是为什么?
- 02 跨平台开发
- 03 什么是 Flutter
- 04 Flutter 的特性
第二章 在 Windows 上搭建 Flutter 开发环境
- 01 使用镜像
- 02 系统要求
- 03 获取 Flutter SDK
- 04 编辑器设置
- 05Android 设置
第三章 编写您的第一个 Flutter App
第四章 Flutter 开发环境搭建和调试
- 1.开发环境的搭建
- 2.模拟器的安装与调试
- 3.开发环境的搭建
- 4.模拟器的安装与调试