最新的 Android 版本 Q,已經發布了 Android Q Beta 3,雖然沒有正式發佈,可是很多用戶已經加入了測試計劃,搶先體驗 Android Q 的新功能。html
近期很多體驗用戶反饋,本身的設備升級到 Beta 3 以後,會出現觸不及防的強制重啓。谷歌方面已經確認,是運行了 Project Mainline 這個在 Android Q 中新加入的功能致使。谷歌在確認的同時也表示,這些問題會在以後的測試版本中修復,不會出如今正式版中。android
那什麼是 Project Mainline(後文簡稱 P-M) 呢?它是幹什麼的?又解決了什麼問題?安全
Android 能有今天的發展,得益於它系統源碼的開源,又正是由於它的開源,致使碎片化嚴重。以致於在谷歌高速迭代 Android 系統版本的過程當中,很多用戶在吐槽,Q 來了,O 還沒用上呢。網絡
而碎片化又會致使各類問題,例如安全,隱私等問題。每每在系統中暴露出來一個問題,Android 團隊修復它,還須要等待漫長的時間,才能最終由廠商同步到用戶端。框架
中間環節太多,必然致使更新的緩慢,每每一個安全更新要通過半年甚至一年才能最終被廠商升級到用戶端,同時這些步驟中,還有一些是有時間重疊的。性能
上圖表示了谷歌和芯片製造商以及手機廠商之間的更新時間,這各個階段之間的任何重疊,均可能致使更新的失效。這就致使對於手機廠商而言,使用較舊的可是更穩定的 Android 版本,是更安全的作法。學習
爲了解決這些問題,從 Android P 開始加入的 Project Treble 計劃,它就是如今 Android Q 中 Project Mainline 的基礎。經過 P-M 的支持,簡化並加快了 Android 生態系統的升級更新。測試
上圖爲 Project Treble 的計劃理想更新時間,在 Android Q 中,谷歌發現與系統級的更新相比,以「模塊」爲粒度的更新,是一種更有效的方式,這就引入了 Project Mainline 計劃。google
P-M 能夠經過 Google Play,使用一種相似更新應用程序的方式,更新系統的核心組件。這類更新能夠無需等待手機制造廠商的 OTA 更新,直接觸達用戶,同時這些 Mainline 組件,在保證開源的同事,也不容許廠商直接修改,只能由 Google 來更新升級。初期提供的 Mainlin 組件,涉及到安全、隱私、一致性三個方面。操作系統
到如今應該都知道 Project Mainline 的做用了吧?
簡單來講,Android 的碎片化致使更新困難,而一些重要的功能又迫切的須要及時更新到用戶側,例如安全類、隱私類等,谷歌開啓了 Project Mainline 計劃。Project Mainline 計劃將系統中,重要的「模塊」封裝成一個個 Mainline 組件,經過 Google Play 的支持,使用一種相似更新應用的方式,在須要的時候,直接更新到用戶端,以此來解決碎片化所帶來的各類問題。
Proejct Mainline 讓你手裏的設備更安全而且兼容性更強了。
初期 Project Mainline 支持的模塊,主要涉及到安全、隱私和一致性三個方向。可是這種更新方式是通用的,後期不排除可能會攜帶一些常規更新。
Project Mainline 包含的更新方向:
在 Android Q 中上,初始支持的組件包含:
分模塊的好處就能夠作到「手疼醫手,腳疼醫腳,哪裏不對點哪裏了」,讓每次更新更輕量級。
前面提到 P-M 主要是經過 Google Play,以一種相似更新應用的方式去更新這些 Mainline 組件,那它究竟是如何運做的?
Mainline 組件最終以 APK 或者 APEX 文件的形式交付。APK 咱們很熟悉,而 APEX 是谷歌開發的一種新的文件格式,相似於 APK。可是其根本區別在與,APEX 在系統啓動過程當中,加載的更早。
所以,之前須要成爲完整操做系統更新一部分的重要安全性和性能的更新,如今能夠像更新應用同樣輕鬆的下載和安裝。
爲了確保 Mainline 更細不會破壞原有的功能,還爲此增長了保護機制和增長的測試流程,以確保每次更新都是通過全面測試以及完善的後備方案。
Project Mainline 的本意是爲了讓更新更快觸達用戶,以提升安全性、隱私和一致性等問題。雖然如今 Android Q Beta 3 中可能會致使強制重啓,可是問題已經暴露出來,後續解決它就很簡單了。
可能 P-M 的工程師以爲有更新,當即重啓一下就能夠生效了,就給用戶強制重啓了,固然這也可能單純的就是一個 Bug。理論上若是不是很重要的組件更新,可能和重啓應用同樣簡單,就不須要對系統進行重啓,可是一些重要的組件更新,可能就須要重啓系統來確保它生效。
不過話說回來,再嚴重的問題,都已經運行在用戶端設備上這麼久了,也不差這一天兩天的。參考 iOS 系統更新的策略就挺好的,當即更新或者在半夜空閒時更新。
這種單模塊的更新,可能會讓開發人員和測試人員更迷惑,之前兼容性的問題,只須要問清楚手機型號和系統版本,就能夠針對性的作適配。如今好了,還須要弄清楚對應的 Mainline 模塊的版本號,也許有些問題已經被谷歌偷偷的修復了,可是在用戶側尚未及時更新。這時開發人員仍是蠻尷尬的,你說我改仍是不改?
你以爲呢?歡迎在留言區討論!
本文對你有幫助嗎?留言、轉發、收藏是最大的支持,謝謝!
references:
公衆號後臺回覆成長『成長』,將會獲得我準備的學習資料,也能回覆『加羣』,一塊兒學習進步;你還能回覆『提問』,向我發起提問。