最近, XDA-Developers的一位認證開發者,在谷歌Project Treble團隊提交的新代碼中發現,Android 11中似乎有了新規定,谷歌將強制要求廠商在新推出的Android設備中採用虛擬的A/B分區,以保證這些設備能夠支持A/B無縫更新。根據提交的Vendor Test Suite(一個自動測試,廠商的設備必須通過這個測試才能認為是兼容Project Treble的)代碼,這個測試會檢查使用Android 11或更高版本啟動的設備是否支持虛擬A/B分區。這意味著,今後的安卓設備都將支持A/B無縫更新。
A/B分區與無縫更新
1、A/B分區是什麼?
實際上早在Android 7.0版本中,谷歌就在支持A/B分區的設備上引入了「無縫更新」的功能。只不過谷歌一直沒有強制讓新的Android設備支持無縫更新,也因此,許多設備都是不支持A/B分區和「無縫更新」的。不過很多人可能並不了解A/B分區和「無縫更新」,這裡借用XDA-Developers的一篇文章,結合安卓的官方文檔,作一個簡單介紹。
手機的分區就是內部存儲保存數據的一個獨立區域,Android系統、用戶數據等,每個名字不一樣的分區,都保存了不一樣的數據。"/system "和"/cache "之類的說法,實際上就是給不同的分區進行單獨的命名而已。A/B分區基本可以理解為,保存了不同系統數據的兩個獨立區域。下圖是一加6的部分手機分區,由於這款手機支持A/B分區,我們可以看到劃線部分的那些分區,實質上就是手機的A/B分區。
2、支持A/B分區的手機怎樣進行無縫更新
無縫更新會使用到手機的A、B這兩個分區,分別稱為槽位A和槽位B,系統在當前槽位運行時,不會訪問未使用的槽位中的分區。這樣,未使用的那個槽位就可以作為後備槽位,用來防範系統更新時出現問題。如果A槽位更新出現問題,系統可以回滾到B槽位,反之亦然。
上圖是整個流程的示意,假設A分區會活動分區,B為非活動分區,無縫更新的過程大概是這樣的:
- 用戶在A分區使用系統,系統有OTA更新時,會在非活動的B分區進行後台更新。
- 用戶重啟後,A分區被設置為非活動分區,用戶進入到活動的B分區,使用最新的系統
- 下一次OTA更新推出時,系統會在變為非活動的A分區更新,重複上述流程。
如果更新失敗,例如,系統在非活躍的B分區更新,用戶重啟手機後更新出現問題,系統會回滾到之前活躍的A分區上的正常版本,由於更改的是B分區上的數據,用戶的A分區不會受到影響。
國內廠商生產的手機中,一加6是較早支持A/B分區的一款機型,小米手機的部分海外版本也支持這個特性。想要知道自己的手機是否支持A/B無縫更新,可以下載一個叫做「Treble Check」的應用,打開這個應用就能看到結果。
A/B無縫更新的優點
A/B無縫更新確實解決了我們更新手機系統時常常遇到的一些問題,這也是谷歌強制要求後續的安卓手機支持這個特性的根本原因。
1、減少系統更新造成的死機、數據丟失等問題
由於A、B兩個分區是相互獨立的,系統在當前分區活躍時不會訪問非活躍的分區。我們剛才也提到,使用A/B無縫更新時,如果出現問題,系統會回滾到原來的分區,我們依舊可以使用原來的系統版本。而且不會損壞原來的系統數據。如果手機只有一個分區的話,用戶可能會面臨手機數據丟失甚至變磚的風險。
2、最大程度地減少系統更新對日常使用的影響
目前我們對手機系統進行更新時,我們需要花費較長時間等待更新完成,過程中無法對手機進行任何操作,不僅浪費時間,也很容易錯過一些重要消息。許多廠商為了最大程度地避免系統更新對用戶造成影響,都會將更新時間設置在夜間等用戶使用手機頻度較低的時間段。A/B無縫更新是在後台進行的,可以最大程度地避免這種等待。
3、不會耗費過多存儲空間
儘管支持A/B無縫更新的手機存在兩個分區,但並不會導致一堆的重複分區占用大量存儲空間。谷歌從A、B兩個分區中刪除了許多不必要的部分,使得兩個分區對存儲空間的占用基本達到了最小化。實際上,支持A/B分區的手機和只支持單個分區的手機,系統占用的差別並不大。也就是說,我們在享受這個特性帶來的各種好處的同時,也不必犧牲寶貴的手機存儲空間。
儘管A/B無縫更新可以帶來更好的系統更新體驗,還能減少更新過程中帶來的各種風險,但由於種種原因,很多Android手機廠商都沒有支持這個特性。如今,谷歌終於對這些廠商提出了強制要求,相信我們很快就能在接下來的手機中,獲得更好的系統更新體驗了。
文章來源: https://twgreatdaily.com/zh-cn/Tn1uY3EBnkjnB-0zNm4l.html