在沒(méi)人注意的角落,谷歌為系統(tǒng)更新操碎了心
編者按:本文來(lái)自微信公眾號(hào)“三易生活”(ID:IT-3eLife),作者 三易菌,36氪經(jīng)授權(quán)發(fā)布。
雖然同樣是在上月亮相,但谷歌推送的Android 11正式版引發(fā)的討論與關(guān)注,顯然遠(yuǎn)遠(yuǎn)比不上iOS 14正式版的亮相。這背后當(dāng)然不是因?yàn)閕OS用戶(hù)在絕對(duì)數(shù)量上更多,也不是Android本身的更新內(nèi)容不夠有趣與有意義,而是因?yàn)樵诤芏嗳说恼J(rèn)知和實(shí)踐中,iOS的大版本更新往往很快就能用上,而Android的大版本更新,則通常要等待很久才會(huì)被各手機(jī)廠(chǎng)商推送。
既然不能馬上進(jìn)行體驗(yàn),用戶(hù)的漠不關(guān)心自然也就很正常。當(dāng)然,這一切最終還是因?yàn)锳ndroid系統(tǒng)碎片化的歷史欠賬,所導(dǎo)致的結(jié)果,而版本已經(jīng)嚴(yán)重碎片化的Android系統(tǒng)與手機(jī)廠(chǎng)商復(fù)雜的產(chǎn)品線(xiàn),也就讓作為終端手機(jī)廠(chǎng)商緊跟谷歌的腳步,推出Android大版本更新的節(jié)奏成為了空談。
但好在自Android 8開(kāi)始,谷歌方面就一直在積極“補(bǔ)課”,其實(shí)現(xiàn)在也已經(jīng)取得了一定的成果。雖然從2019年8月開(kāi)始,谷歌方面就已經(jīng)不再公示各Android版本的具體比例,但在不久前官方公布了一組數(shù)據(jù),顯示通過(guò)系統(tǒng)檢測(cè)顯示,Android 10的安裝基數(shù)從2019年9月開(kāi)始后5個(gè)月里就達(dá)到了1億之多,并且這一速度相比上代的Android 9加快了28%。
簡(jiǎn)而言之,也就是說(shuō)Android 10成為迄今為止普及速度最快的Android版本。而這一成績(jī)背后,則源自于谷歌從Android 8時(shí)代引入Project Treble,以及Android 10開(kāi)始引入的Project Mainline有著不小的關(guān)系。Android 8上我們?nèi)咨钤?jīng)介紹過(guò)多次的Project Treble,是將HAL(硬件抽象層)綁定模式化,改變了以往硬件驅(qū)動(dòng)與系統(tǒng)之間的強(qiáng)關(guān)聯(lián)情況,將“系統(tǒng)層”與“驅(qū)動(dòng)層”拆分,解除了驅(qū)動(dòng)和系統(tǒng)版本的“掛鉤”機(jī)制,使得手機(jī)此后廠(chǎng)商可以為產(chǎn)品單獨(dú)推送新的Android版本,而不需要重新進(jìn)行驅(qū)動(dòng)的適配。
當(dāng)然,此后的Android 9上同樣也有Project Treble的加持,但讓Android 10普及速度更上一層樓的,其實(shí)則是Project Mainline。這一新特性是將系統(tǒng)功能進(jìn)行模塊化,把Android的12個(gè)核心組件,也就是媒體編解碼器、媒體框架組件、DNS 解析器、Conscrypt、權(quán)限控制器、模塊元數(shù)據(jù)等做成了模塊,并使用應(yīng)用商店來(lái)進(jìn)行更新。
Project Mainline的意義簡(jiǎn)單來(lái)說(shuō)幾乎可以解釋為“哪里不對(duì)點(diǎn)哪里”,如果Conscrypt模塊,也就是加速實(shí)現(xiàn)安全改進(jìn)并提高設(shè)備安全性的模塊出現(xiàn)問(wèn)題,谷歌方面可以直接通過(guò)Google Play推送新版本的Conscrypt給用戶(hù),而不再需要像以往一樣將這個(gè)“BUG修復(fù)”整合到系統(tǒng)更新中。事實(shí)上,高通主控中的GPU以及ARM的Mali GPU能夠?qū)崿F(xiàn)將GPU驅(qū)動(dòng)單獨(dú)在應(yīng)用商店更新,正式是得益于這一功能的加入。
而更具有里程碑意義的變化,則出現(xiàn)在如今的Android 11上,也就是谷歌方面開(kāi)始對(duì)Android的Linux內(nèi)核進(jìn)行改動(dòng)了,其試圖將Android設(shè)備內(nèi)核統(tǒng)一至Linux內(nèi)核的主線(xiàn)。眾所周知,為了盡最大努力規(guī)避GPL協(xié)議所帶來(lái)的法律風(fēng)險(xiǎn),谷歌方面一直在想方設(shè)法將Linux內(nèi)核與設(shè)備驅(qū)動(dòng)剝離開(kāi),盡管目前這個(gè)剝離并不完美,以至于雖然依舊存在法律風(fēng)險(xiǎn),但Android是可以被視為L(zhǎng)inux發(fā)行版的。
Linux內(nèi)核對(duì)于A(yíng)ndroid而言無(wú)疑是大廈的基石,因此Linux內(nèi)核的升級(jí)會(huì)獲得BUG修復(fù)所帶來(lái)的安全性、新的硬件驅(qū)動(dòng)、新特性,以及效率的提升。然而運(yùn)行在A(yíng)ndroid設(shè)備上的Linux內(nèi)核,其實(shí)與谷歌選擇的LTS(長(zhǎng)期支持)版本Linux內(nèi)核有很大不同。根據(jù)官方公布的數(shù)據(jù)顯示,截止2018年2月,與Linux 4.14.0相比,Android通用內(nèi)核更改了355行,插入了32266行,并刪除了1546行。
在A(yíng)ndroid 11之前,Linux在到達(dá)每一臺(tái)Android設(shè)備前,內(nèi)核會(huì)經(jīng)歷三個(gè)階段的fork。谷歌首先會(huì)先選擇某個(gè)LTS版本(通常為4.14.0)的Linux內(nèi)核,打上Android系統(tǒng)的特定補(bǔ)丁,使得其成為Android通用內(nèi)核;緊接著Android通用內(nèi)核被交付給高通等SoC供應(yīng)商,集成上主板、藍(lán)牙、WiFi等硬件驅(qū)動(dòng);最后再被移交至三星與小米這樣的設(shè)備制造商,打上設(shè)備特定的各類(lèi)元器件驅(qū)動(dòng),這才構(gòu)成到了每臺(tái)設(shè)備中的內(nèi)核。
但這樣一套操作下來(lái)的最終結(jié)果,就是Android設(shè)備所使用的內(nèi)核相較于Linux內(nèi)核主線(xiàn),要滯后兩到三年的時(shí)間。例如谷歌方面在去年11月發(fā)布的Pixel 4上,所使用的就是Linux在2017年11月發(fā)布的4.14 LTS版本,而剛剛發(fā)布的Pixel 5則使用的是Linux 4.19LTS版本,而非作為主線(xiàn)的Linux 5.9。并且由于升級(jí)的繁瑣,也導(dǎo)致了出廠(chǎng)的Android通用內(nèi)核版本將會(huì)伴隨這一設(shè)備的幾乎整個(gè)使用壽命。
面對(duì)這一情況,在A(yíng)ndroid 11中谷歌將系統(tǒng)內(nèi)核進(jìn)行了模塊化的修改,將內(nèi)核分成了通用內(nèi)核鏡像(Generic Kernel Image,GKI)與其他GKI模塊,其中特定硬件的驅(qū)動(dòng)程序(可能是閉源驅(qū)動(dòng))將作為內(nèi)核模塊加載,從而提供一個(gè)穩(wěn)定的寫(xiě)入接口,使硬件廠(chǎng)商可以輕松的插入代碼,以實(shí)現(xiàn)最終消除特定設(shè)備內(nèi)核的目的。而這就可以避免此前類(lèi)似三星向Linux內(nèi)核添加唯一代碼后,對(duì)系統(tǒng)安全造成影響的結(jié)果出現(xiàn)。
在A(yíng)ndroid 11后,谷歌想要升級(jí)內(nèi)核版本,以便讓相應(yīng)設(shè)備獲得更安全以及更高的性能,就可以直接向具體的設(shè)備推送GKI,而不再需要上游元器件廠(chǎng)商以及設(shè)備制造商的配合。
因此總而言之,這就意味著從Android 11開(kāi)始,關(guān)于A(yíng)ndroid系統(tǒng)的一切幾乎都被模塊化,而這樣的改變所帶來(lái)的將是更加靈活與方便的更新方式。因此極有可能在A(yíng)ndroid 11之后的系統(tǒng)更新中,更新速度將會(huì)越來(lái)越快,甚至最終比肩iOS的更新速度也并不是沒(méi)有可能。