QQ在線客服

在沒人注意的角落,谷歌為系統(tǒng)更新操碎了心

2020-10-19 19:04 來源: 站長資源平臺 瀏覽(573)人   

編者按:本文來自微信公眾號“三易生活”(ID:IT-3eLife),作者 三易菌,36氪經(jīng)授權(quán)發(fā)布。

雖然同樣是在上月亮相,但谷歌推送的Android 11正式版引發(fā)的討論與關(guān)注,顯然遠遠比不上iOS 14正式版的亮相。這背后當(dāng)然不是因為iOS用戶在絕對數(shù)量上更多,也不是Android本身的更新內(nèi)容不夠有趣與有意義,而是因為在很多人的認(rèn)知和實踐中,iOS的大版本更新往往很快就能用上,而Android的大版本更新,則通常要等待很久才會被各手機廠商推送。

既然不能馬上進行體驗,用戶的漠不關(guān)心自然也就很正常。當(dāng)然,這一切最終還是因為Android系統(tǒng)碎片化的歷史欠賬,所導(dǎo)致的結(jié)果,而版本已經(jīng)嚴(yán)重碎片化的Android系統(tǒng)與手機廠商復(fù)雜的產(chǎn)品線,也就讓作為終端手機廠商緊跟谷歌的腳步,推出Android大版本更新的節(jié)奏成為了空談。

但好在自Android 8開始,谷歌方面就一直在積極“補課”,其實現(xiàn)在也已經(jīng)取得了一定的成果。雖然從2019年8月開始,谷歌方面就已經(jīng)不再公示各Android版本的具體比例,但在不久前官方公布了一組數(shù)據(jù),顯示通過系統(tǒng)檢測顯示,Android 10的安裝基數(shù)從2019年9月開始后5個月里就達到了1億之多,并且這一速度相比上代的Android 9加快了28%。

簡而言之,也就是說Android 10成為迄今為止普及速度最快的Android版本。而這一成績背后,則源自于谷歌從Android 8時代引入Project Treble,以及Android 10開始引入的Project Mainline有著不小的關(guān)系。Android 8上我們?nèi)咨钤?jīng)介紹過多次的Project Treble,是將HAL(硬件抽象層)綁定模式化,改變了以往硬件驅(qū)動與系統(tǒng)之間的強關(guān)聯(lián)情況,將“系統(tǒng)層”與“驅(qū)動層”拆分,解除了驅(qū)動和系統(tǒng)版本的“掛鉤”機制,使得手機此后廠商可以為產(chǎn)品單獨推送新的Android版本,而不需要重新進行驅(qū)動的適配。

當(dāng)然,此后的Android 9上同樣也有Project Treble的加持,但讓Android 10普及速度更上一層樓的,其實則是Project Mainline。這一新特性是將系統(tǒng)功能進行模塊化,把Android的12個核心組件,也就是媒體編解碼器、媒體框架組件、DNS 解析器、Conscrypt、權(quán)限控制器、模塊元數(shù)據(jù)等做成了模塊,并使用應(yīng)用商店來進行更新。

Project Mainline的意義簡單來說幾乎可以解釋為“哪里不對點哪里”,如果Conscrypt模塊,也就是加速實現(xiàn)安全改進并提高設(shè)備安全性的模塊出現(xiàn)問題,谷歌方面可以直接通過Google Play推送新版本的Conscrypt給用戶,而不再需要像以往一樣將這個“BUG修復(fù)”整合到系統(tǒng)更新中。事實上,高通主控中的GPU以及ARM的Mali GPU能夠?qū)崿F(xiàn)將GPU驅(qū)動單獨在應(yīng)用商店更新,正式是得益于這一功能的加入。

而更具有里程碑意義的變化,則出現(xiàn)在如今的Android 11上,也就是谷歌方面開始對Android的Linux內(nèi)核進行改動了,其試圖將Android設(shè)備內(nèi)核統(tǒng)一至Linux內(nèi)核的主線。眾所周知,為了盡最大努力規(guī)避GPL協(xié)議所帶來的法律風(fēng)險,谷歌方面一直在想方設(shè)法將Linux內(nèi)核與設(shè)備驅(qū)動剝離開,盡管目前這個剝離并不完美,以至于雖然依舊存在法律風(fēng)險,但Android是可以被視為Linux發(fā)行版的。

Linux內(nèi)核對于Android而言無疑是大廈的基石,因此Linux內(nèi)核的升級會獲得BUG修復(fù)所帶來的安全性、新的硬件驅(qū)動、新特性,以及效率的提升。然而運行在Android設(shè)備上的Linux內(nèi)核,其實與谷歌選擇的LTS(長期支持)版本Linux內(nèi)核有很大不同。根據(jù)官方公布的數(shù)據(jù)顯示,截止2018年2月,與Linux 4.14.0相比,Android通用內(nèi)核更改了355行,插入了32266行,并刪除了1546行。

在Android 11之前,Linux在到達每一臺Android設(shè)備前,內(nèi)核會經(jīng)歷三個階段的fork。谷歌首先會先選擇某個LTS版本(通常為4.14.0)的Linux內(nèi)核,打上Android系統(tǒng)的特定補丁,使得其成為Android通用內(nèi)核;緊接著Android通用內(nèi)核被交付給高通等SoC供應(yīng)商,集成上主板、藍牙、WiFi等硬件驅(qū)動;最后再被移交至三星與小米這樣的設(shè)備制造商,打上設(shè)備特定的各類元器件驅(qū)動,這才構(gòu)成到了每臺設(shè)備中的內(nèi)核。

但這樣一套操作下來的最終結(jié)果,就是Android設(shè)備所使用的內(nèi)核相較于Linux內(nèi)核主線,要滯后兩到三年的時間。例如谷歌方面在去年11月發(fā)布的Pixel 4上,所使用的就是Linux在2017年11月發(fā)布的4.14 LTS版本,而剛剛發(fā)布的Pixel 5則使用的是Linux 4.19LTS版本,而非作為主線的Linux 5.9。并且由于升級的繁瑣,也導(dǎo)致了出廠的Android通用內(nèi)核版本將會伴隨這一設(shè)備的幾乎整個使用壽命。

面對這一情況,在Android 11中谷歌將系統(tǒng)內(nèi)核進行了模塊化的修改,將內(nèi)核分成了通用內(nèi)核鏡像(Generic Kernel Image,GKI)與其他GKI模塊,其中特定硬件的驅(qū)動程序(可能是閉源驅(qū)動)將作為內(nèi)核模塊加載,從而提供一個穩(wěn)定的寫入接口,使硬件廠商可以輕松的插入代碼,以實現(xiàn)最終消除特定設(shè)備內(nèi)核的目的。而這就可以避免此前類似三星向Linux內(nèi)核添加唯一代碼后,對系統(tǒng)安全造成影響的結(jié)果出現(xiàn)。

在Android 11后,谷歌想要升級內(nèi)核版本,以便讓相應(yīng)設(shè)備獲得更安全以及更高的性能,就可以直接向具體的設(shè)備推送GKI,而不再需要上游元器件廠商以及設(shè)備制造商的配合。

因此總而言之,這就意味著從Android 11開始,關(guān)于Android系統(tǒng)的一切幾乎都被模塊化,而這樣的改變所帶來的將是更加靈活與方便的更新方式。因此極有可能在Android 11之后的系統(tǒng)更新中,更新速度將會越來越快,甚至最終比肩iOS的更新速度也并不是沒有可能。

【版權(quán)與免責(zé)聲明】如發(fā)現(xiàn)內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息發(fā)郵件至 kefu@2898.com ,我們將及時溝通與處理。 本站內(nèi)容除了2898站長資源平臺( www.afrimangol.com )原創(chuàng)外,其它均為網(wǎng)友轉(zhuǎn)載內(nèi)容,涉及言論、版權(quán)與本站無關(guān)。
投稿

關(guān)注我們

站長資源平臺微信公眾號

微信二維碼