Android 15 में, Cuttlefish वर्चुअल डिवाइस का स्नैपशॉट लेने और उसे वापस लाने का तरीका बताया गया है. Cuttlefish डिवाइस का स्नैपशॉट लेने पर, डिवाइस की स्थिति को डिस्क पर इमेज के तौर पर सेव किया जा सकता है. इसके बाद, स्नैपशॉट को वापस लाया जा सकता है, ताकि कटलफ़िश डिवाइस को पहले सेव की गई स्थिति पर लाया जा सके.
अपने-आप चलने वाले या मैन्युअल वर्कफ़्लो में, स्नैपशॉट का इस्तेमाल किया जा सकता है. डिवाइस में बदलाव करने वाली प्रोसेस को पूरा करते समय, डिवाइस का एक स्नैपशॉट लिया जा सकता है. इससे यह पक्का किया जा सकता है कि डिवाइस को वापस तय की गई स्थिति में वापस लाया जा सकता है. उदाहरण के लिए, ऐसे टेस्ट सुइट चलाते समय जो डिवाइस की स्थिति में बदलाव करते हैं और जिनकी वजह से आने वाले टेस्ट में समस्याएं या अस्थिरता हो सकती है, तो स्नैपशॉट लिया जा सकता है. इससे, किसी टेस्ट के बाद डिवाइस को सेव की गई स्थिति में वापस लाया जा सकता है. इससे यह पक्का किया जा सकता है कि आने वाले टेस्ट बिना किसी रुकावट के चलें.
किसी ऐप्लिकेशन के व्यवहार की जांच करते समय भी स्नैपशॉट काम आते हैं. किसी ऐप्लिकेशन के व्यवहार की जांच करते समय, ऐप्लिकेशन के चलने के दौरान कार्रवाइयों के बीच में स्नैपशॉट लिया जा सकता है. इससे, आपको शुरुआत से फिर से शुरू किए बिना उस स्नैपशॉट को वापस लाया जा सकता है. उदाहरण के लिए, अगर किसी गेम को लॉन्च करने में ज़्यादा समय लगता है, तो मुख्य मेन्यू पर पहुंचने के बाद स्क्रीनशॉट लिया जा सकता है. इससे डिवाइस को उस स्थिति में वापस लाया जा सकता है और गेम को लॉन्च करने में लगने वाला समय बचाया जा सकता है.
कटलफ़िश डिवाइस का स्नैपशॉट लें
डिवाइस का स्नैपशॉट लेते समय, कटलफ़िश डिवाइस को निलंबित करना चाहिए, ताकि यह पक्का किया जा सके कि कटलफ़िश डिवाइस ठीक से काम कर रहा है. डिवाइस के निलंबित होने पर, सभी vCPU और डिवाइस बंद हो जाते हैं. साथ ही, सभी बफ़र अपनी स्थिति को वीएम पर भेज देते हैं. इसके बाद स्नैपशॉट, vCPU की स्थिति, मेमोरी, और डिवाइस की स्थिति को बताए गए डेस्टिनेशन फ़ोल्डर में सेव करता है.
VirtiosFS का इस्तेमाल नहीं किया जा सकता. साथ ही, स्नैपशॉट लेते समय इसे बंद करना ज़रूरी है. VirtioFS को बंद करने के लिए, cvd create
या cvd start
को चलाते समय, आर्ग्युमेंट के तौर पर --enable_virtiofs=false
पास करें.
स्नैपशॉट के लिए, सिर्फ़ SwiftShader (guest_swiftshader
) जीपीयू मोड का इस्तेमाल किया जा सकता है. बेहतर ग्राफ़िक मोड के अन्य विकल्प काम नहीं करते.
नीचे दिए गए तरीके में, कटलफ़िश डिवाइस को लॉन्च करने और एक स्नैपशॉट लेने की प्रोसेस बताई गई है.
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 डिवाइस को फिर से चालू करना
निलंबित किए गए कटलफ़िश डिवाइस को फिर से चालू करने के लिए, इसे चलाएं:
cvd resume
स्नैपशॉट/वापस लाने की सुविधा की पुष्टि करना
स्नैपशॉट/वापस लाने की सुविधा की पुष्टि करने के लिए, यह टेस्ट चलाएं:
atest SnapshotTest