哈喽,我是老刘
前段时间有人给我的文章写下了这个评论:
说实话,老刘我带着团队写Flutter已经6年了。
我觉得我们当初选择切换到Flutter是非常正确的决定。
而且在AI没有火起来之前,也一直没有出现比Flutter更好的选择。
那么AI的出现是不是真的带来了不一样的变化呢?Flutter这样的跨平台框架是不是真的没有必要了呢?
我们先来看看选择Flutter的主要原因,然后分析一下AI是否能完全代替它。
选择Flutter的主要原因
我们当初之所以选择用Flutter代替原生开发,并且最终把Android和iOS两个团队合并成一个客户端团队。主要是基于以下几点原因:
1、只需要写一套代码节省资源
这可能是所有跨平台框架的最主要的价值了。
当然Flutter在这方面也确实非常优秀,它甚至给我们团队带来了比50%更多的人力节省。
具体可以看这篇文章:
如何评价Flutter?
2、媲美原生的性能
如果少写一套代码带来的副作用是用户体验明显下降,那我们可能也不会考虑切换到Flutter上的。
因为当时我们的产品虽然不是那种国民级的App,但是也是月活几千万的。
为了节省一点开发成本而降低用户体验站在整个产品的角度看会有些得不偿失。
而Flutter相对于其它跨平台开发框架的一个巨大优势就是媲美原生的性能。
这是我们最终选择Flutter的一个必要条件。
3、和原生无缝衔接
只有足够好的性能还不够。
一个体量巨大的产品如果想一次性的完全切换到全新的技术栈,其中的工作量和方方面面的影响都很难接受。
所以一定要有一个能渐进式切换的方案,也就是原先的原生功能和新的框架代码能同时存在,共同工作。
这就需要新框架有和原生代码无缝衔接的能力。
这方面不仅仅是Flutter,其实RN、MAUI等跨平台框架都很不错。
所以和原生的无缝衔接也是选择Flutter的一个必要条件。
4、两端的高度一致性
这一点是当时我们希望通过跨平台开发带来的改变。
说实话,当时我们的App因为好几年两端各自开发,积累了非常大的两端的差异。
这种差异性不仅仅体现在UI上,还体现在UI之下的逻辑上。
记得有一次需求评估会,有个关于商品列表页的改版,Android端评估1人天,iOS端8人天。
根本原因就在于两端这个页面的实现逻辑截然不同。
而这种差异在整个代码中比比皆是。
其中有一些是直接影响用户体验甚至是用户交互流程的。
所以,当时引入跨平台开发的一个目标就是消除这种差异。
现在回看Flutter是否实现了这个目标呢?
我觉得这一点Flutter让我非常满意。
Flutter本身就是完全独立的开发框架,对原生的依赖非常小。
我们所有用Flutter全新开发的功能模块,除了少数调用系统功能的部分,都是纯粹的Dart代码。
从代码逻辑到运行效果,可以说几乎实现了多端的完全一致。
这一点不仅原生开发做不到,目前主流的跨平台框架基本都做不到。
这也是我们这些年来一直坚定的选择Flutter的一个重要原因。
不是其他的选择不够好,而是他给不了我们想要的。
好了,前面总结了我们选择Flutter的主要原因。
接下来我们来看看这些功能AI是否都能满足。
AI能做到吗?
1、只写一套代码
这一点对于AI来说应该不是什么问题。
我们提供一套需求描述,让AI生成不同端的代码是很容易的。
但是这里面有一个细节需要注意,就是AI生成的代码和你的需求描述是否能完全一致?
这一点我们在下面两端一致性部分详细说。
2、性能、功能问题
这一点确实是没有任何问题的。
毕竟就是两套原生代码嘛。
3、多端一致性
我想这一点可能是用AI写两套代码的最大短板。
前几天用ChatGPT-4o做了个测试
同样的功能,将提示词做一些简单的变化,生成的代码就会有很大差别。
甚至同样的提示词多问几遍结果也会不同。
其实这也很好理解,假设找一个同样精通Android和iOS开发的程序员。
你让他同时写两端的代码,也很难保证逻辑完全一致。
更何况不同的编程语言、SDK本身在设计思路和逻辑上就有很多的差异。
所以写两套代码的方案,不管是AI来写还是程序员来写,本质上都会有差异性存在。
而且随着项目的迭代,这种差异还会积累和放大。
总的来说AI写两套代码可以在很大程度上降低不同客户端分别建立原生开发团队的成本。
但是以Flutter为代表的跨平台框架相对于原生开发除了节省成本外,还能带来一些额外的好处,比如高度的多端一致性。
而这些额外的好处是现阶段AI开发多个客户端代码无法解决或者说替代的。
那么AI在我们未来的开发模式中能起到哪些作用呢?
融合AI的开发模式
在我看来AI代替的并不是Flutter或者RN这样的开发框架。
不同的框架各有其优势,并不是对原生开发的简单替代。
AI代替的应该是开发过程中那些简单、机械重复的工作。
不管是用哪个开发框架,从原生到RN再到Flutter,都会有大量的重复性的机械性的工作。
之前我们会通过模板、抽象等等手段尽可能的减少这种机械性工作。
但是AI给我们带来了新的可能性。
有了AI的帮助,也许我们不再需要为大量的模板代码花费精力。
比如App中大量页面的通用样式,可以交给AI来完成。
页面同样样式变化也可以简单的交给AI来进行全局替换。
至于底层是通过抽象页面基类还是通过设置全局的样式管理器或者就是简单的每个页面写一套,其实对AI来说差别并不大。
对于开发者来说,可以把精力从机械重复的工作中解放出来,也许才是未来的开发模式。
总结
总的来说AI不应该是Flutter或者RN的替代。
选择原生开发还是Flutter应该根据我们项目的特点和需求来决定。
而不管选择了那种开发框架,都可以运用AI的能力帮我们节省掉那些机械、重复的劳动
换句话说,用AI写Flutter在大部分情况下应该比用AI写两套更香吧?
好了,话题说到这里下回我们可以讨论一下AI如此发达,我们是否还有必要学编程这个话题了。
如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》