讓 Android Q 強制重啓的 Project Mainline,到底是什麼?

一. 序

最新的 Android 版本 Q,已經發布了 Android Q Beta 3,雖然沒有正式發佈,但是不少用戶已經加入了測試計劃,搶先體驗 Android Q 的新功能。

近期不少體驗用戶反饋,自己的設備升級到 Beta 3 之後,會出現觸不及防的強制重啓。谷歌方面已經確認,是運行了 Project Mainline 這個在 Android Q 中新加入的功能導致。谷歌在確認的同時也表示,這些問題會在之後的測試版本中修復,不會出現在正式版中。

那什麼是 Project Mainline(後文簡稱 P-M) 呢?它是幹什麼的?又解決了什麼問題?

二. Project Mainline

2.1 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 計劃。

P-M 可以通過 Google Play,使用一種類似更新應用程序的方式,更新系統的核心組件。這類更新可以無需等待手機製造廠商的 OTA 更新,直接觸達用戶,同時這些 Mainline 組件,也是開源的。初期提供的 Mainlin 組件,涉及到安全、隱私、一致性三個方面。

到現在應該都知道 Project Mainline 的作用了吧?

簡單來說,Android 的碎片化導致更新困難,而一些重要的功能又迫切的需要及時更新到用戶側,例如安全類、隱私類等,谷歌開啓了 Project Mainline 計劃。Project Mainline 計劃將系統中,重要的“模塊”封裝成一個個 Mainline 組件,通過 Google Play 的支持,使用一種類似更新應用的方式,在需要的時候,直接更新到用戶端,以此來解決碎片化所帶來的各種問題

Proejct Mainline 讓你手裏的設備更安全並且兼容性更強了。

2.2 P-M 更新了那些東西?

初期 Project Mainline 支持的模塊,主要涉及到安全、隱私和一致性三個方向。但是這種更新方式是通用的,後期不排除可能會攜帶一些常規更新。

Project Mainline 包含的更新方向:

  • 安全性:可以對關鍵的安全漏洞,提供更快的安全修復程序。例如媒體組件漏洞(佔最近修補漏洞的近 40%)。

  • 隱私:隱私一直是 Android 關心的焦點,並且在版本更新中,一直投入大量的精力來更好的保護用戶數據並提高隱私標準。最主要的表現是對權限系統進行更新升級,更好的保護用戶數據。

  • 一致性:一致性主要影響設備穩定性、兼容性和開發人員使用 API 的一致性問題。

在 Android Q 中上,初始支持的組件包含:

  • 安全性:媒體編解碼器、媒體框架組件、DNS 解析器、Conscrypt。

  • 隱私:文檔 UI、權限控制器、ExtServices。

  • 一致性:時區數據、ANGLE、模塊元數據、網絡組件、登錄組件、網絡權限配置。

分模塊的好處就可以做到“手疼醫手,腳疼醫腳,哪裏不對點哪裏了”,讓每次更新更輕量級。

2.3 P-M 是如何運作的?

前面提到 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:

https://android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html

https://android-developers.googleblog.com/2018/05/faster-adoption-with-project-treble.html


「聯機圓桌」????推薦我的知識星球,一年 50 個優質問題,上桌聯機學習。

公衆號後臺回覆成長『成長』,將會得到我準備的學習資料,也能回覆『加羣』,一起學習進步;你還能回覆『提問』,向我發起提問。

發佈了327 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章