可算有人把 Flutter 企业级应用开发说清楚了

简介: 闲鱼技术作为 Flutter 先驱和探路者的一些心路历程。
闲鱼技术

image.png

闲鱼在 2017 年便引入了 Flutter,是国内第一个引进Flutter的团队。

当时的 Flutter 还远未成熟,行业内也没有把 Flutter 放入已有工程体系进行开发的先例。

这两年,Flutter 也逐渐在其他企业里落地,但同时也不断有质疑的声音发出。甚至有传言表示“闲鱼的新业务已经放弃 Flutter”、“相信闲鱼遇到了很大的难题”......

那么,作为 Flutter 先驱和探路者,闲鱼在过去几年的摸索过程中遇到过什么阻力?踩过什么“坑”?对于相关技术开源的态度是怎样的?对于以上的一些传言又是怎么看待的呢?

针对这些疑问,闲鱼代表团队分享了一些开发者背后不为人知的小故事。希望能让大家从背后人的维度去看闲鱼团队,理解他们的初心,以及这个过程中遇到的挑战、挣扎、付出的努力、得到的教训。

1. 在新技术落地过程中,遇到过什么阻力,有什么避免“踩坑”的经验?

闲鱼从2017 年开始接触Flutter,最初是一个自上而下的尝试。

一方面,从创新团队的角度来看,需要以战养战,为团队储备更多的人才;另一方面,希望切实解决当时团队人难招、产能低的问题。

在前期的调研过程中,最初是希望将Flutter 作为闲鱼国际化版本的主要技术选型;由于后续业务上的决策,导致该项目夭折,因此希望将Flutter 引入主App 中进行探索。

在尝试之初,从组织、配套工具,到架构侧都没有准备得特别好,项目落地面临很多困难。在团队抽调的突击小组中,有大量的研发人员非常不看好这项技术,大部分研发人员并不认同Flutter,没人知道这件事情该怎么做。

当然,从2017 年开始,闲鱼在多个技术方向都进行了类似的尝试,实践证明,创新的确比想象难得多。

时间来到2020 年,回首过去尝试的多个方向,目前只有Flutter 得到了阶段性的胜利,并作为闲鱼的技术品牌为大家广泛熟知。这里面所经历的艰难险阻只有当时参与过从0 到1 过程的研发人员才能体会。

由于Flutter 落地过程的艰辛,其间也有不少同事离开了闲鱼,幸好后续有更多希望这件事情成功的研发人员加入,大家一起努力至今,才有了今天看到的成果。我们也非常感谢在此过程中付出过努力的每一位同事,不管今天他们是否还在闲鱼,是每一位同事的努力让美好终于发生。

从Flutter 落地的过程中总结出以下观点,供大家参考。

从布道者的角度来看,需解决以下两方面的问题:向上,需要得到更多决策者的支持;向下,需要减少开发者进入的成本。

关于决策者链路,Flutter 在闲鱼落地的过程中没有上层的阻力,因为开始是一个自上而下的决策,但在后续的推广和落地过程中,从更大的组织视角去看,比如构建AliFlutter 组织、构建Flutter China 组织,这些是一个自下而上的行为。

在这个过程中,闲鱼选择的是“农村包围城市”的理念。先从社区出发,发现同路人,找到不同公司、不同业务的价值,再回归内部,影响决策者。前期不管是构建集团Flutter 的兴趣小组,还是正式有了AliFlutter 的虚拟组织,都是找到同路人,探讨和争论其技术价值的过程,这个过程可以请各团队的关键决策者躬身入局。通过讨论又能帮助团队进行更深入的思考,并为Flutter 提供一个阶段性的明确定位——面向研发效能提升,构建新的研发模式,快速支持小前台业务落地。将该目标与阿里巴巴集团大的研发效能目标进行连接和推动,即可顺利地推进该项目。

关于开发者成本,首先是自己团队的开发者成本。在任何新技术落地的前期,都有一定的成本,需要度过这个阶段才能得到收益。因此,在开始阶段,必须尽量降低落地成本。

在项目之初,最好以小规模团队的形式进行尝试,同时新技术在前期架构落地中需要重点考虑过渡阶段的效率问题,不要断崖式地迁移。闲鱼在初期没有充分考虑这个问题,导致工程侧开始的架构并不合理。后来,闲鱼重点围绕混合架构,以Flutter 开发小组与原生开发小组的协作模式进行设计和落地后,该问题得到了有效解决。
例如,前期闲鱼就重点解决了原生项目无法独立打包的问题,极大地解决了当时研发效率的阻塞问题。混合栈(Flutter Boost)的重新设计,也解决了当时由于Flutter和原生生命周期不一致带来的一系列复杂问题,保证了开发调试的稳定性。如果团队仍有余力,可以考虑对开源社区进行一些力所能及的输出。闲鱼先通过发布文章,再通过部分开源项目以及内部开源的形式,给Flutter 社区和阿里巴巴集团提供了一些帮助。闲鱼相信“日拱一卒,功不唐捐”,虽然依然还有很多问题需要解决,但是随着更多开发者的进入,大量的问题终究会被解决。

2. 闲鱼对开源项目的态度是什么?未来会把大量文章中提到的技术开源出来吗?

闲鱼在2018 年完成Flutter 主链路的部分改造后,发现在落地过程中有很多问题,而且Flutter 社区并没有给出很好的解决方案。

从帮助Flutter 社区其他开发者的角度出发,闲鱼内部开始讨论开源事宜,这是闲鱼第一次尝试开源,所有人都没有经验。大家开开心心地希望能将自己做的一些事情同社区进行交流。

当然,作为第一次开源,很多事情做得也非常糟糕,糟糕的文档、糟糕的Demo、没有测试用例、问题维护不及时、没有好的社区共建方式,于是引发了社区开发者的大量抱怨。

从自己真实的感受来说,要维护好社区项目,需要付出大量的精力和时间,这些甚至需要不少同事全职去做,这对一个业务团队来说有些勉为其难。

对开源的反思是要敬畏开源,敬畏社区,在反馈中不断地成长,完善自身项目。例如,Flutter Boost 前期的设计在兼容性上侵入性太强,导致后续的升级成本较高。在未来的3.0 版本中,闲鱼会主动解决这一问题,减少关键的几个类的继承和重写,简化概念,降低接入成本。

目前,这个阶段会重点关注已经开源的项目,尤其是Flutter Boost 这种在阿里巴巴集团内外都属于开发者刚需的项目,需要持续地维护,也非常欢迎更多的社区开发者参与进来。

关于文章中提到的其他Flutter 相关技术,闲鱼会尽量考虑使用Demo 等形式将部分原理输出,帮助开发者更好地理解文章及其背后的思想。

一方面保证了闲鱼对Flutter 社区的启发和帮助,一方面也缓解了闲鱼目前面临的无法保证全职人员从事开源工作的问题。但不论如何,闲鱼希望通过文章及代码,持续地帮助Flutter 社区,尽我们的一份绵薄之力。

也许我们做得并不完美,甚至不够优秀,但随着闲鱼有更多优秀研发人员的加入,在创新和分享文化方面进行不断的自我革新,相信总有一天能伴随这项技术成为真正的国民级别应用的贡献者。

3. 听说闲鱼放弃了Flutter,作为当事人,闲鱼的态度是什么?

在各类社交平台匿名区和公众号中,都有人阶段性地、煞有介事地散播闲鱼放弃了Flutter 以及未来不会再投入的消息,作为当事人,我先说结论——这些都是谣言!

《Flutter企业级开发应用实战:闲鱼技术演进与创新》一书的出版是对这些谣言最有力的反驳,也感谢出版社帮我们辟谣。

移动互联网发展的十年, 对于跨平台技术来说, 从最早的PhoneGap 到ReactNative、Weex,再到目前的Flutter,形形色色的技术不断迭代和演进。

从当前阶段来看,Flutter 具备跨平台技术的先驱——QT 的大部分优势,且配套了更现代的语言、更合理的分层架构,并有Google 公司支持,是新一代跨平台技术的集大成者。

在下一个十年,面向万物互联的新操作系统,如华为鸿蒙及Google Fuchsia 的出现,使得跨平台技术的价值进一步凸显。

因此,学习这项开源技术对未来的开发者来说是一个不错的选择。我们无法预测Flutter 是否一定为下一个十年的主流技术,但这套代码和其背后的思想一定能给未来的开发者以启发,就像我们的前辈用QT 开发了KDE,KDE 又提供了一个排版引擎KHTML,而苹果公司Fork 了这个项目,从而产生了WebKit,而Google 又Fork 了WebKit,从而产生了Blink。

这些令人尊敬的公司和开发者站在巨人的肩膀上不断地努力,最终打造了令人耳熟能详的技术,从而改变世界。
今天,Flutter 代码中有很多概念也存在浏览器内核的一些影子。作为客户端的从业者,希望开发者都能客观地评价这些技术,根据实际情况进行学习并将其落地。

对于外界传出的类似闲鱼放弃Flutter 的谣言,大部分时间我们选择付之一笑。

作为管理者,我不太希望团队过于关注外部的评价和过度回应不实传闻,希望闲鱼的开发者可以做正确的事情,并保持长期的耐心。

未来的三年,闲鱼更希望探索先进的研发模式,帮助整个阿里巴巴集团在商业竞争中保持技术的先进性和成本优势。当然,我们希望这种研发模式是基于我们现有的技术沉淀基础之上的,因此会依然持续地投入Flutter 之中。

同时,作为一个创新团队,闲鱼也一定会持续地关注行业的最新动态,未来也一定会像在Flutter 领域一样,在其他领域有所建树。


image.png

相关文章
|
1月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
|
3天前
|
传感器 前端开发 Android开发
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求
在 Flutter 开发中,插件开发与集成至关重要,它能扩展应用功能,满足复杂业务需求。本文深入探讨了插件开发的基本概念、流程、集成方法、常见类型及开发实例,如相机插件的开发步骤,同时强调了版本兼容性、性能优化等注意事项,并展望了插件开发的未来趋势。
14 2
|
1月前
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
77 3
|
20天前
|
传感器 开发框架 物联网
鸿蒙next选择 Flutter 开发跨平台应用的原因
鸿蒙(HarmonyOS)是华为推出的一款旨在实现多设备无缝连接的操作系统。为了实现这一目标,鸿蒙选择了 Flutter 作为主要的跨平台应用开发框架。Flutter 的跨平台能力、高性能、丰富的生态支持和与鸿蒙系统的良好兼容性,使其成为理想的选择。通过 Flutter,开发者可以高效地构建和部署多平台应用,推动鸿蒙生态的快速发展。
143 0
|
22天前
|
Dart 安全 UED
Flutter&鸿蒙next中的表单封装:提升开发效率与用户体验
在移动应用开发中,表单是用户与应用交互的重要界面。本文介绍了如何在Flutter中封装表单,以提升开发效率和用户体验。通过代码复用、集中管理和一致性的优势,封装表单组件可以简化开发流程。文章详细讲解了Flutter表单的基础、封装方法和表单验证技巧,帮助开发者构建健壮且用户友好的应用。
62 0
|
1月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
81 7
|
1月前
|
编解码 Dart API
鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
本文介绍了如何开发一个 Flutter 鸿蒙插件,实现 Flutter 与鸿蒙的混合开发及双端消息通信。通过定义 `MethodChannel` 实现 Flutter 侧的 token 存取方法,并在鸿蒙侧编写 `EntryAbility` 和 `ForestPlugin`,使用鸿蒙的首选项 API 完成数据的读写操作。文章还提供了注意事项和参考资料,帮助开发者更好地理解和实现这一过程。
68 0
|
1月前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
56 0
|
2月前
|
JSON Dart Java
flutter开发多端平台应用的探索
flutter开发多端平台应用的探索
52 6
|
2月前
|
JSON Dart Java
flutter开发多端平台应用的探索 下 (跨模块、跨语言通信之平台通道)
flutter开发多端平台应用的探索 下 (跨模块、跨语言通信之平台通道)