写点什么

纯血鸿蒙微信 App 正式上线!依然使用了 Flutter,依然没说清哪里用了 Flutter

  • 2025-01-13
    北京
  • 本文字数:3805 字

    阅读完需:约 12 分钟

大小:1.78M时长:10:22
纯血鸿蒙微信App正式上线!依然使用了Flutter,依然没说清哪里用了Flutter

历时 295 天,纯血鸿蒙微信 App 登陆应用商店

 

1 月 9 日晚,搭载纯血鸿蒙操作系统微信 App 正式登陆华为应用商城,版本号为 1.0.3.42。相比此前的测试版本,正式版微信功能更加齐全,基础通讯、社交、微信支付、公众号、小程序、视频号及直播等功能齐备,使用上已经与其他平台无异。但目前版本的部分功能仍在进一步迭代中,可能会受到限制或暂时不可用。

 

当正式版本上线之际,,腾讯官方账号“鹅厂黑板报”发文,讲述了内部技术团队历时 295 天开发鸿蒙微信 App 的完整过程。此外,腾讯微信事业群(WXG)员工 @客村小蒋也在微博发布了一篇长文,从“局内人”的角度讲述了 App 开发背后的“笑与泪”。

 

他表示:“原生鸿蒙(HarmonyOS NEXT)完全是一套新的技术框架,编程语言是独特的 ArkTS 语言,这意味着所有的 App 都要完全重写。”

前端选择了 Flutter?!

 

由于鸿蒙官宣不再兼容安卓应用,业内将其称之为“纯血鸿蒙”。“纯血”,也意味着一切都要重做。

 

2024 年 3 月 21 日,开发团队收到了“简单又正式”的通知,由曾经负责开发塞班系统微信的技术负责人带头开搞鸿蒙微信。

 

由于鸿蒙是一个全新的系统,所以技术团队要手搓 App 的同时,还要和鸿蒙团队不断沟通过程中遇到的问题。就这样这个庞大的工程项目迈出了第一步。

 

2024 年 4 月,鸿蒙微信开搭基建。团队凭借 Alita 跨平台内核优势,全力投身鸿蒙系统的适配与基础库移植工作,与华为频繁沟通技术细节,反复测试验证。

 

2024 年 5 月,技术团队启动了客户端架构设计,着手为鸿蒙系统适配微信。在这一阶段,团队面临的挑战不仅是满足业务需求,还需要确保微信客户端架构具备高度的解耦性和长期的高可扩展性。目标是使各个相互依赖的模块尽量减少技术上的耦合,避免单一模块故障对整个系统的影响,同时构建一个能够轻松扩展的框架。

 

到了 2024 年 6 月,微信开始进入实际的开发阶段。团队借助 Flutter、liteapp 等工具,全力整合支付、VoIP 等功能。

 

腾讯称:“Flutter(跨平台应用程序开发框架)、liteapp(专为移动端设计的跨平台开发框架)等,都是这个阶段的关键工作。”

 

1 月 9 日,鸿蒙微信正式版本上线。用户除了能稳定下载和使用微信外,还可以用到 QQ、腾讯视频、腾讯新闻、QQ 音乐等 App。

 

鹅厂黑板报中提到他们前端架构使用了 Flutter,然而,经过深入了解后我们发现,这一表述实际上存在细微的差别。据我们从业内专家处了解到,鹅厂所提及的 Flutter 应用并非在其主体产品中全面铺开,而是在其小程序渲染引擎的部分,这一发现与鹅厂黑板报上的某些文章所述内容存在出入但我们寻求官方确认未果。

 

另一方面,由于谷歌官方版 Flutter 不支持鸿蒙系统,所以一些跨平台框架,比如 React Native 和 Flutter 都是以分支的形式来支持鸿蒙开发的。比如 React Native (RN) 是从 0.72.5 版本开始,实现对鸿蒙系统的初步支持。然而,这一支持并非由 RN 官方实现,而是由华为开发者基于官方某一版本拉取的分支来实现的。类似地,Flutter 对鸿蒙的支持也是由国内开发者通过拉取分支来完成的,而非 Flutter 官方提供的支持。这种分支模式的问题在于,开源社区会持续迭代主干版本,而分支版本往往难以跟上主干的更新进度。

微信的加入能否给 Flutter 带来转机?

 

微信和 Flutter 的渊源可以追溯到 20241 年企业微信的开发。

 

企业微信作为一款涵盖 Android、iOS、macOS、Windows PC 以及 Web 五大平台的超大型工程项目(其代码量超过千万行),在每一个功能迭代周期中,实现五端同步开发与发布是一项极为艰巨的任务。这对开发团队、产品经理、设计师以及测试人员而言,都构成了极大的挑战。

 

在企业微信的早期架构设计阶段,就已经将底层的网络通信、数据库管理以及大部分业务逻辑抽象出来,采用 C++语言实现,以便能够在多个平台上复用。然而,在用户界面(UI)层面,各个平台仍然需要各自处理。这就意味着,对于移动端(Android 和 iOS)与电脑端(macOS 和 Windows PC)来说,即便是相同的界面布局,也需要编写两套逻辑代码。因此,UI 跨平台的需求成为了企业微信面临的一大难题。

 

为了解决这个问题,企业微信团队曾经尝试过 H5 和小程序等方案,但由于性能和用户体验方面的局限,这些方案并不能满足大部分业务场景的需求。因此,团队一直在寻找一个高性能的跨平台框架。

 

幸运的是,当谷歌推出了 Flutter 这一框架时,企业微信团队看到了希望。他们进行了一些 Demo 验证,发现 Flutter 不仅体验效果接近原生应用,而且底层采用了 Skia 自绘引擎进行渲染,能够满足高复杂度的需求场景。此外,Flutter 还拥有丰富的 Pub 社区支持,这加速了框架的成熟和完善。

 

于是就这样,企业微信团队决定引入 Flutter 框架,以进一步提升项目的跨平台开发效率和用户体验。

 

当时,对于微信选择 flutter 在圈内引发了不小的震动。在 X 平台上,有网友对微信的选择表示惊讶。

 

“最大的应用程序之一微信居然选择了 Flutter,真让人匪夷所思。”

 


更让人想不通的是,腾讯到底在哪些内部板块用到了 Flutter?

 

腾讯只说使用 Flutter 开发了几款应用程序,但这里使用的措辞含糊不清,几乎是有意传递错误信息(尽管没有直接谎称微信现在是一个 Flutter 应用程序)。如果真的是一款 flutter 应用程序,那他们应该会说得更清楚。



当时,Flutter 还是很受欢迎的,不只是腾讯,包括字节跳动、阿里等多个科技巨头都在应用中使用了 Flutter。

 

“目前,仅在 Play Store 中就有超过 20 万个应用程序使用 Flutter,其中包括拥有超过 10 亿用户的微信,以及仅来自字节跳动的 70 多个 Flutter 应用程序。”

 


如今,重新写的鸿蒙依然选择了 Flutter 作为跨平台应用程序开发框架。但其实,由于谷歌团队缩水严重,bug 堆积如山等原因,业内对于 Flutter 的期待逐年降低。

 

早在 2024 年 5 月,谷歌 Flutter 团队就受到了全公司裁员浪潮的影响。对于那些投入无数时间和精力开发 Flutter 的开发人员们来说,这样的消息令人不安,种种焦虑和猜忌的情绪也随之而来。一位网名叫 xeladu 的 Flutter 与 Firebase 开发人员写道,“说实话,我宁愿劝大家干脆别学 Flutter。”

 

他告诫新手们不要把自己的长期职业生涯押注在 Flutter 身上,先观察谷歌的动作再行决定。“现在玩玩可以,但成为一名专业 Flutter 开发人员可能是在浪费时间。

 

10 月 30 日,曾在 Flutter 团队工作的前谷歌员工 Carroll 发表了一篇长文,详细解释了他为何要推动对 Flock 的分叉。他认为 Flutter 团队一直存在“人手不足”的问题——目前全球保守估计有 100 万 Flutter 开发者,而 Flutter 团队的规模估计是 50 人,也就是说每 2 万名 Flutter 用户只对应一名开发人员。

 

另外,还有网友分析谷歌 Flutter 团队甚至不到 50 人:这可以通过 GitHub 的月活跃情况大致估算,还需考虑 CI 机器人带来的大量提交记录。

 

“劳动力短缺通常可以通过增加招聘来解决。然而,由于谷歌内部的整体问题,Flutter 团队的人员编制在 2023 年前后被冻结,而在 2024 年初还出现了少量裁员。似乎团队目前可能通过外包扩充人手,但 Flutter 团队的规模在短期内大幅扩大的可能性不大。”

 

在他看来,这一令人震惊的投入比例,直接导致越来越多的 bug 积压和愈发严重的功能发布延迟。

 

“由于开发人员不足,许多问题会长期停留在待办清单中,甚至可能多年无人问津,最终被搁置而得不到解决。”

 

对于这些积压的 bug,根据 Carroll 的介绍,部分关于 bug 修复和功能发布的请求多年来一直没有得到答复。他还报告了自己的亲身经历,称直到退出项目很久之后才收到关于申请的反馈意见。可这时候,他早已忘记关于 bug 修复的更多细节信息。

 

时间延误不仅影响故障修复,还会成为产品风险,“设想一下,如果你是某公司的工程总监或 CTO,而你们的下一个版本发布因 Flutter 的某个问题受阻。假如团队需要两年时间才处理这个问题,你会怎么做?如果这个问题对公司至关重要,你只能放弃 Flutter。你没有选择,因为你需要继续向前推进,而你的团队并不具备维护 Flutter 框架的能力,而 Flutter 团队要么没有响应,要么完全没有解决问题的承诺。于是,只能放弃 Flutter。如果这种情况普遍化,Flutter 的发展将会受到严重影响。”

 

上周, Carroll 又发文控诉 Flutter 内部的混乱情况。Carroll 表示他已经看到了开源丑陋的一面——在不理解的情况下做出反应、强制误报而忽略真正问题。

 

Carroll 和Jesse Ezell分叉了 Flutter 并创建了Flock,他和 Ezell 表示,Flutter 将尽可能地接近 Flutter,同时充当“释放阀”,直到 Flutter 能够赶上社区要求但尚未解决的各种修复程序。

 

他希望社区能听取他的意见,给 Flock 一个机会。他在最近的一系列播客中表示,社区中有太多人完全误解了他的意图。

 

值得注意的是,这并不是 Flutter 第一次被分叉。当被问及 Flock 的创建时,谷歌发言人指出 Flutter 多年来已被分叉数千次,并补充说“出于多种原因(例如研究实验性想法或针对特定用例调整项目),这是开源的正常程序。”

 

还有这一点:Carroll 多次表示,Flock 实际上并不是一个旨在创建完全独立产品的分叉。

 

“我们来这里不是为了脱离 Flutter,”Carroll 在播客中告诉基于Dart的服务器解决方案Serverpod的创始人Viktor Lidholt。“当我们说有人需要某些东西但尚未得到满足时,我们确实是认真的。因此,如果您能得到服务,如果如您所说的那样,您提交的每个错误都会被合并,那就太好了。我希望您继续使用 Flutter 提交错误,我希望他们继续修复您的错误。”

 

参考链接:

https://m.weibo.cn/status/5121016231625856

https://www.woshipm.com/share/6169728.html

2025-01-13 15:069801
用户头像
李冬梅 加V:busulishang4668

发布了 1222 篇内容, 共 836.9 次阅读, 收获喜欢 1316 次。

关注

评论 3 条评论

发布
用户头像
勘误

微信和 Flutter 的渊源可以追溯到 20241 年企业微信的开发。

2025-01-14 17:01 · 北京
回复
用户头像
微信和 Flutter 的渊源可以追溯到 20241 年企业微信的开发。-勘误
2025-01-14 08:51 · 山东
回复
用户头像
2024?

20241

2025-01-13 16:50 · 北京
回复
没有更多了

电商秒杀系统架构设计文档

皓月

「架构实战营」

毕业总结

皓月

「架构实战营」

实用机器学习笔记二十四:模型调参

打工人!

学习笔记 机器学习算法 3月月更 模型调参

DNA to Face,会是寻人缉凶的一颗“银弹”吗?

脑极体

华为SmartCare和AUTIN品牌升级:助力运营商走出5G发展迷宫

白洞计划

Python 获取字典中的第一个键

AlwaysBeta

Python 程序员 编程语言 字典

用 vite 2 平滑升级 vue 2 + webpack 项目实战

CRMEB

知识管理的成功案例大赏

小炮

不为人知的网络编程(十四):拔掉网线再插上,TCP连接还在吗?一文即懂!

JackJiang

网络编程 TCP/IP TCP协议 即时通讯IM

java高级用法之:调用本地方法的利器JNA

程序那些事

Java nio 程序那些事 3月月更

毕业总结

whoami

架构训练营

科技创新力强,旺链科技创始人刘涛荣登G60科创走廊创业榜单

旺链科技

区块链 产业区块链 创新创业

以数字化为引领天翼云助力中安公司应急管理云平台上线

天翼云开发者社区

【51单片机】点亮LED灯(四种形式)

謓泽

3月月更

基于云效代码管理的源码漏洞检测是怎样的?

阿里云云效

阿里云 代码 代码管理 源代码 Codeup

Linux中如何使用Htop监控工具?【网络安全】

H

Linux 网络安全

URL重定向及跳转漏洞

喀拉峻

网络安全

39 个 Java 集合框架面试题

逆锋起笔

java面试 死磕 Java 基础 3月月更 Java集合框架

人脸识别闸机惊艳美国运动员背后的黑科技是如何实现的?

天翼云开发者社区

操作系统面试总结

yuexin_tech

操作系统

重点操作之上线、恢复、部署 - 大屏云极简使用手册

shulinwu

Java 8 Stream 从入门到进阶——像SQL一样玩转集合

Geek_rze78a

Java JAVA stream

信息安全无小事!教你如何做日志脱敏

卢永德

写给20几岁的程序员

shellc

财富 35岁

产品帮助中心的制作方法及工具推荐

小炮

恒源云(GpuShare)_医学图像分割:MT-UNet

恒源云

深度学习 机器翻译 transform

翻译 | 解读首部 Kubernetes 纪录片

RadonDB

开源 Kubernetes RadonDB

VuePress 博客优化之增加 Valine 评论功能

冴羽

JavaScript 前端 vuepress 博客搭建 Alogia

Go实现并发聚合,批量提交功能

人生如梦

Go 并发 请求聚合

程序员硬核测评:全方位测评 GaussDB(for Redis) 和开源 Redis

华为云数据库小助手

性能分析 GaussDB GaussDB ( for Redis ) 华为云数据库 开源Redis

如何打造极速数据湖分析引擎

StarRocks

数据库 数据分析 StarRocks

纯血鸿蒙微信App正式上线!依然使用了Flutter,依然没说清哪里用了Flutter_腾讯_李冬梅_InfoQ精选文章