Android 15 介紹了如何擷取 Cuttlefish 虛擬裝置的快照,以及還原快照。擷取 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