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