近日,華為心聲社區(qū)發(fā)布了一篇《華為手機(jī)操作系統(tǒng)往事》的文章,并且昨天被余承東轉(zhuǎn)發(fā)到微信朋友圈,并評(píng)論“除了自己的芯片,還有操作系統(tǒng)的核心能力打造”。在《華為手機(jī)操作系統(tǒng)往事》的文章中,CBG軟件部總裁王成錄在文章中講述了讓軟件成為華為手機(jī)的硬實(shí)力心路歷程,特別是他們剛剛發(fā)布的“華為方舟編譯器”。
《華為手機(jī)操作系統(tǒng)往事》全文如下:
4月11日,CBG總裁余承東在上海發(fā)布了P30系列手機(jī)。發(fā)布會(huì)后,一個(gè)聽(tīng)上去有點(diǎn)晦澀的新名詞——“方舟編譯器”迅速登上了知乎社區(qū)的熱搜榜,引發(fā)了IT從業(yè)者、數(shù)碼博主、資深碼農(nóng)乃至普通消費(fèi)者的極大關(guān)注和廣泛熱議?!熬幾g器是什么?”“華為方舟編譯器和安卓原生的AOT/JIT(Ahead of Time/Just in Time)有什么區(qū)別?” “方舟編譯器對(duì)安卓生態(tài)有何意義?”等,網(wǎng)友對(duì)各種深淺不一問(wèn)題的討論不亦樂(lè)乎,諸多跟帖評(píng)論精彩紛呈,不得不說(shuō)高手在民間。
其中一位網(wǎng)友的評(píng)論很有代表性:“昨天的華為發(fā)布會(huì),讓我感到驚喜的是,在如今這個(gè)年代,會(huì)有一家國(guó)內(nèi)消費(fèi)電子公司把編譯器作為一大亮點(diǎn)來(lái)介紹。華為在基礎(chǔ)研發(fā)上的持續(xù)高投入,加上手機(jī)終端市場(chǎng)占有率向全球第一邁進(jìn),使得‘自建生態(tài)’的夢(mèng)想,對(duì)一家中國(guó)公司而言首次成為可能。”
編譯器是將程序開(kāi)發(fā)用的高級(jí)語(yǔ)言轉(zhuǎn)換成機(jī)器指令的軟件,可以理解成軟件與硬件之間的橋梁。那方舟編譯器會(huì)帶來(lái)怎樣的價(jià)值?簡(jiǎn)單點(diǎn)說(shuō),是解決現(xiàn)有安卓這座橋梁并不順暢的頑疾,是對(duì)安卓真正深度的優(yōu)化與革新,可以說(shuō)為安卓產(chǎn)業(yè)注入了新的生命力。
而這只是華為一系列軟件創(chuàng)新的最新成果。今天,從市場(chǎng)與用戶的反饋來(lái)看,越來(lái)越多的消費(fèi)者認(rèn)可華為手機(jī)長(zhǎng)期使用后依然流暢,對(duì)用華為手機(jī)玩游戲體驗(yàn)不佳的吐槽也越來(lái)越少。這既歸功于華為手機(jī)芯片和硬件能力的快速提升,更離不開(kāi)軟件全棧的深度優(yōu)化與技術(shù)創(chuàng)新。
我們深知,任何軟硬件的技術(shù)優(yōu)化和創(chuàng)新探索都必須瞄準(zhǔn)用戶體驗(yàn)。服務(wù)近5億在網(wǎng)用戶的華為手機(jī)操作系統(tǒng)EMUI是如何圍繞用戶體驗(yàn),不斷進(jìn)行深層創(chuàng)新,推出硬核技術(shù)的?
故事還得從幾年前說(shuō)起。
面向消費(fèi)者的軟件怎么做
3年前,我在負(fù)責(zé)2012實(shí)驗(yàn)室的中央軟件院,7月份,余總的一個(gè)電話,讓我有機(jī)會(huì)來(lái)到CBG負(fù)責(zé)終端軟件的研發(fā)工作。當(dāng)時(shí)的心情既興奮又忐忑。興奮在于,從進(jìn)公司伊始,我一直從事和軟件緊密相關(guān)的工作。在我心目中,完成大規(guī)模工業(yè)化的軟件研發(fā),不啻以虛擬世界的0和1為建筑材料,去設(shè)計(jì)建造一座宏偉的殿堂。而如何能讓我們的建造成果和過(guò)程都達(dá)到世界級(jí),給我們的用戶和合作伙伴帶來(lái)價(jià)值,一直是我的追求與夢(mèng)想。
忐忑也隨之而來(lái)。雖然都是軟件研發(fā),但是智能手機(jī)操作系統(tǒng)對(duì)于我是一個(gè)全新的領(lǐng)域。首先是標(biāo)準(zhǔn)化程度大不相同,電信設(shè)備軟件有非常完備的行業(yè)標(biāo)準(zhǔn),ITU、3GPP、IETF等,實(shí)際上把網(wǎng)絡(luò)架構(gòu)和網(wǎng)元架構(gòu)標(biāo)準(zhǔn)化了。研發(fā)需要做的就是根據(jù)標(biāo)準(zhǔn)協(xié)議,遵從一定的開(kāi)發(fā)流程規(guī)范,比如IPD(集成產(chǎn)品開(kāi)發(fā)),以及合理的項(xiàng)目管理來(lái)實(shí)現(xiàn)相應(yīng)的交付目標(biāo)。同時(shí),電信設(shè)備軟件的需求也是相對(duì)清晰和匯聚的,全球幾百家運(yùn)營(yíng)商的需求百分之七十以上幾乎是一致的,而且設(shè)備的日常維護(hù)主體是經(jīng)過(guò)專業(yè)化訓(xùn)練,具有相當(dāng)技術(shù)水平的運(yùn)維人員,可以相對(duì)清晰準(zhǔn)確地反饋設(shè)備使用中的各種問(wèn)題。
而面向消費(fèi)者的軟件則大為不同。廣泛流行的智能手機(jī)操作系統(tǒng)最終只留下了iOS和安卓。與封閉的iOS框定一切來(lái)保證體驗(yàn)不同,安卓是由谷歌主導(dǎo)的AOSP社區(qū)開(kāi)源,但原生安卓實(shí)際上是Design Reference(設(shè)計(jì)參考),具體到每一個(gè)功能如何取舍和擴(kuò)展,與海量的第三方APPs如何交互,并沒(méi)有詳細(xì)而統(tǒng)一的標(biāo)準(zhǔn)可以遵從,都是各個(gè)手機(jī)廠家根據(jù)自己的硬件平臺(tái)、產(chǎn)品定位和目標(biāo)用戶群,做大量的適配和優(yōu)化修改,生態(tài)碎片化嚴(yán)重。一切只能以消費(fèi)者體驗(yàn)為準(zhǔn)繩。
在安卓開(kāi)放的大環(huán)境下,怎么做才能實(shí)現(xiàn)最好的用戶體驗(yàn)?在iOS已經(jīng)通過(guò)多年的積累樹(shù)立了牢固的領(lǐng)先形象時(shí),怎樣才能讓EMUI被越來(lái)越多的消費(fèi)者認(rèn)可,是我和整個(gè)軟件團(tuán)隊(duì)面臨的最大挑戰(zhàn)。
聚焦最大的用戶痛點(diǎn) “在飛行中換引擎”
我們決定將“用戶體驗(yàn)最佳”作為終端軟件追求的目標(biāo)。而首要解決的問(wèn)題就是,什么最影響用戶體驗(yàn)?經(jīng)過(guò)大量的調(diào)查和訪談,團(tuán)隊(duì)很快發(fā)現(xiàn),最為安卓用戶詬病的,是長(zhǎng)期使用后的卡頓,這也是影響消費(fèi)者體驗(yàn)的第一大障礙。
一個(gè)熱愛(ài)電子產(chǎn)品的同事和我講述過(guò)他的智能手機(jī)使用經(jīng)歷。在安卓手機(jī)進(jìn)入大屏年代后,2013年他購(gòu)買(mǎi)了當(dāng)時(shí)做得最好的安卓手機(jī)S和H,用的還是頂級(jí)配置,但用了一年多后,即使每晚不做任何操作,都會(huì)消耗百分之十幾的電量;更讓他無(wú)法忍受的是,卡頓、死機(jī)幾乎成了家常便飯,必須要不斷重啟和清理內(nèi)存才能勉強(qiáng)使用。用他的話說(shuō),不是我在用手機(jī),而是手機(jī)在用我。
為什么即便擁有很高的硬件配置,即便是當(dāng)時(shí)最好的安卓手機(jī),也會(huì)面臨更多的穩(wěn)定性和流暢性問(wèn)題?是哪些因素導(dǎo)致了長(zhǎng)期使用后的卡頓和死機(jī)?我們決定“啃”下卡頓這個(gè)最大的硬骨頭。EMUI團(tuán)隊(duì)成立了專門(mén)的“特戰(zhàn)組”集中攻關(guān)。特戰(zhàn)組詳細(xì)分析了安卓系統(tǒng)下四百多臺(tái)幾十種機(jī)型的手機(jī),經(jīng)過(guò)反復(fù)的問(wèn)題重現(xiàn)和軟硬件的全棧分析,共發(fā)現(xiàn)以下四個(gè)導(dǎo)致卡頓、死機(jī)的主因:
安卓系統(tǒng)的松散管理,應(yīng)用對(duì)資源的使用缺少規(guī)則,就像建了很多道路卻沒(méi)有交通規(guī)則,最終是擁塞和混亂;
系統(tǒng)硬件資源協(xié)同缺乏,僅僅靠增加RAM(運(yùn)行內(nèi)存)資源不能解決問(wèn)題,而是要更有效地調(diào)度與使用資源;
存儲(chǔ)碎片累積效應(yīng),隨著使用時(shí)間的增加,存儲(chǔ)碎片化日益嚴(yán)重,數(shù)據(jù)讀寫(xiě)速度明顯下降,系統(tǒng)卡頓頻繁、加重;
APP膨脹嚴(yán)重,特別是頭部應(yīng)用功能不斷堆積,導(dǎo)致產(chǎn)生的數(shù)據(jù)急劇增長(zhǎng),搶占系統(tǒng)資源嚴(yán)重,拖累系統(tǒng)運(yùn)行速度。
這些問(wèn)題,幾乎涉及到從芯片到軟件全棧,如果只是見(jiàn)招拆招被動(dòng)應(yīng)對(duì),是不可能真正解決問(wèn)題的。必須全面系統(tǒng)分析,才能拿出全面徹底的解決方案。但安卓系統(tǒng)本身極其龐大,代碼行數(shù)過(guò)億,在這么龐大的系統(tǒng)上“動(dòng)手術(shù)”,挑戰(zhàn)可想而知。會(huì)不會(huì)在優(yōu)化的同時(shí)導(dǎo)致其它兼容性的問(wèn)題?有沒(méi)有足夠能力實(shí)現(xiàn)預(yù)定的目標(biāo)?
但是,帶著有問(wèn)題的引擎勉強(qiáng)飛行,只會(huì)釀成更大的事故。畏縮不前不如放手一搏。通過(guò)大量細(xì)致的分析和研判,我們決心破釜沉舟——干!最終,經(jīng)過(guò)專家的反復(fù)診斷和討論,拿出了5大“藥方”來(lái)一一解決上述問(wèn)題。
簡(jiǎn)單來(lái)說(shuō),人工智能是核心,對(duì)應(yīng)用側(cè)智能分析,判斷應(yīng)用的資源需求特征(計(jì)算密集型、RAM密集型、IO密集型等);對(duì)硬件資源側(cè),感知CPU、內(nèi)存、IO(Input/Output)、存儲(chǔ)等資源狀態(tài),通過(guò)AI算法實(shí)現(xiàn)應(yīng)用需求與硬件資源的最佳匹配,并及時(shí)合理地整理和回收空閑資源,解決上面提到的硬件資源協(xié)同和APP占用空間過(guò)度膨脹的問(wèn)題。
“天生快 一生快”系統(tǒng)原理圖
“抽屜式”替換 為安卓注入新的生命力
對(duì)于存儲(chǔ)碎片化的問(wèn)題,我們采取了一個(gè)比較激進(jìn)的方案——替換了安卓原生文件系統(tǒng)。
安卓從誕生之初就直接架構(gòu)在Linux基礎(chǔ)上,其文件系統(tǒng)最初并未考慮碎片文件的快速整理。長(zhǎng)時(shí)間以來(lái),安卓手機(jī)都是從Linux繼承文件系統(tǒng),這個(gè)文件系統(tǒng)對(duì)智能手機(jī)上的Flash存儲(chǔ)并不友好,也是碎片化的主因。我們決定用F2FS(Flash Friendly File System)文件系統(tǒng)來(lái)替換原生的文件系統(tǒng),不僅因?yàn)镕2FS是為Flash量身定做,還因?yàn)樗梢允故謾C(jī)極大程度上避免文件碎片。
F2FS是由友商S公司原創(chuàng)并開(kāi)源的。但S公司自己并沒(méi)有率先使用。因?yàn)槲募到y(tǒng)決定存儲(chǔ)上所有文件的存儲(chǔ)與訪問(wèn)方式,好比器官移植手術(shù),替換文件系統(tǒng)的復(fù)雜度和風(fēng)險(xiǎn)是巨大的。
我們雖然在實(shí)驗(yàn)室仔細(xì)驗(yàn)證了半年多,但替換文件系統(tǒng)的高復(fù)雜度和高風(fēng)險(xiǎn),仍然是決策的最大顧慮。軟件管理團(tuán)隊(duì)和技術(shù)團(tuán)隊(duì)多次分析后,最終果斷拍板,并和CBG簽訂了軍令狀,承諾搞不定或出了問(wèn)題就“軍法處置”。
得益于團(tuán)隊(duì)膽大心細(xì)的執(zhí)行力,F(xiàn)2FS文件系統(tǒng)最終替換成功,成為解決卡頓頑疾全方案中最重要的組成部分。
2016年,伴隨著Mate 9 系列發(fā)布的EMUI5.0,我們?yōu)檫@個(gè)解決安卓卡頓的方案取了一個(gè)簡(jiǎn)單易懂的名字,叫做“天生快 一生快”,同時(shí)承諾消費(fèi)者“18個(gè)月不卡頓”,這個(gè)當(dāng)時(shí)看似“吹?!钡某兄Z,今天已經(jīng)成為現(xiàn)實(shí)。從市場(chǎng)反應(yīng)和消費(fèi)者反饋來(lái)看,在安卓陣營(yíng)里,華為手機(jī)率先甩掉了“卡頓”的帽子。
2018年,谷歌將F2FS吸收到安卓原生版本中,所有安卓廠商因此受益,對(duì)安卓生態(tài)是很有價(jià)值的貢獻(xiàn)。至今,谷歌的自研手機(jī)Pixel 3也使用了F2FS文件系統(tǒng)。
基于理性的技術(shù)判斷和果斷決策,讓我們領(lǐng)先了所有安卓廠商一步。更難能可貴的是,為了實(shí)現(xiàn)安全替換,逼迫我們的團(tuán)隊(duì)沒(méi)有退路地仔細(xì)分析了原生系統(tǒng)的底層,邊戰(zhàn)邊練,讓我們的團(tuán)隊(duì)積累了非常寶貴的經(jīng)驗(yàn),也嘗到了深度優(yōu)化安卓的甜頭。第一道考題,我和軟件團(tuán)隊(duì)初步獲得了CBG管理團(tuán)隊(duì)的信任,有了一個(gè)好的起點(diǎn)。
走向生態(tài)協(xié)同的“深水區(qū)”
在解決卡頓這個(gè)頑疾的過(guò)程中,我們就發(fā)現(xiàn)安卓生態(tài)的松散是一個(gè)挑戰(zhàn),這并不能通過(guò)技術(shù)來(lái)解決,但又和用戶體驗(yàn)息息相關(guān)。
相較于iOS對(duì)生態(tài)的嚴(yán)格管控,安卓生態(tài)主要依賴玩家的自律自覺(jué)。打個(gè)不恰當(dāng)?shù)谋确剑沧吭到y(tǒng)好比谷歌修好的一條高速公路,谷歌設(shè)想上路的自然是遵守交通規(guī)則的機(jī)動(dòng)車,而實(shí)際情況卻是,不但機(jī)動(dòng)車上路了,各種牛車、馬車、三輪車和行人都來(lái)了,加上沒(méi)有交警(優(yōu)先級(jí)調(diào)度系統(tǒng))負(fù)責(zé)管理,擁堵就成了常態(tài)。
這種狀況在國(guó)內(nèi)尤甚。手機(jī)廠家不斷投入的技術(shù),只是把端側(cè)的運(yùn)行環(huán)境做得越來(lái)越高效、整潔。但應(yīng)用市場(chǎng)的魚(yú)龍混雜對(duì)用戶體驗(yàn)影響巨大,各安卓手機(jī)廠家不僅擁有自家的應(yīng)用市場(chǎng),還有種類繁多的第三方應(yīng)用市場(chǎng),再加上通過(guò)瀏覽器鏈接就能下載安裝App,還有各種木馬App、惡意軟件,互相引導(dǎo)安裝、偽裝后臺(tái)、無(wú)限制申請(qǐng)手機(jī)系統(tǒng)資源等,帶來(lái)的問(wèn)題就是Apps對(duì)安卓系統(tǒng)資源的使用極不規(guī)范,甚至是惡意使用。
“病從口入”,導(dǎo)致的結(jié)果就是,用戶體驗(yàn)不斷受損。華為面臨一個(gè)選擇,是隨大流,還是牽頭豎起大旗,聯(lián)合重量級(jí)生態(tài)玩家,逐步規(guī)范、凈化安卓生態(tài),把優(yōu)質(zhì)的體驗(yàn)還給消費(fèi)者??jī)H僅依靠手機(jī)廠家自身的持續(xù)技術(shù)投入和優(yōu)化已然不夠,走向生態(tài)協(xié)同的“深水區(qū)”是華為終端軟件必須要邁出的一步。
經(jīng)過(guò)大量的前期溝通討論,2016年11月14日,在上海的Mate 9系列發(fā)布會(huì)上,華為聯(lián)合阿里巴巴、百度、騰訊、網(wǎng)易四家企業(yè)共同發(fā)起了安卓綠色聯(lián)盟。作為一個(gè)開(kāi)放的非盈利性組織,希望共同構(gòu)建中國(guó)安卓綠色應(yīng)用環(huán)境,打造安全、可靠、可信、健康的應(yīng)用生態(tài),把極致的應(yīng)用體驗(yàn)帶給消費(fèi)者。
安卓綠色聯(lián)盟成立后,集中發(fā)起廠家的經(jīng)驗(yàn)和智慧,陸續(xù)推出了《安卓綠色聯(lián)盟應(yīng)用體驗(yàn)標(biāo)準(zhǔn)》的1.0和2.0版本,涵蓋了應(yīng)用安裝與運(yùn)行的兼容性、穩(wěn)定性、安全、功耗和性能標(biāo)準(zhǔn)。同時(shí)發(fā)展會(huì)員企業(yè)超過(guò)1000家,覆蓋80%的主流應(yīng)用。
在安卓綠色聯(lián)盟平臺(tái)上,華為提供了超過(guò)3千臺(tái)測(cè)試真機(jī),免費(fèi)向所有安卓應(yīng)用開(kāi)發(fā)者開(kāi)放,只要遠(yuǎn)程登錄,即可申請(qǐng)到相應(yīng)的測(cè)試資源并執(zhí)行測(cè)試;同時(shí),華為把安卓最新版本的變化及時(shí)分享給國(guó)內(nèi)開(kāi)發(fā)者,大大提升了安卓應(yīng)用在新版本上的適配效率。
對(duì)于通過(guò)了《安卓綠色應(yīng)用體驗(yàn)標(biāo)準(zhǔn)》的應(yīng)用打上“綠色應(yīng)用”標(biāo)記,讓消費(fèi)者在應(yīng)用下載時(shí)對(duì)應(yīng)用質(zhì)量的了解一目了然,可以安心使用。通過(guò)2年多的協(xié)作,綠盟已幫助超過(guò)20萬(wàn)開(kāi)發(fā)者進(jìn)行免費(fèi)測(cè)試、牽引Top 3000安卓應(yīng)用降低了高功耗與權(quán)限濫用行為。消費(fèi)者、應(yīng)用開(kāi)發(fā)者、互聯(lián)網(wǎng)廠商和手機(jī)廠家都因此受益。整個(gè)安卓生態(tài)的參與者,都愿意在這個(gè)平臺(tái)上共享經(jīng)驗(yàn)、共同創(chuàng)新。2018年還成立了AI開(kāi)放生態(tài)合作、AI安全設(shè)計(jì)方案、AR、游戲加速四大創(chuàng)新工作組。
我們將和伙伴一起把安卓綠色聯(lián)盟持續(xù)的發(fā)展壯大下去,希望她能成為整個(gè)產(chǎn)業(yè)的一盞明燈,優(yōu)勝劣汰,為所有安卓用戶帶來(lái)極致的應(yīng)用體驗(yàn)。
“嚇人”的GPU Turbo背后
2018年6月,余總在北京發(fā)布“嚇人的技術(shù)”GPU Turbo,不但引起了其他廠商對(duì)于“嚇人”和“Turbo”的跟風(fēng),也在一些主要的科技論壇引起了關(guān)于背后技術(shù)的大討論。
游戲產(chǎn)業(yè)在手機(jī)上的迅猛發(fā)展超乎很多人的預(yù)料,幾乎一半以上的用戶都是手游用戶。早在2016年,國(guó)內(nèi)的手游已經(jīng)占據(jù)了游戲市場(chǎng)的半壁江山,而且如王者榮耀、吃雞等“硬核化”游戲的普及,將游戲?qū)τ谑謾C(jī)圖形處理能力的要求推向了前所未有的高度。而受限于ARM Mali GPU的限制,在與其他頂級(jí)友商的GPU的PK中,華為手機(jī)用戶對(duì)游戲體驗(yàn)的吐槽急劇增多。
手游的體驗(yàn)是不是只能依賴GPU的處理能力,或者類似某些所謂的游戲手機(jī)堆料來(lái)實(shí)現(xiàn)?能不能像整機(jī)性能一樣通過(guò)軟硬協(xié)同來(lái)優(yōu)化?這些問(wèn)題進(jìn)入了我們的視野。說(shuō)干就干,相關(guān)工作馬上開(kāi)始啟動(dòng)。
2017年2月,我們發(fā)起了一場(chǎng)中西合璧的針對(duì)手機(jī)圖形處理性能的攻關(guān)。雖然新加入的海外圖形處理專家給出了很有價(jià)值的思路,但是整個(gè)攻關(guān)過(guò)程并非一馬平川。其中經(jīng)歷了無(wú)數(shù)次嘗試、接近、又推倒重來(lái)的過(guò)程。“勝則舉杯同慶,敗則拼死相救”,來(lái)自美國(guó)、芬蘭、俄羅斯和深圳、杭州、南京、上海的相應(yīng)領(lǐng)域?qū)<覀?,不論部門(mén),不分晝夜,最終達(dá)成了預(yù)期的目標(biāo)。
當(dāng)最后我們說(shuō)出GPU Turbo 可以提升游戲性能的同時(shí)降低功耗,業(yè)界開(kāi)始是一片質(zhì)疑,都覺(jué)得這個(gè)邏輯違反常理。但我們有充足的底氣,從GPU Pipeline(處理隊(duì)列)、CPU/GPU聯(lián)合調(diào)度,到OPEN GL(開(kāi)放圖形庫(kù))各指令的詳細(xì)解讀和細(xì)致調(diào)整,再到圖形處理引擎的重構(gòu)和應(yīng)用負(fù)載的清洗,完整的全棧分析和解決方案,讓我們有足夠的技術(shù)自信,敢于公開(kāi)我們的目標(biāo)和承諾。
6月6日,發(fā)布會(huì)現(xiàn)場(chǎng),知名技術(shù)平臺(tái)現(xiàn)場(chǎng)直播搭載GPU Turbo的榮耀Play和其他友商手機(jī)的同款游戲?qū)Q。在幀率、抖動(dòng)率、掉幀、耗電等硬指標(biāo)上,榮耀Play獲勝!一個(gè)多小時(shí)的實(shí)時(shí)對(duì)戰(zhàn),讓業(yè)界見(jiàn)識(shí)了GPU Turbo的實(shí)力。GPU Turbo上市之后的反響超出預(yù)期,而各種第三方自發(fā)的評(píng)測(cè)也證實(shí)華為手機(jī)坐穩(wěn)了游戲性能的第一陣營(yíng)。
任何成功的背后,都是艱辛和汗水,所有參與GPU Turbo項(xiàng)目的研發(fā)弟兄們,經(jīng)歷過(guò)多少個(gè)不眠之夜已經(jīng)記不得了。而我們始終牢記,潛心投入技術(shù),聚焦提升用戶體驗(yàn),才是持續(xù)改變用戶觀念,提升品牌與口碑的王道。
軟件工程里的“硬核”技術(shù)
2018年7月初,GPU Turbo上市的余熱還未散去,忽然一起用戶投訴引起了維護(hù)與營(yíng)銷團(tuán)隊(duì)的注意。相當(dāng)多的用戶在升級(jí)GPU Turbo之后,隨著某款熱門(mén)游戲的一次更新,不少場(chǎng)景出現(xiàn)了花屏。由于涉及華為和游戲廠商,究竟是誰(shuí)的問(wèn)題,中間是不是有什么故事,迅速成為媒體熱炒的內(nèi)容,一時(shí)間各種說(shuō)法紛至沓來(lái)。
盡管聲音很多,但對(duì)我們來(lái)說(shuō),用戶的體驗(yàn)才是最重要的。僅僅2天之后,EMUI團(tuán)隊(duì)把2MB左右的補(bǔ)丁包快速推出,迅速解決了問(wèn)題。我們的快速反應(yīng)能力,受到了廣大消費(fèi)者幾乎一致的好評(píng)。
這種快速的補(bǔ)丁升級(jí)能力,在終端領(lǐng)域,華為是獨(dú)有的,其他安卓廠家并不具備。這背后,是EMUI團(tuán)隊(duì)這幾年持續(xù)構(gòu)筑的軟件工程能力:代碼共主干、全棧架構(gòu)解耦、版本自動(dòng)化生成三個(gè)硬核能力。
工欲善其事必先利其器,軟件工程能力是軟件研發(fā)的“器”。強(qiáng)大的軟件工程能力是軟件研發(fā)的重要組成部分,也是軟件研發(fā)的硬核技術(shù)。
三年多以前的EMUI,基于海思Kirin、高通、MTK芯片的主干各不相同。主干只是物理上的代碼倉(cāng)庫(kù),質(zhì)量基本沒(méi)有保證。各產(chǎn)品版本都是從主干拉出的分支,相關(guān)特性都是靠產(chǎn)品經(jīng)理和開(kāi)發(fā)代表手工挑出來(lái),效率極為低下,質(zhì)量無(wú)從保證。從單產(chǎn)品看似乎很“高效”,但各產(chǎn)品功能特性的一致性,質(zhì)量的可繼承性幾乎很難做到,沒(méi)有一款存量機(jī)型能夠全網(wǎng)升級(jí)新版本。這致使整個(gè)軟件團(tuán)隊(duì)工作量很大,但重復(fù)低效且沒(méi)有繼承性,令團(tuán)隊(duì)人困馬乏,根本無(wú)法應(yīng)對(duì)即將到來(lái)的海量交付。
從EMUI5.0版本立項(xiàng)開(kāi)始,交付采用了全解決方案運(yùn)作模式,將用戶交互、OS(操作系統(tǒng))、海思、通信協(xié)議、安卓原生多個(gè)模塊納入統(tǒng)一規(guī)劃,同源設(shè)計(jì)、同源開(kāi)發(fā)、同源測(cè)試。解決方案依賴關(guān)系識(shí)別好、管理好,計(jì)劃對(duì)齊。同時(shí)定下海思Kirin、高通共主干目標(biāo)(MTK平臺(tái)2018并入主干,至此,華為EMUI一條主干兼容三大硬件平臺(tái)),代碼合入主干嚴(yán)格受控、質(zhì)量?jī)?yōu)先,保證了主干的代碼質(zhì)量。各產(chǎn)品不再需要拉分支,到發(fā)布的點(diǎn)直接按對(duì)應(yīng)的產(chǎn)品出版本即可。主干版本每周可實(shí)現(xiàn)一輪全量的自動(dòng)化測(cè)試,質(zhì)量越來(lái)越好,交付也越來(lái)越高效,并且這個(gè)能力可持續(xù)傳承。共主干的實(shí)現(xiàn),雖然讓產(chǎn)品線和軟件研發(fā)團(tuán)隊(duì)都受到了不少“折磨”,但今天的收益讓所有的痛苦都變得很值得。
架構(gòu)是軟件的骨架,是軟件團(tuán)隊(duì)共同工作的基礎(chǔ)和統(tǒng)一語(yǔ)言。EMUI基于安卓原生系統(tǒng),總代碼行數(shù)過(guò)億,幾乎是無(wú)線產(chǎn)品線產(chǎn)品代碼行數(shù)的兩倍。這么大規(guī)模的代碼,每年都要做大版本升級(jí),而且安卓原生代碼每年的更改量和新增量都超過(guò)上千萬(wàn)行。架構(gòu)的模糊和耦合,讓新增功能的開(kāi)發(fā),現(xiàn)有功能的修改和變更,甚至BUG的修復(fù)都極其痛苦,血肉骨架混作一團(tuán),牽一發(fā)而動(dòng)全身。這樣的系統(tǒng)其實(shí)已經(jīng)很難維護(hù)和持續(xù)開(kāi)發(fā)。架構(gòu)的選擇和解耦成為不得不做的事情。
特別感謝余總和手機(jī)產(chǎn)品線總裁何剛的支持和信任,在人力資源有限的當(dāng)時(shí),允許我拿出40%的人力開(kāi)始了EMUI全棧的架構(gòu)解耦和重構(gòu)。架構(gòu)部擔(dān)起這個(gè)歷史使命,由軟件的8級(jí)專家胡征掛帥開(kāi)始了三年多的架構(gòu)解耦工作,多次的研討和激烈爭(zhēng)論,終于讓這項(xiàng)工作在過(guò)去的幾年持續(xù)了下來(lái),并對(duì)今天EMUI的交付效率和質(zhì)量,做出了巨大貢獻(xiàn)。一個(gè)清晰可解耦的架構(gòu),是軟件團(tuán)隊(duì)內(nèi)部的統(tǒng)一工作基礎(chǔ),也是我們與業(yè)界合作的共同語(yǔ)言,讓我們“抽屜式”替換相應(yīng)的安卓組件成為可能。這也是過(guò)去幾年,EMUI可以快速實(shí)現(xiàn)替換文件系統(tǒng)、智能調(diào)度系統(tǒng)、實(shí)現(xiàn)全棧補(bǔ)丁的基礎(chǔ)。谷歌新版本也在吸納我們的優(yōu)秀實(shí)踐。全系統(tǒng)解耦的能力上,我們走在了業(yè)界最前沿。
EMUI 從緊耦合走向共主干全解耦
最后是版本的自動(dòng)生成能力。手機(jī)版本需求復(fù)雜,有公開(kāi)渠道、運(yùn)營(yíng)商渠道等各個(gè)不同版本。加上高、中、低檔機(jī)一組合,每年發(fā)布的版本有上萬(wàn)個(gè)。版本管理和發(fā)布都極其復(fù)雜。CBG軟件團(tuán)隊(duì)自行開(kāi)發(fā)的CCM(版本自動(dòng)編譯配置平臺(tái))為這個(gè)問(wèn)題的解決立下汗馬功勞。公開(kāi)市場(chǎng)、運(yùn)營(yíng)商市場(chǎng)、不同國(guó)家、不通過(guò)配置等都抽象為一個(gè)個(gè)可配置的參數(shù),總參數(shù)量幾千個(gè)。需要出版本的時(shí)候,根據(jù)目標(biāo)市場(chǎng)的需求,選定和修改相應(yīng)的配置后,一鍵配置下發(fā),即可生成對(duì)應(yīng)的版本。整個(gè)過(guò)程高效、高質(zhì)量。這套系統(tǒng)上線以來(lái),我們節(jié)省了200+的軟件配置人力,一直是零差錯(cuò)平穩(wěn)運(yùn)行。
目前,EMUI日活用戶已接近5億。每個(gè)新版本的發(fā)布,除了支撐新機(jī)上市外,越來(lái)越多的機(jī)型可以同時(shí)升級(jí),讓廣大消費(fèi)者獲得了直接收益,我們也越來(lái)越多地獲得了消費(fèi)者的支持和認(rèn)可。
學(xué)習(xí)互聯(lián)網(wǎng)的開(kāi)發(fā)效率 也注重平臺(tái)軟件的經(jīng)驗(yàn)積累
近幾年在軟件開(kāi)發(fā)領(lǐng)域,互聯(lián)網(wǎng)化和DevOps等是非常熱門(mén)的話題。我想談一下在EMUI軟件研發(fā)實(shí)踐中的一些體會(huì)。EMUI全棧包括了APPs、中間件和OS底層。如果一概要求研發(fā)人員必須年輕,并且必須放棄IPD而采用互聯(lián)網(wǎng)的迭代方式,這種做法不盡合理,容易誤導(dǎo)團(tuán)隊(duì)和領(lǐng)導(dǎo)對(duì)EMUI軟件研發(fā)的認(rèn)知。
在軟件工程能力如共主干、架構(gòu)解耦不具備之前,片面地去執(zhí)行年輕化和迭代開(kāi)發(fā),那將是一場(chǎng)災(zāi)難。上層APPs需要年輕人和快速迭代是對(duì)的,但中間件和OS,需要的是經(jīng)驗(yàn)第一,創(chuàng)新第二。沒(méi)有多年的經(jīng)驗(yàn),不可能做好底層軟件。沒(méi)有好的底層,上層的應(yīng)用體驗(yàn)也不會(huì)好到哪里去。
EMUI架構(gòu)完全解耦的今天,APPs已經(jīng)完全脫離EMUI平臺(tái)獨(dú)立發(fā)展,而且架構(gòu)解耦的思想也落實(shí)到了APPs開(kāi)發(fā)和實(shí)現(xiàn)中,實(shí)現(xiàn)了自主規(guī)劃、開(kāi)發(fā)和交付上架,以及全功能團(tuán)隊(duì)的快速迭代,這是非常接近于互聯(lián)網(wǎng)化的開(kāi)發(fā)模式。而EMUI基礎(chǔ)平臺(tái),仍基于IPD流程,扎扎實(shí)實(shí)按計(jì)劃持續(xù)開(kāi)發(fā)積累,把質(zhì)量做到最佳。全面Copy互聯(lián)網(wǎng),認(rèn)為談IPD而不談DevOps就是落后的代表,是一種誤導(dǎo)。IPD也好,DevOps也好,其實(shí)都是工具,關(guān)鍵是要準(zhǔn)確把握業(yè)務(wù)訴求,根據(jù)業(yè)務(wù)特點(diǎn)選擇最適宜的模式和工具。
結(jié)語(yǔ)
進(jìn)入2019年,隨著換機(jī)周期的拉長(zhǎng)和增速的放緩,手機(jī)行業(yè)進(jìn)入到了飽和競(jìng)爭(zhēng)的狀態(tài)。在硬件已極具競(jìng)爭(zhēng)力并逐步甩開(kāi)對(duì)手的基礎(chǔ)上,華為軟件已經(jīng)開(kāi)始持續(xù)發(fā)力,軟硬件緊密配合,將使華為終端的競(jìng)爭(zhēng)力源源不斷,我們有理由對(duì)華為終端的未來(lái)充滿期待!
始終聚焦用戶體驗(yàn),夯實(shí)底層核心能力,不斷提高軟件工程能力,構(gòu)筑開(kāi)放生態(tài),我們有信心將EMUI打造為華為手機(jī)的硬實(shí)力。用戶體驗(yàn)的提升與創(chuàng)新之路,永無(wú)止境。