談?wù)凙ndroid11不為人知的變化
谷歌最近正式發(fā)布了Android 11。 這些新功能無(wú)疑對(duì)于最新一代的Android系統(tǒng)非常有價(jià)值。 但是,由于在中國(guó)經(jīng)常對(duì)Android本機(jī)功能進(jìn)行各種神奇的更改,因此對(duì)家庭用戶的影響是有限的。 Android 11對(duì)家庭生態(tài)的最大影響可能是由于鮮有提及的變化。
沒錯(cuò),安卓11的底層又有了不少大變化!所帶來(lái)的巨變,會(huì)深刻影響廣大用戶,今天就一起來(lái)聊聊吧。
刷機(jī)不再變磚?Recovery 分區(qū)成為歷史!
如果你是一名安卓刷機(jī)玩家,一定知道 Recovery 這個(gè)名詞。這是安卓系統(tǒng)中,用于恢復(fù)系統(tǒng)的模式,無(wú)論是廠商官方升級(jí)系統(tǒng),還是玩家刷入第三方 ROM,通常需要通過(guò) Recovery 來(lái)進(jìn)行。在安卓機(jī)中,還專門劃分了一個(gè)分區(qū)來(lái)放置 Recovery,但這在安卓11中要成為歷史了。
傳統(tǒng)的 Recovery 升級(jí)模式,如果寫入 System 系統(tǒng)分區(qū)的數(shù)據(jù)有誤,那么機(jī)器可能就無(wú)法啟動(dòng),刷機(jī)玩家應(yīng)該很熟悉這一類 “變磚”的情況,甚至廠商 OTA 偶爾也會(huì) “變磚”。要如何避免?事實(shí)上,近年的新安卓機(jī)使用 A/B 分區(qū)機(jī)制,很多安卓機(jī)已經(jīng)不需要 Recovery 來(lái)引導(dǎo)升級(jí)。
Android 系統(tǒng)啟動(dòng)方式的變更,之前需要經(jīng)由 Recovery,使用 A/B 分區(qū)機(jī)制后直接通過(guò) boot 來(lái)引導(dǎo)啟動(dòng)
在采用了 A/B 分區(qū)機(jī)制的安卓機(jī)中,當(dāng)系統(tǒng)需要升級(jí)的時(shí)候,會(huì)將新的系統(tǒng)寫入其中一個(gè)分區(qū),寫入成功后則從該分區(qū)啟動(dòng);如果寫入失敗,或者啟動(dòng)失敗,則從原分區(qū)啟動(dòng),這相當(dāng)于兩個(gè)系統(tǒng)分區(qū)相互備份,大大減少了系統(tǒng)升級(jí)的故障率。
安卓11的機(jī)制也與此相似。出廠預(yù)裝安卓11的機(jī)器,取消了 Recovery 分區(qū),而且對(duì) A/B 分區(qū)機(jī)制進(jìn)行了一定程度的改變。安卓11需要升級(jí)系統(tǒng)的時(shí)候,會(huì)將新系統(tǒng)的數(shù)據(jù)和現(xiàn)在的系統(tǒng)數(shù)據(jù)進(jìn)行對(duì)比校驗(yàn),將差異部分寫入另一個(gè)分區(qū)而不是系統(tǒng)分區(qū);之后,利用新數(shù)據(jù)啟動(dòng)系統(tǒng),如果系統(tǒng)順利啟動(dòng),那么就將差異數(shù)據(jù)寫入到系統(tǒng)分區(qū),啟動(dòng)失敗則拋棄差異數(shù)據(jù),用原來(lái)系統(tǒng)分區(qū)的數(shù)據(jù)啟動(dòng)。
安卓11這個(gè)新機(jī)制既有 A/B 分區(qū)的可靠性優(yōu)點(diǎn),也無(wú)需像 A/B 分區(qū)那樣占據(jù)大量的額外空間。無(wú)論如何,Recovery 分區(qū)都已經(jīng)遭到了遺棄,預(yù)裝安卓11的機(jī)器,出廠就沒有 Recovery 分區(qū),boot 分區(qū)更多承擔(dān)起了以前 Recovery 分區(qū)的工作。Recovery 是刷機(jī)不可或缺的工具,刷機(jī)玩家何去何從?恐怕得另覓出路了。
安卓11是有史以來(lái)最容易升級(jí)的安卓?
我們知道,Google 一直為解決系統(tǒng)碎片化問(wèn)題做努力,力求設(shè)備能夠升級(jí)最新版本的安卓。為此,Google 作了很多努力,例如在安卓8.0中推行了 Project Treble 機(jī)制,將系統(tǒng)(Android OS framework)單獨(dú)分區(qū),和硬件驅(qū)動(dòng)(Vendor implementation)分離,此后廠商可以為設(shè)備單獨(dú)推送新版安卓,而不需要重新適配驅(qū)動(dòng)。
Project Treble 將 Google 的安卓系統(tǒng)框架和硬件供應(yīng)商提供的驅(qū)動(dòng)作了分離
Project Treble 大大簡(jiǎn)化了安卓系統(tǒng)的升級(jí)流程,但這還不夠。在安卓10當(dāng)中,Google 推行了 Project Mainline,將系統(tǒng)進(jìn)一步細(xì)分模塊化。在安卓10中,14個(gè)系統(tǒng)組件被 Mainline 化,媒體解碼器、權(quán)限控制器、網(wǎng)絡(luò)組件等系統(tǒng)組件,都可以像普通 App 一樣,通過(guò)應(yīng)用商店來(lái)更新——很多朋友發(fā)現(xiàn),今年安卓機(jī)的 GPU 驅(qū)動(dòng)竟然能夠獨(dú)立更新,就得益于此。
高通宣布 GPU 驅(qū)動(dòng)可以單獨(dú)更新
在安卓11中,Google 又進(jìn)一步對(duì)安卓組件進(jìn)行細(xì)分,安卓的組件模塊達(dá)到了20個(gè)之多,安卓的系統(tǒng)維護(hù)將會(huì)變得前所未有地靈活。不僅如此,Google 還將改制推行到了系統(tǒng)內(nèi)核當(dāng)中,安卓的 Linux 系統(tǒng)內(nèi)核升級(jí)將會(huì)變得更加靈活。
在當(dāng)前的安卓系統(tǒng)中,Linux 系統(tǒng)內(nèi)核升級(jí)大體需要經(jīng)歷三個(gè)步驟。首先,Google 選定一個(gè) Linux LTS 版本作為安卓?jī)?nèi)核,打上安卓運(yùn)行所需要的 Patch;接著,Google 將這個(gè)內(nèi)核提交給高通等 SoC 供應(yīng)商,供應(yīng)商再次將其打造成為適配 SoC 的內(nèi)核;最后,三星等設(shè)備商再讓內(nèi)核適配不同的元器件,再次為內(nèi)核打上各種 Patch,讓內(nèi)核成為真正可以在安卓機(jī)上運(yùn)行的版本。
傳統(tǒng)的 Android 系統(tǒng) Linux 內(nèi)核升級(jí)流程,需要經(jīng)由重重環(huán)節(jié),非常麻煩
由于步驟繁瑣,因此當(dāng)前的安卓機(jī)一旦出廠,Linux 內(nèi)核就很少變動(dòng),即使是 Google 旗下的 Pixel 設(shè)備,內(nèi)核也依然只是較為老舊的 Linux 4.14。
而在安卓11中,情況有所變化,Google 將系統(tǒng)內(nèi)核進(jìn)行了模塊化修改,內(nèi)核被分成了 Generic Kernel Image(GKI)和其他 GKI 模塊。如果想要升級(jí) Linux 版本,Google 可以直接面向安卓機(jī)推送 GKI,手機(jī)直接升級(jí) GKI 即可,再也不需要經(jīng)歷從 SoC 廠商到手機(jī)設(shè)備廠商的繁瑣步驟。
Android 11開始,內(nèi)核進(jìn)行了模塊化,一個(gè) GKI 內(nèi)核可以通用于市面上的大量安卓機(jī)
據(jù)了解,安卓11的這一特性,在內(nèi)核版本高于 Linux 5.4以上的設(shè)備上,是要求強(qiáng)制執(zhí)行的??梢哉f(shuō),如果安卓11的設(shè)備出廠內(nèi)核版本就是 Linux 5.4以上,那它有可能會(huì)是史上最容易升級(jí)的安卓。
安卓存儲(chǔ)目錄文件夾亂象徹底解決? 相信不少人發(fā)現(xiàn),安卓機(jī)用久了以后,存儲(chǔ)目錄下就會(huì)多出很多奇奇怪怪的文件夾,這些文件夾是由各種 App 生成的,這其實(shí)是一個(gè)歷史遺留問(wèn)題。
安卓存儲(chǔ)目錄各種雜亂的文件夾哪來(lái)的呢?
安卓機(jī)的內(nèi)部存儲(chǔ)目錄一度非常小,例如經(jīng)典的 Milestone 的 ROM 只有512M,需要用 SD 卡擴(kuò)展存儲(chǔ)空間,因此安卓 App 往往會(huì)將文件保存在外部存儲(chǔ)目錄下(也就是 sdcard 目錄)。而安卓在4.3版本前并沒有提供外部存儲(chǔ)目錄的規(guī)范,App 習(xí)慣在 sdcard 目錄中隨意建立自己的文件夾,這個(gè)習(xí)慣一直保留到如今。
現(xiàn)在,盡管安卓建立了 sdcard 目錄的存儲(chǔ)規(guī)范,例如安卓系統(tǒng)規(guī)定 App 如果要在內(nèi)部存儲(chǔ)空間建立文件夾,需要建立到 / data/data / 目錄下,在外部存儲(chǔ)空間則需要建立在 / sdcard/Android/data / 目錄下。然而這一規(guī)范并非是強(qiáng)制性的,很多 App 由于使用第三方 SDK 等各種各樣的原因,視安卓的存儲(chǔ)目錄規(guī)范不見,依然在 sdcard 目錄下自建文件夾,安卓存儲(chǔ)目錄的混亂由此而來(lái)。
在安卓11中,文件夾亂象終于有望得到徹底解決。安卓11將不再允許 App 在 sdcard 建目錄和文件,APP 只能夠往特定目錄的私人文件夾寫入數(shù)據(jù)。目前某些 APP 已經(jīng)開始為此做準(zhǔn)備,例如新版 QQ 將存儲(chǔ)目錄從 / sdcard/tencent / 變更到了 / sdcard/Android/data/com.tencent.mobileqq/Tencent/,就是為了適應(yīng)安卓的存儲(chǔ)新機(jī)制。