造物者之吻:中國手機“爆改安卓”的這些年

naojiti發表於2019-05-05

如果我們把時間倒回去智慧手機剛興起的那幾年,回到iPhone早先幾代的時候。不知道大家是不是還記得這樣一個畫面?用蘋果的朋友會對安卓使用者說,安卓那麼卡,我實在不知道怎麼用。

那時候,蘋果還頻繁地與腎這個器官聯絡在一起,安卓手機相對高階點的還是HTC和三星,魅族和小米才嶄露頭角。而安卓必然會變卡頓和緩慢,似乎是個常識問題。為了解決這個它,網上流傳著各種安卓刷機教程、一大堆清理記憶體的APP,以及無數《教你讓安卓不卡的10個絕招》這樣的文章。

滄海桑田,不過因循幾年。

讓我們回味一下今天,身邊還有因為安卓卡頓而堅持不用安卓的嗎?即使偶爾有人發出這種聲音,似乎也馬上會被朋友回懟過去“你幾年不用國產手機了”?反而知乎和B站上,流傳著的是“給美國人安利EMUI”這樣的故事。

不經意間,我們似乎已經習慣了國產手機的高階定位,也很少有人還覺得安卓用幾個月就會卡到不能開機。

但這一切到底是怎麼發生的,可能大多數時候我們沒空回頭仔細琢磨。事實上,從移動終端格局初現,中國手機群落就一刻也沒有停止過對安卓的優化和改進。直至今天,我們會發現中國使用者享受的移動終端體驗,幾乎已經變成了“另一個物種”。

而這條“造物之路”並不好走。回顧這些年中國手機對安卓的一路“追打”,我們或許會驚覺,原來這些年手機廠商、開發者和萬千使用者一起,完成了一件有點了不起的事情。

安卓的功也過也

原生安卓的卡頓問題,是前些年移動網際網路剛興起時,硬體圈討論最多的話題。但是開始回顧故事前,還是有必要再歸納一下安卓從誕生第一秒起就註定的是非功過。

2003年10月,Andy Rubin等人建立了安卓公司。從最開始,這個專案就是希望在Linux基礎上打造一個有利於極客們隨意開發的OS系統。

2005年,谷歌收購了剛剛成立22個月的安卓,並在此後完成了這一專案的持續優化與多邊測試。2007年,谷歌以Apache免費開源許可證的授權方式,釋出了安卓原始碼。2008年,在蘋果正式改稱IOS之後幾個月,對外發布了安卓1.0版本。

移動終端最終只留下了iOS和安卓,有人認為這是因為兩個系統恰恰走向了兩個極端。與iOS一切都被框定,只能嚴格按照蘋果的規矩來做開發不同,安卓的最強優勢就是它超強的靈活性與適應能力。

它能適應最低端的手機配置;把所有路徑對外開放,哪怕一個網頁都能安裝應用;簡單的安卓開發,近乎可以速成。

客觀來說正是這些特質,才使得智慧手機興起之初,大量的手機廠商、應用開發者、網際網路創業者,以及大多數不想賣腎換手機的使用者,能夠進入智慧移動終端這個新世界。

但是成也開放,病也開放。安卓就像修建了一座足夠廣闊的城市,但是從設計之初就沒打算在城市裡安置任何市政管理系統。車隨便進,人隨便住,垃圾隨便堆,最終導致了安卓廣為詬病的“必卡”問題。

綜合來看,從技術規則上有三件事決定了安卓一直為人詬病的緩慢和卡頓:1無節制開放的應用介面,導致安卓更可能載入垃圾軟體;2每個應用的快取檔案都在安卓系統中進行堆積,造成系統會越用越卡頓;3安卓執行Java程式碼,採用的虛擬機器轉換機制,導致應用的執行速度緩慢。

這三個“原罪”式的問題,雖然在安卓的歷次更新中得到了大幅度緩解,但在本質上並沒有解決。

好在這不是安卓故事的終點,而是中國軟體工作者的起點。

開啟中國式互動

雖然安卓的卡頓問題從來都是“第一黑點”,但中國開發者對安卓做的第一件事並不是解決卡頓,而是改變互動。

客觀來說,谷歌釋出的原生安卓是有自己的互動理解和審美設計的,然而其確實更加符合歐美使用者一貫的審美體驗。另一個安卓的問題在於,中國使用者是連線不上大量谷歌服務的。手機廠商必須給微信、淘寶、O2O這類“中國式移動服務”安排好入口。

於是從2010年開始,手機廠商陸續踏上了深度定製安卓互動的道路。其中最有名的商業案例,是從MIUI起家的小米。MIUI率先取消了安卓的應用抽屜設計,將其改為類似iOS的桌面平鋪設計。搭配簡練精美的設計語言,奠定了中國使用者獨特的安卓習慣和互動審美理解。

當然,中國手機改變安卓互動也不是隻有MIUI一種模式,比如主打海外市場的一加,就採取了儘量貼合原生安卓設計的定製模式。此後,深度定製的UI系統開始成為安卓陣營國產手機的標配,讓國產手機從系統外觀上就變成了獨立的物種。

這可能是大部分使用者都能直觀感覺到的安卓變遷史。但在這之後,國產手機“爆改安卓”之路開始走向了關鍵問題——卡頓,終究是使用者體驗的死敵。

華為的深層行動

如果說,安卓手機在中國市場的崛起,與改造互動設計密不可分。那麼華為的近幾年的強勢崛起和走向高階化,則始終伴隨著另一條主線:對安卓進行系統級的深層改造。

這個行動開啟於2016年,伴隨著Mate 9釋出的EMUI 5.0中,有一個十分直接的能力,叫做“天生快一生快”。當時華為為此給出了一個著名的承諾:安卓18個月不卡頓。

上文已經說過,安卓的卡頓主要來自各個應用會帶來大量碎片化檔案。由於安卓是直接架構在Linux基礎上的,其檔案系統在最初並沒有考慮碎片檔案的快速回收。而安卓又可以隨意安裝應用,這就導致每個應用的快取、副本都會產生大量檔案碎片,最終把檔案系統堵死,造成卡頓,這也就是那幾年我們已經習慣要經常清理檔案碎片的原因。

這是當時安卓最大的槽點,也是華為在開啟高階化戰略時,必須在基礎軟體層面解決的首要問題。最終華為的解決方案,是把安卓原生的檔案系統,由EXT格式換成F2FS格式,從而使手機可以極大程度上避免檔案碎片。

F2FS格式最開始是三星一位技術人員發明並開源的,但是出於各種原因,三星並沒有敢於直接替換安卓的檔案系統。而這個好比器官移植的“安卓手術”,卻在華為數百人團隊的努力下,在中國做成了。

最終結果,是從EMUI 5.0開始,使用者就可以不再手動清理碎片檔案。當年我們習以為常的動作,如今已經成了可笑的往事。

吃了一次“深度改動安卓”甜頭之後,華為又屢次對安卓“下手”。比如去年我們非常熟悉的兩個turbo。GPU turbo在安卓的圖形中介軟體、記憶體管理、程式管理上進行了一系列優化;而Link turbo,改動了安卓的通訊模組、連線模組。

至此,華為對安卓的優化應該說已經走到了相當深層的位置。而從P30系列釋出以來,眾多開發者開始關注一個新名詞:方舟編譯器。

它之所以引發了滔滔江水般的討論,原因在於編譯器這東西,已經不僅是在修改安卓某一部分,而是直接作用於安卓的底層規則。

從特性到規則:方舟編譯器觸發了什麼?

大部分消費者可能不知道的是,安卓會卡和安卓會慢,其實還不是一件事。

即使檔案垃圾並沒有堆滿安卓的“倉庫”,我們也依然會覺得安卓開啟復雜的APP或者同時載入大量檔案時,反應效率明顯不如iOS。

這個問題的原因,就在於上面所說的,安卓系統在執行Java指令的時候,需要進行虛擬機器轉換。所謂虛擬機器,可以理解為程式設計師所用語言,與安卓理解的機器語言之間存在著一層翻譯。翻譯當然也沒有什麼不好,但是如果在啟動應用的同時進行翻譯,那顯然就會浪費眾多時間。這就好比兩人聊天時,加一位翻譯問題不大。但如果在足球比賽裡,兩名球員要通過場邊的翻譯進行傳話,那就什麼配合都甭想了。

既然虛擬機器機制如此浪費時間,為什麼還要用它呢?答案在於安卓是應用Java語言開發的,而為了讓開發更方便,Java在最初設計時就加入了一層虛擬機器設定。無論在什麼硬體上進行的程式設計,最後統一打到虛擬機器去處理,這樣就讓開發者有了很好的適配靈活性。

但是這個設定,如果是在爭分奪秒的手機體驗中,一遍翻譯一遍執行的模式,就會變得異常累贅。尤其是今天的安卓應用,實際上往往是Java和C語言混合開發,兩種語言在執行層相互轉換,又會浪費大量的時間。

這個看似兩難的問題,解決思路其實非常“簡單粗暴”。華為給出的答案是,可以直接在開發層,通過編譯器把應用直接轉成機器碼。我們們乾脆把虛擬機器扔掉就完了。

事實上,谷歌也早就意識到了安卓這個層面的問題,在安裝5.0之後,已經針對編譯做了很多優化,但依舊存在不少問題。而方舟編譯器,則從基礎規則上解決了轉碼的負擔,讓安卓系統的流暢度提升了24%,讓EMUI 9.1在流暢度層面絲毫不遜於iOS。

這個改變聽上去很輕鬆,有種“一招斃敵”的爽快感。然而底層編譯器卻是軟體層面最複雜的工作之一。為了能夠真正在“安卓的靈魂處動刀”,華為從09年就開始準備,2013年就開發了自研編譯器HCC。2014年,華為以“多顧茅廬”之勢,請來了編譯器領域世界最著名專家之一Fred Chow,擔任華為編譯器技術首席科學家。坊間流傳,全球能在底層改動安卓的人不到五個,而Fred Chow是其中之一。

就這樣,華為2012實驗室加上軟體工程部的數百位研發人員的漫漫十年征程,最終換來了將要開源給全球開發者的方舟編譯器。

故事到這裡,某種程度上來說中國的軟體開發者們,已經不僅僅是安卓的使用者,而是它的造物者。

當然,故事並不打算就此結束。

今天是終點嗎?

華為消費者BG軟體部總裁王成錄博士認為,優化安卓依舊沒有結束。

而下一步,或許將是開發者可以跳過中間層,直接將應用連線於安卓底層庫,實現極簡的個性化開發。

在手機市場的“後半場”,越來越少看到“巧計取勝”的案例。而留下的,更多是技術深度和技術壁壘。

圍繞安卓這條線,華為為代表的國產手機,接下來至少要做兩件事:一是繼續深化對安卓的優化改造,甚至通過大量技術貢獻反向影響安卓的大版本更新,成為主航道的制定者;二是繞開安卓“必須適配每一臺手機”的特性,在其他賽道上做出差異化升級。今天來看,這種升級主要圍繞三個方向發生:雲端一體化體驗、AI功能和泛IoT聯接。

而對於華為這樣的大玩家來說,更進一步的題中應有之義,是通過從OS層到基礎軟體,再到晶片架構,在每一層都擁有足夠的自主話語權,疊加在一起構成了華為未來圍繞移動終端,可以打出新的戰略可能性——在華為將目標定為全球頂端的時候,這是一條必須修築的道路。

今天我們很可能會忽略,安卓這個詞其實跟AI有密不可分的關係。1886年,法國作家維裡耶德利爾·亞當在其創作的小說《未來夏娃》裡,給外表像人的機器人女孩起名叫做Android。

書中“安卓”經歷了一次次蛻變,最終接近於男主人公夢中情人的樣子。

顯然,過去被冠以“窮人才用安卓”的作業系統,實在不像書中的安卓姑娘。好在就像書中的情節一樣,安卓在現實裡也沒有停止進化。它過去不如人意,未必將來也是如此。

就像曾經中國在作業系統上是失語的,但未必將來也是如此。若干年過去,華為已經成為了世界上為安卓貢獻最多的開發者之一,未來,誰又知道呢?

安卓女士自機器之夢中醒來,會源於造物者的親吻。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2643339/,如需轉載,請註明出處,否則將追究法律責任。

相關文章