隨著Android 8.0 Oreo的發(fā)布,谷歌推出了Project Treble:這是Android OS框架的主要重新配置,用于與廠商HAL和Linux內(nèi)核進(jìn)行通信。高音是一項(xiàng)旨在減少安卓平臺(tái)版本和安全補(bǔ)丁碎片的主要措施,所有以安卓派開(kāi)始的安卓品牌設(shè)備都需要支持高音項(xiàng)目。原始設(shè)備制造商和供應(yīng)商通過(guò)啟動(dòng)通用系統(tǒng)映像(GSI)(來(lái)自AOSP的安卓純庫(kù)存版本)并通過(guò)供應(yīng)商測(cè)試套件來(lái)測(cè)試高音兼容性。(VTS)和兼容性測(cè)試套件通用系統(tǒng)映像(CTS-GSI)。原來(lái),GSI不僅可以幫助OEM軟件工程師測(cè)試Treble兼容性,還可以為XDA的大型定制ROM社區(qū)打開(kāi)大門(mén)。對(duì)于安卓q版,谷歌希望讓GSI對(duì)另一個(gè)群體有用:應(yīng)用開(kāi)發(fā)者。
由于任何給定安卓平臺(tái)版本的第一個(gè)穩(wěn)定版本和源代碼發(fā)布通常都是在8月份發(fā)布,如果不想等待,想要在真實(shí)設(shè)備上測(cè)試下一個(gè)安卓版本的開(kāi)發(fā)者通常需要訪問(wèn)谷歌智能手機(jī)。更新你自己的硬件。然而,去年谷歌與原始設(shè)備制造商合作,將安卓P beta引入許多設(shè)備,今年他們又跟進(jìn)了安卓Q beta。除了官方的安卓Q測(cè)試版,谷歌今年還發(fā)布了官方的GSI Q測(cè)試版。因此,任何擁有與Project Treble兼容的設(shè)備的開(kāi)發(fā)人員都可以安裝最新的Q版本,而無(wú)需等待數(shù)月的構(gòu)建時(shí)間才能到達(dá)他們的設(shè)備。這種測(cè)試下一個(gè)安卓版本的新方法為開(kāi)發(fā)人員提供了更多的機(jī)會(huì),讓他們有更多的時(shí)間來(lái)測(cè)試他們的應(yīng)用程序,以適應(yīng)安卓的重大變化。
不幸的是,目前安裝GSI的方法可能很困難。它需要解鎖引導(dǎo)程序,該程序會(huì)擦除所有用戶數(shù)據(jù)和/或排尿擔(dān)保,并通過(guò)閃存映像FASTBOOT協(xié)議。如果應(yīng)用程序開(kāi)發(fā)人員的設(shè)備甚至允許解鎖引導(dǎo)加載程序,那么這不是一個(gè)快速簡(jiǎn)單的過(guò)程。這就是為什么在過(guò)去的幾個(gè)月里,谷歌一直在研究一種新的方法來(lái)指導(dǎo)GSI。輸入一個(gè)名為動(dòng)態(tài)系統(tǒng)更新或DSU的新函數(shù)。
(這個(gè)功能之前是以“Live Image”、“Dynamic Android”和“Tap Android”的名義開(kāi)發(fā)的,所以如果谷歌在幾周或幾個(gè)月內(nèi)調(diào)用其他功能,不要感到驚訝。)
安卓Q中的動(dòng)態(tài)系統(tǒng)更新
DSU函數(shù)的目標(biāo)是允許開(kāi)發(fā)者在不干擾當(dāng)前安裝的情況下引導(dǎo)到GSI。這意味著不需要解鎖引導(dǎo)加載程序,也不需要擦除用戶數(shù)據(jù)。因?yàn)楣雀杼峁┝艘粋€(gè)命令行界面和應(yīng)用程序,可以通過(guò)ADB進(jìn)行意向控制,安裝過(guò)程大大簡(jiǎn)化。使用DSU引導(dǎo)GSI的外觀如下:
在這個(gè)視頻*中,運(yùn)行安卓Q beta 3的谷歌Pixel 3 XL以GSI的身份重啟。在這種環(huán)境下,應(yīng)用程序開(kāi)發(fā)人員可以安裝和測(cè)試其應(yīng)用程序的Q API兼容性。測(cè)試結(jié)束后,他們只需要重啟回到設(shè)備上的常規(guī)Q beta 3軟件。你基本上雙啟動(dòng)GSI,所以你可以安全地測(cè)試應(yīng)用程序!
*我們?cè)?019年在谷歌I/O上錄制了這段視頻。當(dāng)時(shí),DSU還沒(méi)有公開(kāi)。因此,谷歌稍微修改了建立在電影Pixel 3 XL上的Q beta 3,以包括DSU支持。運(yùn)行Q beta 4及更高版本的設(shè)備如果滿足以下要求,則有資格支持DSU。
動(dòng)態(tài)系統(tǒng)更新的要求
對(duì)于谷歌來(lái)說(shuō),在本質(zhì)上獲得雙重啟動(dòng)和運(yùn)營(yíng)的任務(wù)并不容易。在谷歌DSU的測(cè)試平臺(tái)Pixel 3上,需要對(duì)分區(qū)的管理進(jìn)行重大改變。因此,DSU支持的第一個(gè)主要要求是設(shè)備支持動(dòng)態(tài)分區(qū)。動(dòng)態(tài)分區(qū)涉及一個(gè)實(shí)際的存儲(chǔ)分區(qū),它被劃分為可以調(diào)整大小的邏輯分區(qū),如系統(tǒng)、供應(yīng)商、odm、oem、產(chǎn)品等。在GSI安裝期間,通過(guò)使用現(xiàn)有分區(qū)中未使用的塊,為新的系統(tǒng)分區(qū)和用戶數(shù)據(jù)分區(qū)保留空間。用戶數(shù)據(jù)分區(qū)。由于這些新分區(qū)的大小可能是幾GB,因此DSU支持僅對(duì)邏輯分區(qū)有意義,否則設(shè)備將需要為GSI安裝永久保留幾GB的存儲(chǔ)空間。
其他要求包括用于引導(dǎo)至恢復(fù)的ramdisk、系統(tǒng)或邏輯分區(qū)以及用于存儲(chǔ)GSI元數(shù)據(jù)的元數(shù)據(jù)分區(qū)。據(jù)Project Treble負(fù)責(zé)人Iliyan Malchev介紹,支持DSU的基本要素是安卓Q的啟動(dòng)要求,我們不確定支持DSU所需的一切是否都是安卓Q的啟動(dòng)要求,但我們可以假設(shè),即使谷歌目前不要求DSU,大多數(shù)(如果不是全部)以安卓Q啟動(dòng)的設(shè)備也能支持DSU。到目前為止,只有Pixel 3、Pixel 3 XL、Pixel 3a和Pixel 3 XL有動(dòng)態(tài)分區(qū),而在這些設(shè)備中,安卓Q beta 4中只有Pixel 3和Pixel 3 XL支持DSU。希望谷歌OEM能啟用這個(gè)功能,因?yàn)榭梢院?jiǎn)化安全性。
全測(cè)試Treble兼容性。例如,OEM軟件工程師可以將GSI 放在SD卡上,以便他們可以在多個(gè)設(shè)備上快速啟動(dòng)以測(cè)試Treble兼容性。動(dòng)態(tài)系統(tǒng)更新的安全性
由于DSU本質(zhì)上引入了第二種操作系統(tǒng),因此Google需要確保新安裝不會(huì)被篡改以破壞設(shè)備的完整性。因此,對(duì)于GSI安裝,原始安裝使用了相同的基本安全保護(hù)措施:Android驗(yàn)證啟動(dòng)和SELinux策略。此外,只有具有INSTALL_DYNAMIC_SYSTEM簽名|特權(quán)的應(yīng)用程序才能啟動(dòng)GSI安裝,而具有MANAGE_DYNAMIC_SYSTEM簽名許可權(quán)的應(yīng)用程序可以啟用/禁用或擦除GSI安裝。這意味著只有受信任的系統(tǒng)級(jí)應(yīng)用程序才能與DSU一起使用。
為了確保原始用戶數(shù)據(jù)受到保護(hù),Google 在Android Q中添加了額外的保護(hù)機(jī)制。稱(chēng)為“ 檢查點(diǎn) ”,該功能通過(guò)將檢查點(diǎn)分區(qū)恢復(fù)到原始狀態(tài)來(lái)防止破壞用戶數(shù)據(jù)。但是,檢查點(diǎn)不僅對(duì)DSU有用。它們還用于防止不良的項(xiàng)目主線 APEX模塊和A / B OTA更新。(具有A / B分區(qū)的設(shè)備已經(jīng)具有回滾保護(hù),但是這些回滾需要恢復(fù)出廠數(shù)據(jù),而用戶數(shù)據(jù)檢查點(diǎn)則不需要。)
安裝GSI
如果您的設(shè)備支持Pixel 3系列等DSU,則安裝GSI很容易。您首先必須確保通過(guò)以下兩種方式之一啟用動(dòng)態(tài)系統(tǒng)功能標(biāo)志:
然后,從Google或設(shè)備的OEM 下載最新的Android Q beta GSI 。(DSU僅允許安裝由Google或OEM簽署的GSI。)下載后,使用simg2img將稀疏映像轉(zhuǎn)換為原始映像。使用gzip打包原始圖像,然后將生成的存檔復(fù)制到設(shè)備外部存儲(chǔ)設(shè)備(例如/ data / media / 0 / Download)或?qū)嶋H外部存儲(chǔ)介質(zhì)(例如物理SD卡)上的某個(gè)位置。最后,出于正確的意圖啟動(dòng)DynamicSystemInstallationService應(yīng)用程序以開(kāi)始安裝: