Android 15 推出如何擷取 Cuttlefish 虛擬裝置快照,以及如何還原快照。您可以為 Cuttlefish 裝置建立快照,將裝置狀態儲存到磁碟上的映像檔。接著還原快照,即可將 Cuttlefish 裝置還原至先前儲存的狀態。
您可以在各種自動或手動工作流程中使用快照。執行會修改裝置的程序時,您可以建立裝置快照,確保裝置能還原至指定狀態。舉例來說,執行會修改裝置狀態的測試套件時,可能會導致後續測試發生問題或不穩定,這時您可以拍攝快照,以便在測試後將裝置還原至儲存的狀態,確保後續測試順利執行。
快照的另一個實用工作流程是測試應用程式的行為。根據一組動作測試應用程式行為時,您可以在應用程式執行期間擷取動作之間的快照,以便還原至該快照,而不必從頭重新啟動。舉例來說,如果啟動遊戲需要很長時間,您可以在進入主選單後拍攝快照,以便將裝置還原至該狀態,略過啟動時間。
拍攝 Cuttlefish 裝置的快照
拍攝裝置快照時,Cuttlefish 裝置必須暫停,確保裝置處於穩定狀態。裝置暫停時,所有 vCPU 和裝置都會停止運作,且所有緩衝區都會將狀態推送至 VM。然後,快照會將 vCPU 狀態、記憶體和裝置狀態儲存到磁碟的指定目標資料夾。
拍攝快照時,系統不支援 VirtiosFS,因此必須停用。如要停用 VirtioFS,請在執行 cvd create
或 cvd start
時傳遞 --enable_virtiofs=false
引數。
快照僅支援 SwiftShader (guest_swiftshader
) GPU 模式。系統不支援其他加速繪圖模式。
下列步驟說明啟動 Cuttlefish 裝置及建立快照的程序。
啟動裝置,同時停用 VirtioFS。(然後即可使用裝置)。
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
執行
cvd snapshot_take
並搭配下列標記,即可建立快照:--force
:如果指定快照路徑中已有資料夾,這個標記可確保系統刪除現有資料夾,並在快照路徑中建立包含快照的新資料夾--auto_suspend
:在拍攝快照前暫停裝置,並在拍攝快照後繼續執行裝置。--snapshot_path
:指定路徑,系統會建立新資料夾並儲存快照。
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
還原 Cuttlefish 裝置
還原 Cuttlefish 裝置快照時,必須停止擷取快照的 Cuttlefish 執行個體。如果執行個體已停止運作,則無須採取進一步行動,即可還原快照。
如要還原 Cuttlefish 裝置的快照,請啟動裝置並加入快照路徑。cvd create
如果擷取快照的 Cuttlefish 裝置基本執行個體編號,與目前 Cuttlefish 執行個體的基本執行個體編號不同,請使用 --base_instance_num
旗標傳遞該基本執行個體編號。
cvd create --snapshot_path=PATH \
--base_instance_num=ID
暫停 Cuttlefish 裝置
您可以暫停 Cuttlefish 裝置,不必建立快照 (不會使用任何磁碟空間儲存狀態)。如要暫停 Cuttlefish 裝置,請執行:
cvd suspend
繼續使用 Cuttlefish 裝置
如要繼續使用暫停的 Cuttlefish 裝置,請執行下列指令:
cvd resume
驗證快照/還原功能
如要驗證快照/還原功能,請執行下列測試:
atest SnapshotTest