設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

微信員工:原生鴻蒙是一套新的技術(shù)框架,意味著 App 要完全重寫

2025/1/9 21:34:25 來源:IT之家 作者:歸瀧(實(shí)習(xí)) 責(zé)編:歸瀧
感謝IT之家網(wǎng)友 雨雪載途 的線索投遞!

IT之家 1 月 9 日消息,微信純血鴻蒙版 App 今日正式登陸手機(jī)端華為應(yīng)用市場(App Gallery),版本號為 1.0.3.42。

騰訊 WXG(微信事業(yè)群)員工 @客村小蔣 今日發(fā)布長文總結(jié)了微信純血鴻蒙版 App 上架歷程,IT之家附原文如下:

今天,微信鴻蒙原生版正式上架應(yīng)用商店了。

有些話,想說一說,給這段時(shí)間做一個(gè)總結(jié)。

現(xiàn)在講究零幀起手,也就是要講就講最關(guān)鍵的,不要前面各種鋪墊,最后夾帶私貨。

但身份和視角的問題,我今天要說的,可能都是私貨。

負(fù)責(zé)鴻蒙微信開發(fā)的大哥,是老廣研,當(dāng)年開發(fā)微信 1.0 的那批成員中的一位。

也就是說,他在鵝廠的時(shí)間,比微信的歷史都久。

當(dāng)年的 1.0,大哥負(fù)責(zé)搞塞班(Symbian)微信,曾經(jīng)的諾基亞,從品牌到份額,應(yīng)該是遠(yuǎn)超今天的蘋果的。

但作為一個(gè)開放度遠(yuǎn)不如現(xiàn)在的 iOS 和 Android 的“原始操作系統(tǒng)”,在塞班上做東西,是刀耕火種。

大哥帶著團(tuán)隊(duì)肯鉆研,硬在塞班上手搓出了朋友圈、公眾號。

沒有想到,諾基亞這樣的巨人的轟然倒塌,完全不以人的意志為轉(zhuǎn)移。

之后大哥帶著團(tuán)隊(duì)做智能手表、車機(jī),包括最早的 Linux PC 端的微信。

不同品牌、不同終端,比手機(jī)更碎片化的生態(tài),非常需要一個(gè)跨平臺的內(nèi)核,把最重要、最基礎(chǔ)的能力搭成可復(fù)用的基建。

剛好和團(tuán)隊(duì)一起看了當(dāng)時(shí)熱映的《阿麗塔:戰(zhàn)斗天使》,大哥說我們剛立項(xiàng)的跨平臺內(nèi)核,就叫“阿麗塔內(nèi)核”吧。

阿麗塔,又帥又能打。

阿麗塔內(nèi)核,也成了微信跨平臺開發(fā)的基建。

微信鴻蒙版,也受益于此。

這樣的履歷,其實(shí)冥冥中有注定。

2024 年 3 月 21 日,一份簡單又正式的通知來了,大家已經(jīng)決定了,鴻蒙微信,你牽頭來搞。

1、搭基建:第一天開始,鴻蒙微信就是按照“三峽大壩”建的

原生鴻蒙(HarmonyOS NEXT)完全是一套新的技術(shù)框架,編程語言是獨(dú)特的 ArkTS 語言,這意味著所有的 App 都要完全重寫?!?/p>

這句話,我經(jīng)常會跟不同的朋友說起。

不過,對微信團(tuán)隊(duì)來說,學(xué)習(xí)新的編程語言,可能是整個(gè)適配工作中,最不算困難的事情之一。

在一個(gè)全新的平臺上,做一款要支撐海量用戶、高并發(fā)的通訊需求,同時(shí)有支付、小程序、視頻平臺等多個(gè)大功能模塊的應(yīng)用,還要滿足極高頻使用下的穩(wěn)定性,是更大的挑戰(zhàn)。

這也是我全篇最大的私貨,我可能會反復(fù)提起。

也有人說,原生鴻蒙在 2024 年 10 月才開始公測,怎么就海量用戶了?

我記得原生鴻蒙有一次發(fā)布會用的主題叫,“待到山花爛漫時(shí)”,信念的力量,很強(qiáng)大。

微信的技術(shù)團(tuán)隊(duì),依靠的則是對技術(shù)的狂熱信念。

iOS、安卓微信多年的捶打,他們早已把一些信念根植于團(tuán)隊(duì)中:比如大系統(tǒng)小做、讓一切可擴(kuò)展、必須有基礎(chǔ)組件、灰度發(fā)布、精細(xì)監(jiān)控、迅速響應(yīng),一切都是保證系統(tǒng)在穩(wěn)定的前提下,能夠敏捷響應(yīng)產(chǎn)品需求。

微信原生鴻蒙團(tuán)隊(duì),剛開始組建,就有一個(gè)堪比 iOS、安卓客戶端開發(fā)團(tuán)隊(duì)的規(guī)模。

“今天是這些人做鴻蒙微信,幾年以后,還應(yīng)該是這些人在做?!贝蟾绲?leader,另一個(gè)我非常敬重的技術(shù)大哥說到。

2、搭基建,修 bug,是一種修行

阿麗塔內(nèi)核,在開發(fā)鴻蒙微信的過程中,居功至偉。

但這只是基建的第一步。

萬丈高樓,第一天就要把地基打得足夠深、足夠牢。

第二步,還需要設(shè)計(jì)好鴻蒙微信客戶端的架構(gòu)、編寫好各個(gè)模塊的文檔,讓后續(xù)第二三階段的業(yè)務(wù)進(jìn)場后能夠高效進(jìn)行開發(fā)。

這一步極其有難度,不僅要快速滿足業(yè)務(wù)訴求,還需要考慮業(yè)務(wù)之間的解耦,并具備長期的高可擴(kuò)展性。

也就是說,讓微信各個(gè)相互依存的模塊,又在技術(shù)上盡量減少對彼此的依賴,避免因某個(gè)模塊的故障影響其他功能。同時(shí),有一個(gè)擴(kuò)展性極高的框架。

也是這個(gè)時(shí)間,大哥帶著團(tuán)隊(duì)開展了頻率極高的對內(nèi)對外溝通。

對外,和華為的技術(shù)團(tuán)隊(duì)進(jìn)行了頻率極高的線上線下交流;對內(nèi),push 各個(gè)業(yè)務(wù)團(tuán)隊(duì)將各自的基礎(chǔ)庫移植進(jìn)來。

從搭基建一直到今天,修 bug 都是一個(gè)始終伴隨開發(fā)過程的動(dòng)作。

有一個(gè)經(jīng)典的氣死程序員的問題,“程序員為什么要一直寫 bug ,不能一次性寫好嗎?”

程序員們也進(jìn)行了各種“狡辯”,從類比答題、園丁和雜草、奇葩顧客買肉夾饃,到賭氣只要產(chǎn)品經(jīng)理永遠(yuǎn)不加新功能就不會有 bug。

其實(shí)核心就幾個(gè)點(diǎn):需求經(jīng)常會變、系統(tǒng)太復(fù)雜、意外情況多、時(shí)間和成本有限,以及“人”,總是會出錯(cuò)的。

鴻蒙遇上微信,這樣的問題就會加倍,兩個(gè)高速前進(jìn)、互相影響的復(fù)雜系統(tǒng),讓修 bug 就像一場修行。

6 月,在適配鴻蒙 NEXT.0.0.6x 的某個(gè)版本過程中,出現(xiàn)了一個(gè)經(jīng)常導(dǎo)致開發(fā)中的微信閃退的 bug。

n

兩個(gè)團(tuán)隊(duì)一起排查了一周多都毫無進(jìn)展,大哥睡覺時(shí),腦子里都在想這個(gè) bug。

最后甚至是靠靈光一閃,從系統(tǒng)的一個(gè)底層 API 中發(fā)現(xiàn)了問題:同樣的代碼邏輯,在 iOS 上和安卓上都沒問題,但在鴻蒙上就會遇到問題。

發(fā)現(xiàn)問題后,就能快速解決了。

幾個(gè)月后,我第一次聽說這段經(jīng)歷時(shí),居然回憶起了小時(shí)候看的愛迪生試驗(yàn)燈絲的故事。

3、邀請內(nèi)測、上架嘗鮮

2024 年的十一假期,鴻蒙微信開發(fā)團(tuán)隊(duì)的全部人都加了七天班。

10 月 8 日,也就是原生鴻蒙正式公測的這天,鴻蒙微信也開始邀請內(nèi)測。

10 月 12 日,微信測試版上架鴻蒙應(yīng)用商店的“應(yīng)用嘗鮮”專區(qū),用戶可以搶先下載測試。

但如果從一個(gè)普通鴻蒙用戶的角度,從 10 月 12 日到 11 月 6 日的不到一個(gè)月的時(shí)間里,因?yàn)橐皳尅蔽⑿?,可能是最痛苦的日子?/p>

有幾個(gè)問題,一直縈繞在這段時(shí)間,前前后后做過一些解釋,這次放在一起講一講,盡量讓大家了解來龍去脈。

1)為什么要用限量內(nèi)測方式,不直接給所有人下載?

回到我開頭的私貨:在一個(gè)全新的平臺上,做一款要支撐海量用戶、高并發(fā)的通訊需求,同時(shí)有支付、小程序、視頻平臺等多個(gè)大功能模塊的應(yīng)用,還要滿足極高頻使用下的穩(wěn)定性,是很大的挑戰(zhàn)。

所以,用內(nèi)測 → 找 bug → 修 bug → 加大內(nèi)測的方式,是一個(gè)更符合軟件開發(fā)規(guī)律的方式。

在原生鴻蒙上,很多 App 也采用了類似的方式。

2)為什么不能公布一個(gè)固定的時(shí)間,要不定時(shí)地放,甚至有時(shí)候深夜放?

再回顧下前面的一個(gè)私貨:兩個(gè)高速前進(jìn)、互相影響的復(fù)雜系統(tǒng),讓開發(fā)就像一場修行。

舉一個(gè)我深度圍觀的例子:

某天晚上的 19:20 左右,項(xiàng)目組微信支付團(tuán)隊(duì)發(fā)現(xiàn),即將要上架的最新嘗鮮版的微信,小部分用戶的轉(zhuǎn)賬入口出現(xiàn) bug,點(diǎn)擊后無反應(yīng)。

微信支付團(tuán)隊(duì)和項(xiàng)目組基礎(chǔ)技術(shù)團(tuán)隊(duì)開始同步排查問題。

20:15,客服團(tuán)隊(duì)同步后臺客訴情況。

20:57,微信支付團(tuán)隊(duì)初步定位,有問題的代碼是今日合入導(dǎo)致的,疑似是 LiteApp(跨端的框架,微信轉(zhuǎn)賬是鴻蒙第一個(gè)使用這個(gè)框架的功能)的問題。

21:31,進(jìn)一步定位到問題,在某些比較極端的情況下,LiteApp 的文件緩存寫入被系統(tǒng)提示權(quán)限不足,聯(lián)系華為技術(shù)團(tuán)隊(duì)一起定位。

21:47,支付技術(shù)團(tuán)隊(duì)完成問題修復(fù),合入后,提交版本給測試團(tuán)隊(duì)。

22:32,支付技術(shù)團(tuán)隊(duì)復(fù)盤問題,提出后續(xù)改進(jìn)措施:測試、開發(fā)嚴(yán)謹(jǐn)度提升。

22:41,微信基礎(chǔ)技術(shù)團(tuán)隊(duì)向華為應(yīng)用商店提審新版本內(nèi)測包。

22:54,向華為應(yīng)用商店提審嘗鮮版。

23:30,最新嘗鮮版微信通過審核,上架嘗鮮專區(qū),轉(zhuǎn)賬問題修復(fù)。

3)為什么那段時(shí)間,一邊搶不到,一邊有人在二手平臺上賣安裝包?

看到售賣安裝包的鏈接,我們也很震驚,立刻找了華為一起排查原因,簡單來說,是因?yàn)閼?yīng)用商店沒有做嚴(yán)格的鑒權(quán),有人用技術(shù)手段從商店里抓了安裝包來安裝,甚至教這種辦法牟利。很快,華為也修復(fù)解決了這個(gè)問題。

4)為什么老是瞬間就搶光?

有一段時(shí)間,實(shí)際登錄微信的名額,遠(yuǎn)遠(yuǎn)低于放量的名額。再次排查發(fā)現(xiàn),有人用類似搶票軟件的“腳本”,去刷應(yīng)用商店的放量,也因此觸發(fā)了商店的安全機(jī)制,攔截了大部分的需求。

5)那為什么不能提前收集愿意參加內(nèi)測的用戶名單,給他們定向發(fā)測試版就好了,其他人用穩(wěn)定版,不就不用一次次地?fù)屃耍?/p>

這確實(shí)也是我們更希望的方式。大家“搶”微信,更本質(zhì)的原因是需要用微信。

但當(dāng)時(shí)有幾個(gè)客觀的限制條件:一個(gè)穩(wěn)定的、必須的基礎(chǔ)功能都具備的版本,需要多次的迭代;鴻蒙對一個(gè) App 內(nèi)測名額的上限,有比較大的限制,一個(gè)新功能穩(wěn)定性的測試,需要的用戶量級要遠(yuǎn)超于此。

4、“大家的鍵盤都被敲冒煙了”

這段時(shí)間,我也獲得了屌毛的美名。

當(dāng)然,我理解,這更多是情緒的宣泄。

我不是開發(fā)人員,但從深度圍觀中,能感受到兩個(gè)團(tuán)隊(duì)的不易。

有一次在微博開玩笑,“我之前說開發(fā)同事鍵盤都敲冒煙了,其實(shí)不夸張。從開發(fā)同事的反饋里,我能感受到鴻蒙開發(fā)同學(xué)的鍵盤應(yīng)該也不好受?!?/p>

轉(zhuǎn)天剛好是 10 月 24 日,程序員節(jié),華為終端的 CTO 李小龍先生轉(zhuǎn)了這條微博,寫到:

今天是 1024 程序員節(jié),我們要致敬廣大鴻蒙開發(fā)者朋友們,同時(shí)也感謝廣大用戶為我們反饋問題,大家的寶貴意見對鴻蒙生態(tài)的完善與提升很有幫助。如 @客村小蔣 所說,盡快發(fā)現(xiàn)問題、修復(fù)問題,給廣大用戶帶來極致體驗(yàn),是各廠商和鴻蒙的共同目標(biāo)。構(gòu)建鴻蒙生態(tài)是一個(gè)艱巨的任務(wù),即使已經(jīng)取得了一些進(jìn)展,但還是面臨著很多挑戰(zhàn)。華為與國內(nèi)上萬家生態(tài)伙伴、數(shù)十萬人共同投入,展現(xiàn)了強(qiáng)大的合作力量?,F(xiàn)在每天都有大量鴻蒙原生應(yīng)用上架,且迭代飛速,有些甚至每天迭代一個(gè)版本。兩天前 HarmonyOS NEXT 正式發(fā)布,我們也會和各廠商、廣大開發(fā)者一起繼續(xù)努力,也希望更多的用戶升級、體驗(yàn),反饋意見

5、穩(wěn)定版本不限量下載,測試版同步進(jìn)行

11 月 6 日,經(jīng)過一個(gè)月的高速迭代,基礎(chǔ)功能有所完善的穩(wěn)定版本有了。

和華為團(tuán)隊(duì)進(jìn)行了一個(gè)極其高效的線上會議后,內(nèi)測名額的上限也有了大幅提升。

收集愿意參加內(nèi)測的用戶名單,給他們定向發(fā)測試版,其他人用穩(wěn)定版的方案,終于可行。

之后就是持續(xù)的:新的測試版邀請內(nèi)測 → 抓 bug → 修 bug → 擴(kuò)大測試 → 更新穩(wěn)定版 → ……

直到今天的正式版上線,開發(fā)、產(chǎn)品、測試、生態(tài)合作…… 所有參與到這個(gè)項(xiàng)目里的團(tuán)隊(duì),都未有一天松懈。

正式版,是一個(gè)新的繼續(xù)向前的開始。

6、被誤解是表達(dá)者的宿命,但不該是建造者的

我的微博簡介里原來有一句話,叫“制造熵減,嘗試努力消除一些誤解”。

很裝 x。

“熵減”是“熵增”的反義詞。啥叫“熵增”,我的理解就是世界是一個(gè)巨大的,不斷從有序向無序轉(zhuǎn)化的混沌體。

被誤解,是任何一個(gè)系統(tǒng)或者物體的宿命。

但是,如果不斷有外力來施加影響,起碼是能減緩有序向無序轉(zhuǎn)化的速度的。

后來請教了我的朋友里,最有文化的一位哈佛博后,他告訴我,“熵減”可能無法制造,更好的說法,或許是“驅(qū)動(dòng)熵減”。

現(xiàn)實(shí)里我雖然內(nèi)向,在網(wǎng)上卻是個(gè)愛說話的人,盡管被叫成叼毛,但很高興應(yīng)該還是有一些朋友因?yàn)橛辛烁嗟牧私?,有了新的判斷?/p>

不然應(yīng)該不會同時(shí)有那么多人叫我靚仔

現(xiàn)在回憶起來輕松很多,但在需要“搶”微信的那段時(shí)間里,

我個(gè)人被罵的程度,也是我從來沒有經(jīng)歷過的,

嚴(yán)重的時(shí)候,自認(rèn)內(nèi)心強(qiáng)大的我,睡眠甚至也受了點(diǎn)影響,

將心比心,作為一個(gè)并未實(shí)際參與開發(fā),僅是圍觀的人,

已經(jīng)有如此大的心理波動(dòng)。

我就更想找一個(gè)合適的機(jī)會,

講一講同事開發(fā)鴻蒙微信的一些故事,

給更多的朋友更多的視角。

感謝大家一直以來的陪伴、反饋。

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:微信,HarmonyOS NEXT純血鴻蒙

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會買 要知