1 月 9 日消息,微信纯血鸿蒙版 App 今日正式登陆手机端华为应用市场(App Gallery),版本号为 1.0.3.42。
腾讯 WXG(微信事业群)员工 @客村小蒋 今日发布长文总结了微信纯血鸿蒙版 App 上架历程,附原文如下:
今天,微信鸿蒙原生版正式上架应用商店了。
有些话,想说一说,给这段时间做一个总结。
现在讲究零帧起手,也就是要讲就讲最关键的,不要前面各种铺垫,最后夹带私货。
但身份和视角的问题,我今天要说的,可能都是私货。
负责鸿蒙微信开发的大哥,是老广研,当年开发微信 1.0 的那批成员中的一位。
也就是说,他在鹅厂的时间,比微信的历史都久。
当年的 1.0,大哥负责搞塞班(Symbian)微信,曾经的诺基亚,从品牌到份额,应该是远超今天的苹果的。
但作为一个开放度远不如现在的 iOS 和 Android 的“原始操作系统”,在塞班上做东西,是刀耕火种。
大哥带着团队肯钻研,硬在塞班上手搓出了朋友圈、公众号。
没有想到,诺基亚这样的巨人的轰然倒塌,完全不以人的意志为转移。
之后大哥带着团队做智能手表、车机,包括最早的 Linux PC 端的微信。
不同品牌、不同终端,比手机更碎片化的生态,非常需要一个跨平台的内核,把最重要、最基础的能力搭成可复用的基建。
刚好和团队一起看了当时热映的《阿丽塔:战斗天使》,大哥说我们刚立项的跨平台内核,就叫“阿丽塔内核”吧。
阿丽塔,又帅又能打。
阿丽塔内核,也成了微信跨平台开发的基建。
微信鸿蒙版,也受益于此。
这样的履历,其实冥冥中有注定。
2024 年 3 月 21 日,一份简单又正式的通知来了,大家已经决定了,鸿蒙微信,你牵头来搞。
1、搭基建:第一天开始,鸿蒙微信就是按照“三峡大坝”建的
“原生鸿蒙(HarmonyOS NEXT)完全是一套新的技术框架,编程语言是独特的 ArkTS 语言,这意味着所有的 App 都要完全重写。”
这句话,我经常会跟不同的朋友说起。
不过,对微信团队来说,学习新的编程语言,可能是整个适配工作中,最不算困难的事情之一。
在一个全新的平台上,做一款要支撑海量用户、高并发的通讯需求,同时有支付、小程序、视频平台等多个大功能模块的应用,还要满足极高频使用下的稳定性,是更大的挑战。
这也是我全篇最大的私货,我可能会反复提起。
也有人说,原生鸿蒙在 2024 年 10 月才开始公测,怎么就海量用户了?
我记得原生鸿蒙有一次发布会用的主题叫,“待到山花烂漫时”,信念的力量,很强大。
微信的技术团队,依靠的则是对技术的狂热信念。
iOS、安卓微信多年的捶打,他们早已把一些信念根植于团队中:比如大系统小做、让一切可扩展、必须有基础组件、灰度发布、精细监控、迅速响应,一切都是保证系统在稳定的前提下,能够敏捷响应产品需求。
微信原生鸿蒙团队,刚开始组建,就有一个堪比 iOS、安卓客户端开发团队的规模。
“今天是这些人做鸿蒙微信,几年以后,还应该是这些人在做。”大哥的 leader,另一个我非常敬重的技术大哥说到。
2、搭基建,修 bug,是一种修行
阿丽塔内核,在开发鸿蒙微信的过程中,居功至伟。
但这只是基建的第一步。
万丈高楼,第一天就要把地基打得足够深、足够牢。
第二步,还需要设计好鸿蒙微信客户端的架构、编写好各个模块的文档,让后续第二三阶段的业务进场后能够高效进行开发。
这一步极其有难度,不仅要快速满足业务诉求,还需要考虑业务之间的解耦,并具备长期的高可扩展性。
也就是说,让微信各个相互依存的模块,又在技术上尽量减少对彼此的依赖,避免因某个模块的故障影响其他功能。同时,有一个扩展性极高的框架。
也是这个时间,大哥带着团队开展了频率极高的对内对外沟通。
对外,和华为的技术团队进行了频率极高的线上线下交流;对内,push 各个业务团队将各自的基础库移植进来。
从搭基建一直到今天,修 bug 都是一个始终伴随开发过程的动作。
有一个经典的气死程序员的问题,“程序员为什么要一直写 bug ,不能一次性写好吗?”
程序员们也进行了各种“狡辩”,从类比答题、园丁和杂草、奇葩顾客买肉夹馍,到赌气只要产品经理永远不加新功能就不会有 bug。
其实核心就几个点:需求经常会变、系统太复杂、意外情况多、时间和成本有限,以及“人”,总是会出错的。
鸿蒙遇上微信,这样的问题就会加倍,两个高速前进、互相影响的复杂系统,让修 bug 就像一场修行。
6 月,在适配鸿蒙 NEXT.0.0.6x 的某个版本过程中,出现了一个经常导致开发中的微信闪退的 bug。
n
两个团队一起排查了一周多都毫无进展,大哥睡觉时,脑子里都在想这个 bug。
最后甚至是靠灵光一闪,从系统的一个底层 API 中发现了问题:同样的代码逻辑,在 iOS 上和安卓上都没问题,但在鸿蒙上就会遇到问题。
发现问题后,就能快速解决了。
几个月后,我第一次听说这段经历时,居然回忆起了小时候看的爱迪生试验灯丝的故事。
3、邀请内测、上架尝鲜
2024 年的十一假期,鸿蒙微信开发团队的全部人都加了七天班。
10 月 8 日,也就是原生鸿蒙正式公测的这天,鸿蒙微信也开始邀请内测。
10 月 12 日,微信测试版上架鸿蒙应用商店的“应用尝鲜”专区,用户可以抢先下载测试。
但如果从一个普通鸿蒙用户的角度,从 10 月 12 日到 11 月 6 日的不到一个月的时间里,因为要“抢”微信,可能是最痛苦的日子。
有几个问题,一直萦绕在这段时间,前前后后做过一些解释,这次放在一起讲一讲,尽量让大家了解来龙去脉。
1)为什么要用限量内测方式,不直接给所有人下载?
回到我开头的私货:在一个全新的平台上,做一款要支撑海量用户、高并发的通讯需求,同时有支付、小程序、视频平台等多个大功能模块的应用,还要满足极高频使用下的稳定性,是很大的挑战。
所以,用内测 → 找 bug → 修 bug → 加大内测的方式,是一个更符合软件开发规律的方式。
在原生鸿蒙上,很多 App 也采用了类似的方式。
2)为什么不能公布一个固定的时间,要不定时地放,甚至有时候深夜放?
再回顾下前面的一个私货:两个高速前进、互相影响的复杂系统,让开发就像一场修行。
举一个我深度围观的例子:
某天晚上的 19:20 左右,项目组微信支付团队发现,即将要上架的最新尝鲜版的微信,小部分用户的转账入口出现 bug,点击后无反应。
微信支付团队和项目组基础技术团队开始同步排查问题。
20:15,客服团队同步后台客诉情况。
20:57,微信支付团队初步定位,有问题的代码是今日合入导致的,疑似是 LiteApp(跨端的框架,微信转账是鸿蒙第一个使用这个框架的功能)的问题。
21:31,进一步定位到问题,在某些比较极端的情况下,LiteApp 的文件缓存写入被系统提示权限不足,联系华为技术团队一起定位。
21:47,支付技术团队完成问题修复,合入后,提交版本给测试团队。
22:32,支付技术团队复盘问题,提出后续改进措施:测试、开发严谨度提升。
22:41,微信基础技术团队向华为应用商店提审新版本内测包。
22:54,向华为应用商店提审尝鲜版。
23:30,最新尝鲜版微信通过审核,上架尝鲜专区,转账问题修复。
3)为什么那段时间,一边抢不到,一边有人在二手平台上卖安装包?
看到售卖安装包的链接,我们也很震惊,立刻找了华为一起排查原因,简单来说,是因为应用商店没有做严格的鉴权,有人用技术手段从商店里抓了安装包来安装,甚至教这种办法牟利。很快,华为也修复解决了这个问题。
4)为什么老是瞬间就抢光?
有一段时间,实际登录微信的名额,远远低于放量的名额。再次排查发现,有人用类似抢票软件的“脚本”,去刷应用商店的放量,也因此触发了商店的安全机制,拦截了大部分的需求。
5)那为什么不能提前收集愿意参加内测的用户名单,给他们定向发测试版就好了,其他人用稳定版,不就不用一次次地抢了?
这确实也是我们更希望的方式。大家“抢”微信,更本质的原因是需要用微信。
但当时有几个客观的限制条件:一个稳定的、必须的基础功能都具备的版本,需要多次的迭代;鸿蒙对一个 App 内测名额的上限,有比较大的限制,一个新功能稳定性的测试,需要的用户量级要远超于此。
4、“大家的键盘都被敲冒烟了”
这段时间,我也获得了屌毛的美名。
当然,我理解,这更多是情绪的宣泄。
我不是开发人员,但从深度围观中,能感受到两个团队的不易。
有一次在微博开玩笑,“我之前说开发同事键盘都敲冒烟了,其实不夸张。从开发同事的反馈里,我能感受到鸿蒙开发同学的键盘应该也不好受。”
转天刚好是 10 月 24 日,程序员节,华为终端的 CTO 李小龙先生转了这条微博,写到:
今天是 1024 程序员节,我们要致敬广大鸿蒙开发者朋友们,同时也感谢广大用户为我们反馈问题,大家的宝贵意见对鸿蒙生态的完善与提升很有帮助。如 @客村小蒋 所说,尽快发现问题、修复问题,给广大用户带来极致体验,是各厂商和鸿蒙的共同目标。构建鸿蒙生态是一个艰巨的任务,即使已经取得了一些进展,但还是面临着很多挑战。华为与国内上万家生态伙伴、数十万人共同投入,展现了强大的合作力量。现在每天都有大量鸿蒙原生应用上架,且迭代飞速,有些甚至每天迭代一个版本。两天前 HarmonyOS NEXT 正式发布,我们也会和各厂商、广大开发者一起继续努力,也希望更多的用户升级、体验,反馈意见
5、稳定版本不限量下载,测试版同步进行
11 月 6 日,经过一个月的高速迭代,基础功能有所完善的稳定版本有了。
和华为团队进行了一个极其高效的线上会议后,内测名额的上限也有了大幅提升。
收集愿意参加内测的用户名单,给他们定向发测试版,其他人用稳定版的方案,终于可行。
之后就是持续的:新的测试版邀请内测 → 抓 bug → 修 bug → 扩大测试 → 更新稳定版 → ……
直到今天的正式版上线,开发、产品、测试、生态合作…… 所有参与到这个项目里的团队,都未有一天松懈。
正式版,是一个新的继续向前的开始。
6、被误解是表达者的宿命,但不该是建造者的
我的微博简介里原来有一句话,叫“制造熵减,尝试努力消除一些误解”。
很装 x。
“熵减”是“熵增”的反义词。啥叫“熵增”,我的理解就是世界是一个巨大的,不断从有序向无序转化的混沌体。
被误解,是任何一个系统或者物体的宿命。
但是,如果不断有外力来施加影响,起码是能减缓有序向无序转化的速度的。
后来请教了我的朋友里,最有文化的一位哈佛博后,他告诉我,“熵减”可能无法制造,更好的说法,或许是“驱动熵减”。
现实里我虽然内向,在网上却是个爱说话的人,尽管被叫成叼毛,但很高兴应该还是有一些朋友因为有了更多的了解,有了新的判断。
不然应该不会同时有那么多人叫我靓仔
现在回忆起来轻松很多,但在需要“抢”微信的那段时间里,
我个人被骂的程度,也是我从来没有经历过的,
严重的时候,自认内心强大的我,睡眠甚至也受了点影响,
将心比心,作为一个并未实际参与开发,仅是围观的人,
已经有如此大的心理波动。
我就更想找一个合适的机会,
讲一讲同事开发鸿蒙微信的一些故事,
给更多的朋友更多的视角。
感谢大家一直以来的陪伴、反馈。