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