热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

重磅!Flutter正在被悄悄放弃吗?

来源:前端之巅正文作者|邓艳琴采访嘉宾|于佳、高飞日前,Flutter2的发布,给Flutter社区注入了新的活力。但在国内,

来源:前端之巅 正文 作者 | 邓艳琴采访嘉宾 | 于佳、高飞日前,Flutter 2 的发布,给 Flutter 社区注入了新的活力。但在国内,其实围绕着 Flutter 还有着许多争议。有人在纠结 Flutter 是否值得长期投入,有人质疑 Flutter 的实际表现,有人甚至发出了“Flutter 是否正在被大厂放弃”的疑问。近日,InfoQ 采访了阿里巴巴闲鱼技术团队客户端负责人于佳(宗心)和百度贴吧客户端技术负责人高飞,针对以上问题,他们分享了自己的看法。背景:从 Flutter 化到去 Flutter 化Flutter 自诞生之日起,从来都稳坐风口浪尖,关注与争议一直伴随其身。近几年,诸多互联网大厂投入实践,先是有闲鱼团队大规模引入 Flutter,后有飞猪、百度贴吧、今日头条、西瓜视频、美团外卖、京东商城等团队在多个场景下落地了 Flutter 项目。尝到了 Flutter 带来的甜头,但随着深入落地,Flutter 的性能问题为人诟病。如“大厂开始放弃 Flutter 了吗?”“某厂已经开始去 Flutter 化”等传闻更是甚嚣尘上。Flutter 真的要凉了吗?未必,我们也看到了一些新的可能,比如美团让 Flutter 在鸿蒙系统上跑了起来,还有团队基于 Flutter 做了一些小程序容器相关的底层实现。近日,我们邀请到两位亲身实践过 Flutter 的老师,针对现阶段 Flutter 面临的一些争议以及未来进行了讨论,一位是闲鱼技术团队客户端负责人于佳(宗心),他也是此次 GMTC 全球大前端技术大会(北京站)2021【Flutter 技术探索与实践】专题的出品人。另一位老师则是百度贴吧客户端技术负责人高飞,他推动了 Flutter 技术在贴吧的落地。看点:Flutter 的争议 InfoQ:我们在看到一些比较比较消极的看法,他们认为 Flutter 正在被悄悄放弃,怎么看待这些声音?宗心:Gartner 将每个技术成熟度曲线都将技术的生命周期划分为五个关键阶段。技术萌芽期:潜在的技术突破即将开始。早期的概念验证报道和媒体关注引发广泛宣传。通常不存在可用的产品,商业可行性未得到证明。期望膨胀期:早期宣传产生了许多成功案例 — 通常也伴随着多次失败。某些公司会采取行动,但大多数不会。泡沫破裂谷底期:随着实验和实施失败,人们的兴趣逐渐减弱。技术创造者被抛弃或失败。只有幸存的提供商改进产品,使早期采用者满意,投资才会继续。稳步爬升复苏期:有关该技术如何使企业受益的更多实例开始具体化,并获得更广泛的认识。技术提供商推出第二代和第三代产品。更多企业投资试验;保守的公司依然很谨慎。生产成熟期:主流采用开始激增。评估提供商生存能力的标准更加明确。该技术的广泛市场适用性和相关性明显得到回报。基于这个理论,Flutter 应该处于期望膨胀和泡沫破裂之间,一方面看好的人还会继续大力宣传和投入解决问题,同时在尝试落地失败后的公司和个人会极力唱衰,因此我们应该回归本质去看,跨平台技术本身有其特定场景下存在的价值,多平台的研发效能收益是真实的公司需求,目前行业的龙头企业都仍然在持续投入和改进中,谈被放弃为之尚早。 InfoQ:我们收集了网络上关于 Flutter 的争议比较多的一些问题,对于这些问题,您怎么看?用 Flutter 是想节省成本,开发确实快,但实际上有一堆坑,比如你要在写插件和环境搭建上花费大量时间,成本变相回来了目前 Flutter 的落地都在边缘业务 / 页面,或者做个人项目很香,但企业级应用前景堪忧
所谓原生级别的流畅,但实际很卡,体验差,而且有些跨端项目一开始用 Flutter,结果性能卡脖子,无奈又回到 Android 和 iOS 分开搞的局面嵌套之美,难以欣赏Flutter 是 KPI 项目,负责人升职完了,华丽转身,留下一地烂摊子……宗心: 对于效能和性能相关的问题适用于所有跨平台技术,跨平台技术本质是渲染引擎和逻辑的统一,无法做到不同平台特性的统一。另外,性能本身一定是一个 Tradeoff,就当前的性能来看,Flutter 不能算非常出色,在滚动,长列表等具体细节的感受上,确实不如原生流畅,但差异没有大到不能接受。 同时,对于正在更新迭代的技术来看,我们有信心在未来看到性能的进一步提高。针对效能和性能我的看法是,随着生态的完善,进入门槛会进一步降低,插件生态也会相对丰富,一次性的成本会越来越少,在持续投入的过程中,效率会逐步产生质变。性能目前来看,随着版本的持续更新,一些问题和体验细节会由社区完善,目前 Flutter 的很多细节是没有浏览器内核做得好的,因此还有不少提升空间,但理论上来说浏览器能做到的,Flutter 也可以。对于企业级应用堪忧这个看法,目前头部大厂的小前台应用大量使用 Flutter 进行业务落地,就阿里巴巴内部已有 30+App 使用了 Flutter 相关的技术,根据历史的规律,企业级应用一定会先在头部互联网企业产生,并逐步优化降低门槛,这个过程需要一些时间。闲鱼团队也在努力同社区一起加速这个过程中,我们今年会针对性地出版一本新书《Flutter 企业级应用开发实战》,届时也希望能在 GMTC 进行签售。关于为了 KPI 强行使用新技术留下烂摊子这个事情,我有一些不同的看法。科技进步的本身需要不停的尝试,这个过程中一定会有一些人通过新技术去落地和实践,有人成功,有人失败,不论如何,新的视角和勇气是很重要的,因为新方案的落地总有质疑和反对的声音。技术进步是需要人的推动和不断完善的,尤其是努力过后结果并不顺利的同学,我们需要给这些同学更多的宽容。当然,只是为了一己私利对结果不负责的同学,大家也需要记住,我们的技术圈子很小,技术口碑是有记忆的,从博弈论的角度来看,长期来讲这些同学不会持续得到好的评价。高飞: 我把以上问题归纳为了两类。问题一:Flutter 作为一个新的跨端技术,不少开发人员以一向的好奇心,从陌生到熟悉,落地范围也越来越大,也享受到了给业务带来了实际的效率提升。实际使用中,会遇到一些不够平滑的地方,比如写插件和环境搭建,其本质都是一些外部依赖问题。主要有两类:接口较多,工作量大。需要封装的能力较多,比如账号,日志,分享,语音识别,图片上传,推送,二维码等等。有些能力本身接口较多,以账号为例,有普通登录、微信登录、微博登录、QQ、各种运营商、刷脸、短信等 10 多种能力,在反作弊场景下也会复用这些能力,都需要插件封装;依赖库冲突。依赖到的 Native 上的库版本不一致,依赖库源码有修改,库的托管方式也有不同,还有 Native 库双端接口不一致、功能不对齐等问题;这些问题是客观存在的,因此需要统一建设来解决,业界分享过较多的容器化、基础能力接口标准化等思路,解决起来是个一次性的成本,实施过程中也能发现原有端上能力的设计问题或历史问题,解决后,使得整体架构更健康。环境搭建也是类似,不同团队的基础设施不一致,首先是一次性成本的事情,实施中也能同步思考并推动基础设施的统一。问题二: 业界已有较多的企业级应用场景实践,不过 Flutter 作为一个新的技术栈,在企业级应用里面,会涉及研发模式的转变,基础建设的完善,对团队管理和基础建设都要求高一些,企业应对上,整体采用更为稳健的节奏也是合理的,也就是先从边缘页面或创新项目开始,逐步在扩大落地范围。比如基础建设来说,更多是一个工作量的问题,建设到一定成熟阶段,企业级应用会越来越多进行落地,而在次之前,是要进行基础建设和 Flutter 方向技术专家培养的,这类似一个量变到质变的过程。疑问:Flutter,路在何方? InfoQ:目前 Flutter 发展的阻力是什么?宗心: 目前来看,整个开发者的进入门槛还是比较高。有几个典型的场景移动端常用的一些 SDK 缺乏对应的官方插件 ,对于 Native 习以为常的一些能力,如 Lottie,之前也没有,当然现在有了混合工程为主要研发方式的阶段,工程构建,混合栈依然还是有不少成本的,这部分我们近期在改造的 Flutter Boost 3.0(beta 中)或者未来 Flutter 2.0 的多 Engine 模式逐步完善后,该问题会被解决性能稳定性还有不少提升空间 ,长列表等典型场景的性能体验并不好,图片库的性能也不够好。其他应该还有不少例子。本质来看,还是生态处于初级阶段,需要不停地完善迭代,同时需要更多的开发者进入。假以时日,这些问题都会被解决。高飞: 个人觉得还是基于 Flutter 的完整研发体系的建设,而这是需要大量的工作量。需要补齐等同于 Native 研发的基础设施,比如通用端能力的插件封装、构建打包、质量体系、视觉 UI 的规范、模块化、动态化,以及引擎本身的稳定性和性能优化等。这些基础设施更注重的是产品化程度,要建设得通用且好用。 InfoQ:Flutter 的机会在哪里?鸿蒙是 Flutter 的机会吗?宗心: 我比较喜欢拿老技术对比新技术,因为所有的新技术一定程度上都是已有技术的组合和优化的结果,我不认为 Flutter 会完全挑战原生开发的地位。我们去看下 QT 支持的业务场景,再回去看 Flutter 2.0 公布跟丰田的合作,还有跟各个操作系统的厂商做的一些优化,我相信未来 Flutter 机会就是在多设备多操作系统的场景下。因此鸿蒙 OS 如果面向手机和 IoT 设备成为主流的操作系统之一,那么这个场景下对 Flutter 来说会有一定的机会。另外,行业内也有不少同学基于 Flutter 去做一些小程序容器相关的底层实现,这也是一种典型的使用场景。高飞: 从现在和未来两个方面来说,当前来讲,Flutter 目前的跨移动双端,以及今年官方可能会推出其他端的正式版 SDK,让跨端提效有更为实质性的进步。其次,目前业界也有多种动态化方案,可以让已有 H5 跑到 Flutter 上,静态 Dart DSL 的动态化,小程序运行到 Flutter 上,方法级热修复等,都非常值得尝试并落地。未来,在数字化趋势下,Fuchsia 和鸿蒙等微内核系统,会有更多落地场景,也和 Flutter 的愿景一致,让开发者不论身处何处都可以在屏幕上绘制像素,建立舒适的体验。 InfoQ:现阶段的 Flutter 应该怎么增强开发者对它的信心,吸引更多开发者来加入,共建生态圈?你会给什么样的建议?宗心: 我认为 Flutter 官方还是要面向企业级研发的要求,解决关键的一些体验问题,我们从 Flutter 近期的一些更新可以看到官方的一些诚意。我们最近也准备升级新版本进行一些内部的验证,看看比如 iOS 输入框等一些长期看得见的细节问题,是否有被解决。同时也会关注下比如长列表的性能是否有提升,对接 Metal 后 iOS 渲染性能会不会更好。同时社区的这些同学需要跟 Flutter 官方一起降低开发者接入门槛,我在我们最新的 Flutter Boost 3.0 的代码 Review 里说过,我们必须基于客户端同学大概率只会 iOS/Android 一端的这个知识背景去设计我们的 API,这部分如果可能,API 需要一模一样。另外整个 API 要做精简,让开发者不要理解这么多概念,我想这个就是我们团队身体力行在坚持减少开发者门槛的行为,我们也会在这个方面持续优化。另外,之前 Flutter 官方与国内大厂组织的 Flutter China 组织实际上需要扩大范围,让更多头部的大厂入局。《创新者的窘境》里写到,先进的创新技术一般都是大公司优先孵化出来的,因为大公司有更多的资源了解行业最先进的技术,并率先投入尝试。我们希望这些投入尝试的大厂可以更多的开源与持续分享,将知识传播给更多的人,从而帮助技术逐步成熟。 嘉宾简介于佳,花名宗心,闲鱼技术团队客户端负责人。2012 年应届毕业加入阿里巴巴,经历集团无线化转型的重要时期,参与过集团多款重量级 App 以及移动中间件的设计与开发,多年客户端老兵。2014 年参与了手机淘宝的 iOS 客户端的架构升级,该架构首次完成了对百人团队并行开发的支持,同年主导了手机天猫客户端基础架构以及交易链路向手淘架构的归一,为手机淘宝作为未来集团无线中台奠定了坚实的基础。2015 年加入闲鱼客户端团队负责端架构和团队建设,工作期间完成了基于 Flutter 混合架构的闲鱼客户端的整体架构设计,在工程体系上完善了针对 Flutter 的持续集成以及高可用体系的支撑,同时推进了闲鱼主链路业务的 Flutter 化。未来将持续关注终端技术的演变及发展趋势。高飞,百度贴吧客户端技术负责人,资深研发工程师,全栈技术实践者,2011 年加入百度贴吧,一直服务于贴吧客户端,经历了移动技术发展的重要节点,研究技术主要有客户端工程建设、体验优化、动态化、IM、直播等,2018 年下半年负责探索 Flutter 技术在贴吧的落地。GMTC 深圳 2019 演讲嘉宾。


推荐阅读
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 今天我开始学习Flutter,并在Android Studio 3.5.3中创建了一个新的Flutter项目。然而,在首次尝试运行时遇到了问题,Gradle任务 `assembleDebug` 执行失败,退出状态码为1。经过初步排查,发现可能是由于依赖项配置不当或Gradle版本不兼容导致的。为了解决这个问题,我计划检查项目的 `build.gradle` 文件,确保所有依赖项和插件版本都符合要求,并尝试更新Gradle版本。此外,还将验证环境变量配置是否正确,以确保开发环境的稳定性。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 深入解析HTTP网络请求API:从基础到进阶的全面指南
    本文全面解析了HTTP网络请求API,从基础到进阶,详细介绍了Android平台上的两种原生API——HttpUrlConnection和HttpClient。这两种API通过对底层Socket的封装,提供了高效、灵活的网络通信功能。文章不仅涵盖了基本的使用方法,还深入探讨了性能优化、错误处理和安全性等方面的高级主题,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 本文通过思维导图的形式,深入解析了大型网站技术架构的核心原理与实际案例。首先,探讨了大型网站架构的演化过程,从单体应用到分布式系统的转变,以及各阶段的关键技术和挑战。接着,详细分析了常见的大型网站架构模式,包括负载均衡、缓存机制、数据库设计等,并结合具体案例进行说明。这些内容不仅有助于理解大型网站的技术实现,还能为实际项目提供宝贵的参考。 ... [详细]
author-avatar
潘佳锐_340
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有