每日最新頭條.有趣資訊

華為手機作業系統往事:用五大藥方解決了手機卡頓問題

5月17日, 心聲社區於昨日發布了一篇《華為手機作業系統往事》的文章,其中CBG軟體部總裁王成錄在文章中講述了讓軟體成為華為手機的硬實力心路歷程,特別是他們剛剛發布的“華為方舟編譯器”。

簡單來說,編譯器是將程序開發用的高級語言轉換成機器指令的軟體,可以理解成軟體與硬體之間的橋梁。那方舟編譯器會帶來怎樣的價值?簡單點說,是解決現有安卓這座橋梁並不順暢的頑疾,是對安卓真正深度的優化與革新,可以說為安卓產業注入了新的生命力。

在王成錄看來,從市場與用戶的反饋來看,越來越多的消費者認可華為手機長期使用後依然流暢,對用華為手機玩遊戲體驗不佳的吐槽也越來越少。這既歸功於華為手機芯片和硬體能力的快速提升,更離不開軟體全棧的深度優化與技術創新。

以下是《華為手機作業系統往事》全文:

4月11日,CBG總裁余承東在上海發布了P30系列手機。發布會後,一個聽上去有點晦澀的新名詞——“方舟編譯器”迅速登上了知乎社區的熱搜榜,引發了IT從業者、數位博主、資深碼農乃至普通消費者的極大關注和廣泛熱議。“編譯器是什麽?”“華為方舟編譯器和安卓原生的AOT/JIT(Ahead of Time/Just in Time)有什麽區別?” “方舟編譯器對安卓生態有何意義?”等,網友對各種深淺不一問題的討論不亦樂乎,諸多跟帖評論精彩紛呈,不得不說高手在民間。

其中一位網友的評論很有代表性:“昨天的華為發布會,讓我感到驚喜的是,在如今這個年代,會有一家國內消費電子公司把編譯器作為一大亮點來介紹。華為在基礎研發上的持續高投入,加上手機終端市場佔有率向全球第一邁進,使得‘自建生態’的夢想,對一家中國公司而言首次成為可能。”

編譯器是將程序開發用的高級語言轉換成機器指令的軟體,可以理解成軟體與硬體之間的橋梁。那方舟編譯器會帶來怎樣的價值?簡單點說,是解決現有安卓這座橋梁並不順暢的頑疾,是對安卓真正深度的優化與革新,可以說為安卓產業注入了新的生命力。

而這只是華為一系列軟體創新的最新成果。今天,從市場與用戶的反饋來看,越來越多的消費者認可華為手機長期使用後依然流暢,對用華為手機玩遊戲體驗不佳的吐槽也越來越少。這既歸功於華為手機芯片和硬體能力的快速提升,更離不開軟體全棧的深度優化與技術創新。

我們深知,任何軟硬體的技術優化和創新探索都必須瞄準用戶體驗。服務近5億在網用戶的華為手機作業系統EMUI是如何圍繞用戶體驗,不斷進行深層創新,推出硬核技術的?

故事還得從幾年前說起。

面向消費者的軟體怎麽做

3年前,我在負責2012實驗室的中央軟體院,7月份,余總的一個電話,讓我有機會來到CBG負責終端軟體的研發工作。當時的心情既興奮又忐忑。興奮在於,從進公司伊始,我一直從事和軟體緊密相關的工作。在我心目中,完成大規模工業化的軟體研發,不啻以虛擬世界的0和1為建築材料,去設計建造一座宏偉的殿堂。而如何能讓我們的建造成果和過程都達到世界級,給我們的用戶和合作夥伴帶來價值,一直是我的追求與夢想。

忐忑也隨之而來。雖然都是軟體研發,但是智能手機作業系統對於我是一個全新的領域。首先是標準化程度大不相同,電信設備軟體有非常完備的行業標準,ITU、3GPP、IETF等,實際上把網絡架構和網元架構標準化了。研發需要做的就是根據標準協議,遵從一定的開發流程規範,比如IPD(集成產品開發),以及合理的項目管理來實現相應的交付目標。同時,電信設備軟體的需求也是相對清晰和匯聚的,全球幾百家運營商的需求百分之七十以上幾乎是一致的,而且設備的日常維護主體是經過專業化訓練,具有相當技術水準的運維人員,可以相對清晰準確地反饋設備使用中的各種問題。

而面向消費者的軟體則大為不同。廣泛流行的智能手機作業系統最終隻留下了iOS和安卓。與封閉的iOS框定一切來保證體驗不同,安卓是由谷歌主導的AOSP社區開源,但原生安卓實際上是Design Reference(設計參考),具體到每一個功能如何取捨和擴展,與海量的第三方APPs如何互動,並沒有詳細而統一的標準可以遵從,都是各個手機廠家根據自己的硬體平台、產品定位和目標用戶群,做大量的適配和優化修改,生態碎片化嚴重。一切只能以消費者體驗為準繩。

在安卓開放的大環境下,怎麽做才能實現最好的用戶體驗?在iOS已經通過多年的積累樹立了牢固的領先形象時,怎樣才能讓EMUI被越來越多的消費者認可,是我和整個軟體團隊面臨的最大挑戰。

聚焦最大的用戶痛點 “在飛行中換引擎”

我們決定將“用戶體驗最佳”作為終端軟體追求的目標。而首要解決的問題就是,什麽最影響用戶體驗?經過大量的調查和訪談,團隊很快發現,最為安卓用戶詬病的,是長期使用後的卡頓,這也是影響消費者體驗的第一大障礙。

一個熱愛電子產品的同事和我講述過他的智能手機使用經歷。在安卓手機進入大屏年代後,2013年他購買了當時做得最好的安卓手機S和H,用的還是頂級配置,但用了一年多後,即使每晚不做任何操作,都會消耗百分之十幾的電量;更讓他無法忍受的是,卡頓、當機幾乎成了家常便飯,必須要不斷重啟和清理記憶體才能勉強使用。用他的話說,不是我在用手機,而是手機在用我。

為什麽即便擁有很高的硬體配置,即便是當時最好的安卓手機,也會面臨更多的穩定性和流暢性問題?是哪些因素導致了長期使用後的卡頓和當機?我們決定“啃”下卡頓這個最大的硬骨頭。EMUI團隊成立了專門的“特戰組”集中突破。特戰組詳細分析了安卓系統下四百多台幾十種機型的手機,經過反覆的問題重現和軟硬體的全棧分析,共發現以下四個導致卡頓、當機的主因:

1、安卓系統的松散管理,應用對資源的使用缺少規則,就像建了很多道路卻沒有交通規則,最終是擁塞和混亂;

2、系統硬體資源協同缺乏,僅僅靠增加RAM(運行記憶體)資源不能解決問題,而是要更有效地調度與使用資源;

3、存儲碎片累積效應,隨著使用時間的增加,存儲碎片化日益嚴重,數據讀寫速度明顯下降,系統卡頓頻繁、加重;

4、APP膨脹嚴重,特別是頭部應用功能不斷堆積,導致產生的數據急劇增長,搶佔系統資源嚴重,拖累系統運行速度。

這些問題,幾乎涉及到從芯片到軟體全棧,如果只是見招拆招被動應對,是不可能真正解決問題的。必須全面系統分析,才能拿出全面徹底的解決方案。但安卓系統本身極其龐大,代碼行數過億,在這麽龐大的系統上“動手術”,挑戰可想而知。會不會在優化的同時導致其它兼容性的問題?有沒有足夠能力實現預定的目標?

但是,帶著有問題的引擎勉強飛行,只會釀成更大的事故。畏縮不前不如放手一搏。通過大量細致的分析和研判,我們決心破釜沉舟——乾!最終,經過專家的反覆診斷和討論,拿出了5大“藥方”來一一解決上述問題。

簡單來說,人工智能是核心,對應用側智能分析,判斷應用的資源需求特徵(計算密集型、RAM密集型、IO密集型等);對硬體資源側,感知CPU、記憶體、IO(Input/Output)、存儲等資源狀態,通過AI算法實現應用需求與硬體資源的最佳匹配,並及時合理地整理和回收空閑資源,解決上面提到的硬體資源協同和APP佔用空間過度膨脹的問題。

“抽屜式”替換 為安卓注入新的生命力

對於存儲碎片化的問題,我們采取了一個比較激進的方案——替換了安卓原生文件系統。

安卓從誕生之初就直接架構在Linux基礎上,其文件系統最初並未考慮碎片文件的快速整理。長時間以來,安卓手機都是從Linux繼承文件系統,這個文件系統對智能手機上的Flash存儲並不友好,也是碎片化的主因。我們決定用F2FS(Flash Friendly File System)文件系統來替換原生的文件系統,不僅因為F2FS是為Flash量身定做,還因為它可以使手機極大程度上避免文件碎片。

F2FS是由友商S公司原創並開源的。但S公司自己並沒有率先使用。因為文件系統決定存儲上所有文件的存儲與訪問方式,好比器官移植手術,替換文件系統的複雜度和風險是巨大的。

我們雖然在實驗室仔細驗證了半年多,但替換文件系統的高複雜度和高風險,仍然是決策的最大顧慮。軟體管理團隊和技術團隊多次分析後,最終果斷拍板,並和CBG簽訂了軍令狀,承諾搞不定或出了問題就“軍法處置”。

得益於團隊膽大心細的執行力,F2FS文件系統最終替換成功,成為解決卡頓頑疾全方案中最重要的組成部分。

2016年,伴隨著Mate 9 系列發布的EMUI5.0,我們為這個解決安卓卡頓的方案取了一個簡單易懂的名字,叫做“天生快 一生快”,同時承諾消費者“18個月不卡頓”,這個當時看似“吹牛”的承諾,今天已經成為現實。從市場反應和消費者反饋來看,在安卓陣營裡,華為手機率先甩掉了“卡頓”的帽子。

2018年,谷歌將F2FS吸收到安卓原生版本中,所有安卓廠商因此受益,對安卓生態是很有價值的貢獻。至今,谷歌的自研手機Pixel 3也使用了F2FS文件系統。

基於理性的技術判斷和果斷決策,讓我們領先了所有安卓廠商一步。更難能可貴的是,為了實現安全替換,逼迫我們的團隊沒有退路地仔細分析了原生系統的底層,邊戰邊練,讓我們的團隊積累了非常寶貴的經驗,也嘗到了深度優化安卓的甜頭。第一道考題,我和軟體團隊初步獲得了CBG管理團隊的信任,有了一個好的起點。

走向生態協同的“深水區”

在解決卡頓這個頑疾的過程中,我們就發現安卓生態的松散是一個挑戰,這並不能通過技術來解決,但又和用戶體驗息息相關。

相較於iOS對生態的嚴格管控,安卓生態主要依賴玩家的自律自覺。打個不恰當的比方,安卓原生系統好比谷歌修好的一條高速公路,谷歌設想上路的自然是遵守交通規則的機動車,而實際情況卻是,不但機動車上路了,各種牛車、馬車、三輪車和行人都來了,加上沒有交警(優先級調度系統)負責管理,擁堵就成了常態。

這種狀況在國內尤甚。手機廠家不斷投入的技術,只是把端側的運行環境做得越來越高效、整潔。但應用市場的魚龍混雜對用戶體驗影響巨大,各安卓手機廠家不僅擁有自家的應用市場,還有種類繁多的第三方應用市場,再加上通過瀏覽器鏈接就能下載安裝App,還有各種木馬App、惡意軟體,互相引導安裝、偽裝後台、無限制申請手機系統資源等,帶來的問題就是Apps對安卓系統資源的使用極不規範,甚至是惡意使用。

“病從口入”,導致的結果就是,用戶體驗不斷受損。華為面臨一個選擇,是隨大流,還是牽頭豎起大旗,聯合重量級生態玩家,逐步規範、淨化安卓生態,把優質的體驗還給消費者?僅僅依靠手機廠家自身的持續技術投入和優化已然不夠,走向生態協同的“深水區”是華為終端軟體必須要邁出的一步。

經過大量的前期溝通討論,2016年11月14日,在上海的Mate 9系列發布會上,華為聯合阿里巴巴、百度、騰訊、網易四家企業共同發起了安卓綠色聯盟。作為一個開放的非盈利性組織,希望共同構建中國安卓綠色應用環境,打造安全、可靠、可信、健康的應用生態,把極致的應用體驗帶給消費者。

安卓綠色聯盟成立後,集中發起廠家的經驗和智慧,陸續推出了《安卓綠色聯盟應用體驗標準》的1.0和2.0版本,涵蓋了應用安裝與運行的兼容性、穩定性、安全、功耗和性能標準。同時發展會員企業超過1000家,覆蓋80%的主流應用。

在安卓綠色聯盟平台上,華為提供了超過3千台測試真機,免費向所有安卓應用開發者開放,只要遠程登錄,即可申請到相應的測試資源並執行測試;同時,華為把安卓最新版本的變化及時分享給國內開發者,大大提升了安卓應用在新版本上的適配效率。

對於通過了《安卓綠色應用體驗標準》的應用打上“綠色應用”標記,讓消費者在應用下載時對應用質量的了解一目了然,可以安心使用。通過2年多的協作,綠盟已幫助超過20萬開發者進行免費測試、牽引Top 3000安卓應用降低了高功耗與權限濫用行為。消費者、應用開發者、互聯網廠商和手機廠家都因此受益。整個安卓生態的參與者,都願意在這個平台上共享經驗、共同創新。2018年還成立了AI開放生態合作、AI安全設計方案、AR、遊戲加速四大創新工作組。

我們將和夥伴一起把安卓綠色聯盟持續的發展壯大下去,希望她能成為整個產業的一盞明燈,優勝劣汰,為所有安卓用戶帶來極致的應用體驗。

“嚇人”的GPU Turbo背後

2018年6月,余總在北京發布“嚇人的技術”GPU Turbo,不但引起了其他廠商對於“嚇人”和“Turbo”的跟風,也在一些主要的科技論壇引起了關於背後技術的大討論。

遊戲產業在手機上的迅猛發展超乎很多人的預料,幾乎一半以上的用戶都是手遊用戶。早在2016年,國內的手遊已經佔據了遊戲市場的半壁江山,而且如王者榮耀、吃雞等“硬核化”遊戲的普及,將遊戲對於手機圖形處理能力的要求推向了前所未有的高度。而受限於ARM Mali GPU的限制,在與其他頂級友商的GPU的PK中,華為手機用戶對遊戲體驗的吐槽急劇增多。

手遊的體驗是不是只能依賴GPU的處理能力,或者類似某些所謂的遊戲手機堆料來實現?能不能像整機性能一樣通過軟硬協同來優化?這些問題進入了我們的視野。說乾就乾,相關工作馬上開始啟動。

2017年2月,我們發起了一場中西合璧的針對手機圖形處理性能的突破。雖然新加入的海外圖形處理專家給出了很有價值的思路,但是整個突破過程並非一馬平川。其中經歷了無數次嘗試、接近、又推倒重來的過程。“勝則舉杯同慶,敗則拚死相救”,來自美國、芬蘭、俄羅斯和深圳、杭州、南京、上海的相應領域專家們,不論部門,不分晝夜,最終達成了預期的目標。

當最後我們說出GPU Turbo 可以提升遊戲性能的同時降低功耗,業界開始是一片質疑,都覺得這個邏輯違反常理。但我們有充足的底氣,從GPU Pipeline(處理隊列)、CPU/GPU聯合調度,到OPEN GL(開放圖形庫)各指令的詳細解讀和細致調整,再到圖形處理引擎的重構和應用負載的清洗,完整的全棧分析和解決方案,讓我們有足夠的技術自信,敢於公開我們的目標和承諾。

6月6日,發布會現場,知名技術平台現場直播搭載GPU Turbo的榮耀Play和其他友商手機的同款遊戲對決。在幀率、抖動率、掉幀、耗電等硬指標上,榮耀Play獲勝!一個多小時的實時對戰,讓業界見識了GPU Turbo的實力。GPU Turbo上市之後的反響超出預期,而各種第三方自發的評測也證實華為手機坐穩了遊戲性能的第一陣營。

任何成功的背後,都是艱辛和汗水,所有參與GPU Turbo項目的研發弟兄們,經歷過多少個不眠之夜已經記不得了。而我們始終牢記,潛心投入技術,聚焦提升用戶體驗,才是持續改變用戶觀念,提升品牌與口碑的王道。

軟體工程裡的“硬核”技術

2018年7月初,GPU Turbo上市的余熱還未散去,忽然一起用戶投訴引起了維護與行銷團隊的注意。相當多的用戶在升級GPU Turbo之後,隨著某款熱門遊戲的一次更新,不少場景出現了花屏。由於涉及華為和遊戲廠商,究竟是誰的問題,中間是不是有什麽故事,迅速成為媒體熱炒的內容,一時間各種說法紛至遝來。

儘管聲音很多,但對我們來說,用戶的體驗才是最重要的。僅僅2天之後,EMUI團隊把2MB左右的補丁包快速推出,迅速解決了問題。我們的快速反應能力,受到了廣大消費者幾乎一致的好評。

這種快速的補丁升級能力,在終端領域,華為是獨有的,其他安卓廠家並不具備。這背後,是EMUI團隊這幾年持續構築的軟體工程能力:代碼共主乾、全棧架構解耦、版本自動化生成三個硬核能力。

工欲善其事必先利其器,軟體工程能力是軟體研發的“器”。強大的軟體工程能力是軟體研發的重要組成部分,也是軟體研發的硬核技術。

三年多以前的EMUI,基於海思Kirin、高通、MTK芯片的主乾各不相同。主乾只是物理上的代碼倉庫,質量基本沒有保證。各產品版本都是從主乾拉出的分支,相關特性都是靠產品經理和開發代表手工挑出來,效率極為低下,質量無從保證。從單產品看似乎很“高效”,但各產品功能特性的一致性,質量的可繼承性幾乎很難做到,沒有一款存量機型能夠全網升級新版本。這致使整個軟體團隊工作量很大,但重複低效且沒有繼承性,令團隊人困馬乏,根本無法應對即將到來的海量交付。

從EMUI5.0版本立項開始,交付採用了全解決方案運作模式,將用戶互動、OS(作業系統)、海思、通信協議、安卓原生多個模塊納入統一規劃,同源設計、同源開發、同源測試。解決方案依賴關係識別好、管理好,計劃對齊。同時定下海思Kirin、高通共主乾目標(MTK平台2018並入主乾,至此,華為EMUI一條主乾兼容三大硬體平台),代碼合入主乾嚴格受控、質量優先,保證了主乾的代碼質量。各產品不再需要拉分支,到發布的點直接按對應的產品出版本即可。主乾版本每周可實現一輪全量的自動化測試,質量越來越好,交付也越來越高效,並且這個能力可持續傳承。共主乾的實現,雖然讓產品線和軟體研發團隊都受到了不少“折磨”,但今天的收益讓所有的痛苦都變得很值得。

架構是軟體的骨架,是軟體團隊共同工作的基礎和統一語言。EMUI基於安卓原生系統,總代碼行數過億,幾乎是無線產品線產品代碼行數的兩倍。這麽大規模的代碼,每年都要做大版本升級,而且安卓原生代碼每年的更改量和新增量都超過上千萬行。架構的模糊和耦合,讓新增功能的開發,現有功能的修改和變更,甚至BUG的修複都極其痛苦,血肉骨架混作一團,牽一發而動全身。這樣的系統其實已經很難維護和持續開發。架構的選擇和解耦成為不得不做的事情。

特別感謝余總和手機產品線總裁何剛的支持和信任,在人力資源有限的當時,允許我拿出40%的人力開始了EMUI全棧的架構解耦和重構。架構部擔起這個歷史使命,由軟體的8級專家胡征掛帥開始了三年多的架構解耦工作,多次的研討和激烈爭論,終於讓這項工作在過去的幾年持續了下來,並對今天EMUI的交付效率和質量,做出了巨大貢獻。一個清晰可解耦的架構,是軟體團隊內部的統一工作基礎,也是我們與業界合作的共同語言,讓我們“抽屜式”替換相應的安卓組件成為可能。這也是過去幾年,EMUI可以快速實現替換文件系統、智能調度系統、實現全棧補丁的基礎。谷歌新版本也在吸納我們的優秀實踐。全系統解耦的能力上,我們走在了業界最前沿。

最後是版本的自動生成能力。手機版本需求複雜,有公開渠道、運營商渠道等各個不同版本。加上高、中、低檔機一組合,每年發布的版本有上萬個。版本管理和發布都極其複雜。CBG軟體團隊自行開發的CCM(版本自動編譯配置平台)為這個問題的解決立下汗馬功勞。公開市場、運營商市場、不同國家、不通過配置等都抽象為一個個可配置的參數,總參數量幾千個。需要出版本的時候,根據目標市場的需求,選定和修改相應的配置後,一鍵配置下發,即可生成對應的版本。整個過程高效、高質量。這套系統上線以來,我們節省了200+的軟體配置人力,一直是零差錯平穩運行。

目前,EMUI日活用戶已接近5億。每個新版本的發布,除了支撐新機上市外,越來越多的機型可以同時升級,讓廣大消費者獲得了直接收益,我們也越來越多地獲得了消費者的支持和認可。

學習互聯網的開發效率 也注重平台軟體的經驗積累

近幾年在軟體開發領域,互聯網化和DevOps等是非常熱門的話題。我想談一下在EMUI軟體研發實踐中的一些體會。EMUI全棧包括了APPs、中間件和OS底層。如果一概要求研發人員必須年輕,並且必須放棄IPD而採用互聯網的迭代方式,這種做法不盡合理,容易誤導團隊和領導對EMUI軟體研發的認知。

在軟體工程能力如共主乾、架構解耦不具備之前,片面地去執行年輕化和迭代開發,那將是一場災難。上層APPs需要年輕人和快速迭代是對的,但中間件和OS,需要的是經驗第一,創新第二。沒有多年的經驗,不可能做好底層軟體。沒有好的底層,上層的應用體驗也不會好到哪裡去。EMUI架構完全解耦的今天,APPs已經完全脫離EMUI平台獨立發展,而且架構解耦的思想也落實到了APPs開發和實現中,實現了自主規劃、開發和交付上架,以及全功能團隊的快速迭代,這是非常接近於互聯網化的開發模式。而EMUI基礎平台,仍基於IPD流程,扎扎實實按計劃持續開發積累,把質量做到最佳。全面Copy互聯網,認為談IPD而不談DevOps就是落後的代表,是一種誤導。IPD也好,DevOps也好,其實都是工具,關鍵是要準確把握業務訴求,根據業務特點選擇最適宜的模式和工具。

結語

進入2019年,隨著換機周期的拉長和增速的放緩,手機行業進入到了飽和競爭的狀態。在硬體已極具競爭力並逐步甩開對手的基礎上,華為軟體已經開始持續發力,軟硬體緊密配合,將使華為終端的競爭力源源不斷,我們有理由對華為終端的未來充滿期待!

始終聚焦用戶體驗,夯實底層核心能力,不斷提高軟體工程能力,構築開放生態,我們有信心將EMUI打造為華為手機的硬實力。用戶體驗的提升與創新之路,永無止境。

獲得更多的PTT最新消息
按讚加入粉絲團