از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اندروید 15 نحوه گرفتن عکس فوری و بازیابی یک عکس فوری از یک دستگاه مجازی Cuttlefish را معرفی می کند. گرفتن یک عکس فوری از دستگاه Cuttlefish به شما امکان می دهد وضعیت دستگاه را در یک تصویر روی دیسک ذخیره کنید. سپس می توانید عکس فوری را بازیابی کنید تا یک دستگاه Cuttlefish به حالت ذخیره شده قبلی باز شود.
میتوانید از عکسهای فوری در گردشهای کاری مختلف خودکار یا دستی استفاده کنید. هنگام انجام رویهای که دستگاه را تغییر میدهد، میتوانید یک عکس فوری از دستگاه بگیرید تا مطمئن شوید که میتوانید دستگاه را به حالت مشخص بازگردانید. به عنوان مثال، هنگام اجرای مجموعههای آزمایشی که وضعیت دستگاه را تغییر میدهند و به طور بالقوه میتوانند باعث مشکلات یا بیثباتی در آزمایشهای زیر شوند، میتوانید یک عکس فوری بگیرید تا بتوانید دستگاه را پس از آزمایش به حالت ذخیرهشده بازگردانید و مطمئن شوید که آزمایشهای بعدی به خوبی اجرا میشوند.
نمونه دیگری از گردش کار که در آن عکس های فوری مفید هستند، هنگام آزمایش رفتار یک برنامه است. هنگام آزمایش رفتار یک برنامه بر اساس مجموعه ای از اقدامات، می توانید یک عکس فوری در بین عملکردها در حالی که برنامه در حال اجرا است بگیرید تا به شما امکان دهد بدون نیاز به راه اندازی مجدد از ابتدا، آن عکس فوری را بازیابی کنید. به عنوان مثال، اگر راهاندازی یک بازی زمان بارگذاری طولانی دارد، میتوانید پس از رسیدن به منوی اصلی، یک عکس فوری بگیرید تا بتوانید دستگاه را به آن حالت بازگردانید و از زمان بازگردانی صرفنظر کنید.
یک عکس فوری از یک دستگاه سگ ماهی بگیرید
هنگام گرفتن عکس فوری از یک دستگاه، دستگاه Cuttlefish باید معلق باشد تا مطمئن شوید که دستگاه Cuttlefish در حالت پایدار است. هنگامی که دستگاه تعلیق می شود، تمام vCPU ها و دستگاه ها متوقف می شوند و همه بافرها وضعیت خود را به VM منتقل می کنند. سپس عکس فوری وضعیت vCPU، حافظه و وضعیت دستگاه را در دیسک در یک پوشه مقصد مشخص ذخیره می کند.
VirtiosFS پشتیبانی نمی شود و هنگام گرفتن عکس فوری باید غیرفعال شود. برای غیرفعال کردن VirtioFS، هنگام اجرای cvd create یا cvd start آرگومان --enable_virtiofs=false را ارسال کنید.
فقط حالت GPU SwiftShader ( guest_swiftshader ) برای عکس های فوری پشتیبانی می شود. سایر حالتهای گرافیکی شتابدار پشتیبانی نمیشوند.
مراحل زیر روند راه اندازی دستگاه Cuttlefish و گرفتن عکس فوری را شرح می دهد.
یک دستگاه را راه اندازی کنید، در حالی که VirtioFS را غیرفعال کنید. (پس از آن می توانید از دستگاه استفاده کنید.)
با اجرای cvd snapshot_take با پرچم های زیر یک عکس فوری بگیرید:
--force : اگر پوشه ای در مسیر عکس فوری مشخص شده وجود داشته باشد، این پرچم تضمین می کند که پوشه موجود حذف شده است و یک پوشه جدید در مسیر عکس فوری ایجاد می شود که حاوی عکس فوری است.
--auto_suspend : دستگاه را قبل از گرفتن عکس فوری به حالت تعلیق در می آورد و پس از گرفتن عکس فوری دستگاه را از سر می گیرد.
--snapshot_path : مسیر مشخص شده که در آن یک پوشه جدید با عکس فوری ایجاد می شود.
هنگام بازیابی یک عکس فوری دستگاه Cuttlefish، نمونه Cuttlefish که برای آن عکس فوری گرفته شده است باید متوقف شود. اگر نمونه از قبل متوقف شده باشد، هیچ اقدام دیگری لازم نیست و می توان عکس فوری را بازیابی کرد.
برای بازیابی یک عکس فوری از یک دستگاه Cuttlefish، یک دستگاه با cvd create راه اندازی کنید و مسیر عکس فوری را اضافه کنید. اگر شماره نمونه پایه دستگاه Cuttlefish که عکس فوری از آن گرفته شده است با شماره نمونه پایه نمونه فعلی Cuttlefish متفاوت است، آن شماره نمونه پایه را با استفاده از پرچم --base_instance_num ارسال کنید.
شما می توانید یک دستگاه Cuttlefish را بدون گرفتن عکس فوری معلق کنید (برای ذخیره وضعیت از فضای دیسک استفاده نمی شود). برای تعلیق دستگاه Cuttlefish، اجرا کنید:
cvdsuspend
یک دستگاه کوتلفیش را از سر بگیرید
برای از سرگیری دستگاه Cuttlefish معلق، اجرا کنید:
cvdresume
قابلیت Snapshot/Restore را اعتبارسنجی کنید
ویژگی Snapshot/Restore را می توان با اجرای آزمایش زیر تأیید کرد:
atestSnapshotTest
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Cuttlefish: Snapshot and restore\n\nAndroid 15 introduces how to take a snapshot and\nrestore a snapshot of a Cuttlefish virtual device. Taking a snapshot of a\nCuttlefish device lets you save the state of the device in an image on disk.\nYou can then restore the snapshot to bring up a Cuttlefish device to the\npreviously saved state.\n\nYou can use snapshots in various automated or manual workflows. When\nperforming a procedure that modifies the device, you can take a snapshot of\nthe device to ensure you can restore the device back to a specified state.\nFor example, when running test suites that modify the state of the device\nand can potentially cause issues or instabilities in the following tests,\nyou can take a snapshot so you can restore the device to a saved state after\na test, ensuring that subsequent tests run cleanly.\n\nAnother example workflow where snapshots are useful is when testing the\nbehavior of an app. When testing the behavior of an app based on a set of\nactions, you can take a snapshot in between actions as the app is running\nto let you restore to that snapshot without having to restart from the\nbeginning. For example, if launching a game has a long bringup time, you\ncan take a snapshot after reaching the main menu so you can restore the\ndevice to that state, skipping the bringup time.\n\nTake snapshot of a Cuttlefish device\n------------------------------------\n\n| **Note:** Snapshots are only supported on x86_64 platforms.\n\nWhen taking a snapshot of a device, the Cuttlefish device must be suspended\nto make sure the Cuttlefish device is in a stable state. When the device\nis suspended, all vCPUs and devices are stopped, and all buffers push\ntheir state to the VM. The snapshot then saves the vCPU state, memory,\nand device state to disk at a specified destination folder.\n\nVirtiosFS isn't supported and must be disabled when taking a snapshot. To\ndisable VirtioFS, pass the argument\n`--enable_virtiofs=false` when running `cvd create` or `cvd start`.\n\nOnly the SwiftShader (`guest_swiftshader`) GPU mode is supported for\nsnapshots. Other [accelerated graphics modes](/docs/devices/cuttlefish/gpu)\naren't supported.\n\nThe following steps describes the process of launching a Cuttlefish device\nand taking a snapshot.\n\n1. Launch a device, while disabling VirtioFS. (You can then use the device.)\n\n cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader\n\n2. Take a snapshot by running `cvd snapshot_take` with the following flags:\n\n - `--force`: If a folder exists at the specified snapshot path, this\n flag ensures that the existing folder is deleted, and a new folder\n is created at the snapshot path containing the snapshot\n\n - `--auto_suspend`: Suspends the device before the snapshot is taken and\n resumes the device after the snapshot is taken.\n\n - `--snapshot_path`: The specified path where a new folder is created\n with the snapshot.\n\n cvd snapshot_take --force --auto_suspend \\\n --snapshot_path=\u003cvar translate=\"no\"\u003ePATH\u003c/var\u003e\n\nRestore a Cuttlefish device\n---------------------------\n\nWhen restoring a Cuttlefish device snapshot, the Cuttlefish instance for\nwhich the snapshot was taken must be stopped. If the instance is already\nstopped, no further action is required and the snapshot can be restored.\n\nTo restore a snapshot of a Cuttlefish device, launch a device with `cvd create`\nand include the snapshot path. If the base instance number of the Cuttlefish\ndevice on which the snapshot was taken is different from the base instance\nnumber of the current Cuttlefish instance, pass that base instance\nnumber using the `--base_instance_num` flag. \n\n cvd create --snapshot_path=\u003cvar translate=\"no\"\u003ePATH\u003c/var\u003e \\\n --base_instance_num=\u003cvar translate=\"no\"\u003eID\u003c/var\u003e\n\nSuspend a Cuttlefish device\n---------------------------\n\nYou can suspend a Cuttlefish device without taking a snapshot (no disk space\nis used for saving the state). To suspend a Cuttlefish device, run: \n\n cvd suspend\n\nResume a Cuttlefish device\n--------------------------\n\nTo resume a suspended Cuttlefish device, run: \n\n cvd resume\n\nValidate the Snapshot/Restore feature\n-------------------------------------\n\nThe Snapshot/Restore feature can be validated by running the following test: \n\n atest SnapshotTest"]]