AVD Android: چیست، Android Virtual Device و چگونه شبیه‌ساز را تنظیم کنیم

نویسنده: IT Sectr منتشر شده: 2026-02-09 زمان مطالعه: 10 دقیقه

AVD (Android Virtual Device) — پیکربندی شبیه‌سازی است که یک دستگاه واقعی Android را روی رایانه توسعه‌دهنده شبیه‌سازی می‌کند. هر AVD شامل نسخه انتخاب‌شده سیستم عامل (System Image)، نوع دستگاه (تلفن، تبلت، Wear OS)، اندازه صفحه و مقدار حافظه است. به گفته Google Android Developers, 2026، AVD برای تست برنامه‌ها در نسخه‌ها و پیکربندی‌های مختلف Android بدون نیاز به خرید ده‌ها دستگاه فیزیکی استفاده می‌شود. QEMU — هایپروایزری که شبیه‌ساز روی آن اجرا می‌شود.

نکات اصلی

  • AVD — دستگاه مجازی Android که روی QEMU با System Image انتخاب‌شده اجرا می‌شود.
  • System Image — تصویر سیستم عامل با سطح API مشخص، با یا بدون سرویس‌های Google.
  • AVD Manager — ابزار Android Studio برای ایجاد، تنظیم و مدیریت دستگاه‌های مجازی.
  • برای عملکرد کارآمد AVD به مجازی‌سازی سخت‌افزاری نیاز است (HAXM، Hypervisor.Framework یا WHPX).
  • AVD امکان تست برنامه‌ها را در نسخه‌های مختلف Android، اندازه‌های صفحه و پیکربندی‌ها بدون دستگاه فیزیکی فراهم می‌کند.

AVD چیست

AVD (Android Virtual Device) — یک پیکربندی نرم‌افزاری است که یک دستگاه مجازی Android را توصیف می‌کند. برخلاف تلفن فیزیکی، AVD به سخت‌افزار نیاز ندارد — از طریق شبیه‌ساز Android مبتنی بر QEMU روی رایانه اجرا می‌شود. توسعه‌دهنده به تعداد مورد نیاز برای تست، AVD ایجاد می‌کند: برای نسخه‌های مختلف Android، اندازه‌های صفحه، حجم حافظه و تراکم پیکسل.

هر AVD به یک SDK Platform خاص متصل است. این بدان معناست که برای ایجاد AVD با Android 14 (API Level 34) ابتدا باید System Image این نسخه را از طریق SDK Manager نصب کنید. System Image تصویری از سیستم عامل است که شامل تمام برنامه‌های سیستمی، سرویس‌های Google (اگر تصویر Google APIs انتخاب شده باشد) و کامپوننت‌های زمان اجرا می‌شود. Google توصیه می‌کند برای حداکثر سازگاری با دستگاه‌های واقعی از تصاویر Google APIs با سرویس‌های Google Play استفاده کنید.

AVD در توسعه به چند دلیل ضروری است. اولاً، به شما امکان می‌دهد برنامه را در نسخه‌های مختلف Android بدون خرید ده‌ها دستگاه تست کنید. ثانیاً، AVD از Snapshots — ذخیره وضعیت سیستم پشتیبانی می‌کند که راه‌اندازی را تسریع می‌کند. ثالثاً، شبیه‌ساز با Android Studio ادغام شده است: نصب APK، اشکال‌زدایی و ثبت رویدادها دقیقاً مانند دستگاه فیزیکی کار می‌کنند.

انواع دستگاه‌های مجازی

AVD از انواع مختلف دستگاه‌ها پشتیبانی می‌کند: تلفن‌ها (Phone)، تبلت‌ها (Tablet)، ساعت‌ها (Wear OS)، تلویزیون‌ها (Android TV) و سیستم‌های خودرویی (Android Automotive). برای هر نوع، AVD Manager پروفایل‌های آماده از Google ارائه می‌دهد: Pixel 8، Pixel 9 Pro، Nexus 7، Samsung Galaxy Tab و دیگران. پروفایل دستگاه اندازه صفحه، وضوح، تراکم پیکسل (dpi) و ناوبری (حرکات یا دکمه‌ها) را تعیین می‌کند.

نوع دستگاهپروفایل نمونهوضوحdpi
PhonePixel 81080x2400420
PhonePixel 9 Pro1280x2856490
TabletPixel Tablet2560x1600320
Wear OSPixel Watch384x384320
Android TVAndroid TV 4K1920x1080240

AVD از چه چیزی تشکیل شده است

هر AVD مجموعه‌ای از فایل‌های پیکربندی و تصاویر است. فایل اصلی پیکربندی — config.ini است که پارامترهای دستگاه مجازی را ذخیره می‌کند: نام، نوع، API Level، اندازه صفحه، مقدار RAM و VM heap. فایل در دایرکتوری $HOME/.android/avd/NameAVD.avd/ قرار دارد و می‌توان آن را به صورت دستی ویرایش کرد، اگرچه معمولاً از طریق AVD Manager ویرایش می‌شود.

علاوه بر config.ini، در دایرکتوری AVD ذخیره می‌شوند: userdata.img (تصویر داده‌های کاربر — برنامه‌ها، تنظیمات، فایل‌ها)، system.img (ارجاع به System Image نصب‌شده SDK Platform)، cache.img (کش) و sdcard.img (تصویر کارت SD). هنگام انجام Wipe Data، userdata.img حذف شده و یک تصویر خالی جدید ایجاد می‌شود. Snapshots در پوشه جداگانه snapshots/ داخل دایرکتوری AVD ذخیره می‌شوند.

System Image جدا از AVD بارگیری می‌شود — یک تصویر می‌تواند توسط چندین دستگاه مجازی استفاده شود. تصاویر سیستم در دایرکتوری Android SDK ذخیره می‌شوند: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/. انواع تصاویر: google_apis (با سرویس‌های Google)، google_apis_playstore (با Google Play Store) و default (AOSP خالص بدون سرویس‌های Google).

انواع System Images

نوع تصویرسرویس‌های GoogleGoogle Playبرای چه کاری
AOSP (default)خیرخیرتست پایه، Android خالص
Google APIsبلهخیرتست سرویس‌های Google، Maps، FCM
Google Playبلهبلهتست کامل با Play Store و مجوزدهی

ایجاد AVD از طریق AVD Manager

AVD Manager — یک ابزار گرافیکی در Android Studio برای ایجاد و مدیریت دستگاه‌های مجازی است. می‌توان آن را از طریق منوی Tools → Device Manager یا از طریق آیکون روی نوار ابزار باز کرد. AVD Manager لیست دستگاه‌های ایجاد شده، وضعیت آنها (در حال اجرا/متوقف)، نسخه Android و اقدامات موجود (اجرا، توقف، wipe data، ویرایش) را نشان می‌دهد.

برای ایجاد AVD جدید، دکمه Create device را کلیک کنید. یک پروفایل دستگاه از لیست آماده انتخاب کنید — Google برای تمام دستگاه‌های محبوب پروفایل ارائه می‌دهد. پس از انتخاب پروفایل، System Image را مشخص کنید: نسخه Android و نوع تصویر. برای پروژه‌های جدید، آخرین نسخه پایدار با تصویر Google APIs را انتخاب کنید. سپس نام AVD، جهت صفحه، مقدار RAM و VM heap را تنظیم کنید. پس از ایجاد، AVD آماده اجرا است.

ایجاد گام به گام AVD از خط فرمان

bash
# لیست System Images موجود
sdkmanager --list | grep system-images

# نصب System Image برای API 35 با Google APIs
sdkmanager "system-images;android-35;google_apis;x86_64"

# ایجاد AVD با نام pixel8_api35
avdmanager create avd -n pixel8_api35 \
    -k "system-images;android-35;google_apis;x86_64" \
    -d pixel_8

# اجرای AVD ایجاد شده
emulator -avd pixel8_api35 -gpu host -memory 2048

# لیست تمام AVDها
avdmanager list avd

تنظیم ویژگی‌های سخت‌افزاری AVD

AVD Manager امکان تنظیم دقیق ویژگی‌های سخت‌افزاری دستگاه مجازی را فراهم می‌کند. پارامترهای اصلی: RAM (حافظه دسترسی تصادفی، مقدار توصیه شده 2048–4096 مگابایت)، VM heap (اندازه heap ماشین مجازی، 256–512 مگابایت)، Internal Storage (حافظه داخلی، 2–8 گیگابایت) و SD Card (کارت SD مجازی). این پارامترها بر عملکرد برنامه و رفتار آن در کمبود حافظه تأثیر می‌گذارند.

تنظیمات اضافی شامل: دوربین (شبیه‌سازی شده یا اتصال وب‌کام میزبان)، سنسورها (شتاب‌سنج، ژیروسکوپ)، NFC، بلوتوث و باتری. به عنوان مثال، برای تست برنامه‌های تشخیص موقعیت، می‌توان چرخش دستگاه را از طریق دکمه‌های کنترل شبیه‌ساز یا از طریق ADB شبیه‌سازی کرد. شبیه‌سازی سنسورها امکان تست سناریوهایی را فراهم می‌کند که بازتولید آنها روی دستگاه فیزیکی دشوار است.

پارامترهای کلیدی config.ini

پارامترتوضیحاتمقدار توصیه شده
hw.ramSizeحافظه عملیاتی دستگاه2048
vm.heapSizeاندازه heap ماشین مجازی256
hw.gpuEnabledتسریع سخت‌افزاری گرافیکyes
hw.gpuModeحالت GPU (host/mesa)host
disk.dataPartition.sizeاندازه پارتیشن داده4096M
hw.cameraنوع شبیه‌سازی دوربینemulated

بهینه‌سازی عملکرد شبیه‌ساز

سرعت کار AVD مستقیماً به مجازی‌سازی سخت‌افزاری بستگی دارد. در Windows از Windows Hypervisor Platform (WHPX)، در macOS از Hypervisor.Framework، در Linux از KVM استفاده می‌شود. اگر مجازی‌سازی غیرفعال باشد، AVD در حالت شبیه‌سازی کاملاً نرم‌افزاری کار می‌کند که 10–20 برابر کندتر است. برای بررسی فعال بودن مجازی‌سازی، شبیه‌ساز را با پرچم -accel-check اجرا کنید.

دومین عامل کلیدی انتخاب معماری System Image است. تصاویر x86_64 روی رایانه‌های دارای پردازنده Intel و AMD به طور قابل توجهی سریع‌تر از arm64-v8a کار می‌کنند، زیرا نیاز به ترجمه پویای دستورالعمل‌های ARM ندارند. همیشه از تصاویر x86_64 برای توسعه در Windows و macOS با پردازنده‌های Intel استفاده کنید. در پردازنده‌های ARM Mac (Apple Silicon) از تصاویر بومی arm64-v8a استفاده کنید.

پرچم‌های خط فرمان برای تسریع

bash
# اجرا با مجازی‌سازی سخت‌افزاری و شتاب GPU
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4

# بررسی پشتیبانی از مجازی‌سازی
emulator -accel-check

# اجرا بدون رابط گرافیکی (برای CI)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off

# استفاده از snapshotها برای راه‌اندازی سریع
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save

نکات عملکرد شبیه‌ساز

برای حداکثر عملکرد AVD: حداقل 2–4 گیگابایت RAM به شبیه‌ساز اختصاص دهید، GPU Host را فعال کنید (از کارت گرافیک رایانه برای رندر استفاده می‌کند)، صدا را غیرفعال کنید (پرچم -no-audio)، اگر لازم نیست، و از Snapshots برای بازگشت سریع به حالت تمیز استفاده کنید. Snapshots وضعیت کامل سیستم را ذخیره می‌کنند — راه‌اندازی از تصویر 2–5 ثانیه طول می‌کشد به جای 30–60 ثانیه بارگذاری کامل.

همچنین توصیه می‌شود AVD را روی دیسک SSD ذخیره کنید — عملیات ورودی-خروجی هنگام بارگذاری سیستم و نصب APK به طور قابل توجهی تسریع می‌شود. برای کار با چند AVD به طور همزمان، مقدار کل RAM رایانه را افزایش دهید و از پرچم -read-only برای شبیه‌سازهای غیرقابل تغییر استفاده کنید.

مدیریت AVD از خط فرمان

کنترل کامل AVD از خط فرمان بدون Android Studio امکان‌پذیر است. ابزارهای avdmanager و emulator بخشی از Android SDK هستند و تمام عملیات را انجام می‌دهند: ایجاد، حذف، اجرا و پیکربندی AVD. خط فرمان به ویژه در خطوط لوله CI/CD که رابط گرافیکی وجود ندارد و برای خودکارسازی تست مفید است.

دستورات اصلی مدیریت AVD

bash
# ایجاد AVD با پارامترهای سفارشی
avdmanager create avd -n test_device \
    -k "system-images;android-34;google_apis;x86_64" \
    --device "pixel_8" \
    --force

# حذف AVD
avdmanager delete avd -n test_device

# کلون کردن AVD (از طریق کپی فایل‌ها)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd

# بازنشانی داده‌های AVD
emulator -avd test_device -wipe-data

# نصب APK روی AVD در حال اجرا
adb -s emulator-5554 install app-release.apk

ADB و AVD: دستورات کلیدی

پس از اجرای AVD، می‌توان از طریق ADB (Android Debug Bridge) مانند یک دستگاه فیزیکی با آن کار کرد. ADB امکان نصب برنامه‌ها، اجرای intentها، شبیه‌سازی رویدادها (تماس‌ها، SMS، GPS)، گرفتن اسکرین‌شات و ضبط ویدیوی صفحه را فراهم می‌کند. این AVD را به یک محیط کامل برای تست خودکار تبدیل می‌کند.

bash
# لیست دستگاه‌های متصل (شامل AVD)
adb devices

# شبیه‌سازی تماس ورودی
adb emu gsm call +15551234567

# شبیه‌سازی مختصات GPS
adb emu geo fix -122.084 37.422

# گرفتن اسکرین‌شات
adb exec-out screencap -p > screenshot.png

# ارسال SMS
adb emu sms send +15551234567 "Hello from AVD"

تشخیص شبیه‌ساز در کد برنامه

گاهی توسعه‌دهنده باید در کد تشخیص دهد که برنامه روی شبیه‌ساز اجرا می‌شود یا دستگاه فیزیکی. این ممکن است برای غیرفعال کردن تحلیل (برای جلوگیری از آلوده کردن داده‌های تولید)، فعال کردن ثبت وقایع گسترده یا غیرفعال کردن عملکردهای وابسته به سخت‌افزار که روی شبیه‌ساز کار نمی‌کنند، لازم باشد. Google روش‌های استاندارد تشخیص را از طریق کلاس Build و ویژگی‌های سیستم ارائه می‌دهد.

روش تشخیص از طریق ویژگی Build

kotlin
object EmulatorDetector {
    fun isEmulator(): Boolean {
        return (Build.BRAND.startsWith("generic") &&
                Build.DEVICE.startsWith("generic")) ||
                Build.FINGERPRINT.startsWith("generic") ||
                Build.FINGERPRINT.startsWith("unknown") ||
                Build.HARDWARE.contains("goldfish") ||
                Build.HARDWARE.contains("ranchu") ||
                Build.MODEL.contains("google_sdk") ||
                Build.MODEL.contains("Emulator") ||
                Build.MODEL.contains("Android SDK")
    }
}

// استفاده
if (EmulatorDetector.isEmulator()) {
    Log.d("App", "Running on emulator — enable debug mode")
}

تشخیص از طریق ویژگی‌های سیستم

روش اضافی — خواندن ویژگی‌های سیستم از طریق Build.getRadioVersion() و بررسی ro.kernel.qemu. روی شبیه‌ساز، radio version null برمی‌گرداند و ویژگی qemu روی 1 تنظیم می‌شود. این روش در نسخه‌های قدیمی Android که Build.FINGERPRINT ممکن است توسط سازنده دستگاه تغییر کند، قابل اعتمادتر است.

kotlin
fun isRunningOnEmulator(): Boolean {
    // بررسی از طریق radio version — روی شبیه‌ساز همیشه null
    val radioVersion = try {
        Build.getRadioVersion()
    } catch (e: Exception) {
        null
    }
    if (radioVersion.isNullOrBlank()) return true

    // بررسی از طریق ویژگی‌های سیستم
    return try {
        val props = ProcessBuilder()
            .command("getprop", "ro.kernel.qemu")
            .start()
            .inputStream.bufferedReader().readText().trim()
        props == "1"
    } catch (e: Exception) {
        false
    }
}

سوالات متداول

AVD چه تفاوتی با دستگاه فیزیکی دارد؟

AVD روی QEMU اجرا می‌شود و نمی‌تواند ویژگی‌های سخت‌افزاری را به طور کامل شبیه‌سازی کند: دوربین واقعی، NFC، بلوتوث. AVD برای تست UI، بررسی چرخه حیات و سازگاری با نسخه‌های سیستم عامل ایده‌آل است. برای تست دقیق دوربین و سنسورها به دستگاه فیزیکی نیاز است.

چند AVD باید ایجاد کرد؟

حداقل 2–3 AVD: آخرین API Level برای بررسی ویژگی‌های جدید، حداقل پشتیبانی شده (minSdk) برای سازگاری و یک مدل دستگاه محبوب (Pixel 8 یا Samsung Galaxy) برای تست UI برای صفحه خاص.

چرا AVD کند کار می‌کند؟

دلایل اصلی: مجازی‌سازی سخت‌افزاری غیرفعال است (WHPX، Hypervisor.Framework، KVM)، RAM کم (کمتر از 2 گیگابایت)، GPU Host غیرفعال است. -gpu host را فعال کنید و حافظه را به 2–4 گیگابایت افزایش دهید — این شبیه‌ساز را 3–5 برابر سریع‌تر می‌کند.

آیا می‌توان AVD را بدون Android Studio اجرا کرد؟

بله. شبیه‌ساز از طریق emulator -avd Name_AVD از خط فرمان اجرا می‌شود. برای این کار به Android SDK، Platform-Tools و System Image نصب شده نیاز است. AVD Manager همچنین به عنوان ابزار کنسولی avdmanager در دسترس است.

چگونه AVD را به تنظیمات کارخانه بازنشانی کنیم؟

در AVD Manager گزینه Wipe Data را انتخاب کنید — این کار userdata.img را حذف کرده و شبیه‌ساز را به حالت اولیه بازمی‌گرداند. از خط فرمان: emulator -avd Name -wipe-data. Snapshots در این حالت حفظ می‌شوند، اگر جداگانه حذف نشوند.

خلاصه

  • AVD — دستگاه مجازی Android مبتنی بر QEMU که امکان تست برنامه‌ها را بدون تلفن فیزیکی فراهم می‌کند.
  • System Image — تصویر سیستم عامل با سطح API مشخص، موجود در انواع AOSP، Google APIs و Google Play.
  • AVD Manager — ابزاری برای ایجاد، تنظیم و مدیریت دستگاه‌های مجازی در Android Studio یا از خط فرمان.
  • برای عملکرد AVD، مجازی‌سازی سخت‌افزاری (WHPX، Hypervisor.Framework، KVM) و انتخاب تصویر x86_64 الزامی است.
  • از طریق ADB تمام عملیات شبیه‌سازی در دسترس است: تماس‌ها، SMS، GPS، نصب APK، اسکرین‌شات — مانند دستگاه فیزیکی.
  • برای تشخیص شبیه‌ساز در کد از بررسی‌های Build.FINGERPRINT، Build.HARDWARE و ro.kernel.qemu استفاده کنید.
  • AVD را روی SSD ذخیره کنید و برای تسریع راه‌اندازی از Snapshots استفاده کنید — این زمان بارگذاری را از 60 به 2–5 ثانیه کاهش می‌دهد.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید