Android Emulator — مؤلفهای از Android Studio است که یک کپی مجازی کامل از دستگاه Android را روی رایانه توسعهدهنده اجرا میکند. شبیهساز از QEMU برای ترجمه دستورالعملهای ARM به معماری x86_64 میزبان استفاده میکند. مستندات Google چرخه کامل تنظیم دستگاههای مجازی AVD و شتابدهی سختافزاری را شرح میدهد.
نکات اصلی
Android Emulator — یک دستگاه مجازی Android است که بر پایه QEMU (Quick EMUlator) کار میکند و پلتفرم سختافزاری Android را شبیهسازی میکند. برخلاف iOS Simulator، Android Emulator دستورالعملهای ARM را به طور کامل ترجمه میکند که این امکان را فراهم میسازد کد کامپایلشده برای معماری موبایل روی میزبان x86_64 اجرا شود.
Google Android Emulator را در سال ۲۰۰۷ همراه با اولین نسخه Android SDK منتشر کرد. از آن زمان، شبیهساز از یک راهحل کند فقط مخصوص ARM به سیستمی با عملکرد بالا با پشتیبانی از GPU، شتابدهی سختافزاری و شبیهسازی حسگرها تکامل یافته است. به گفته Google (Android Developer Blog، ۲۰۲۵)، شبیهساز مدرن با HAxM 4-5 برابر سریعتر از نسل اول کار میکند.
شبیهساز از تمام اجزای دستگاه Android پشتیبانی میکند: CPU، GPU، RAM، حافظه ذخیرهسازی، صفحه لمسی، شتابسنج، ژیروسکوپ، GPS، دوربین، باتری، NFC، Bluetooth و Wi-Fi. توسعهدهنده میتواند تماسهای دریافتی، SMS، سطوح مختلف سیگنال شبکه و موقعیت جغرافیایی را از طریق Extended Controls شبیهسازی کند.
Android Emulator از تصاویر سیستم (System Images) استفاده میکند که از طریق SDK Manager بارگیری میشوند. هر تصویر سیستم شامل یک کپی کامل از سیستمعامل Android برای سطح API و معماری پردازنده هدف است. تصاویر با معماریهای مختلف در دسترس هستند: x86_64 (توصیه شده با HAxM)، ARM64 (برای تست سازگاری ARM) و Google APIs (با Google Play Services از پیش نصب شده). برای Wear OS، Android TV و Automotive نیز تصاویر جداگانهای وجود دارد.
// بررسی نوع شبیهساز در کد
val isEmulator = Build.FINGERPRINT
.contains("generic") ||
Build.PRODUCT.contains("sdk")
if (isEmulator) {
Timber.d("برنامه در شبیهساز اجرا شده است")
}AVD (Android Virtual Device) — پیکربندی دستگاه مجازی برای شبیهساز. AVD Manager در Android Studio امکان ایجاد دستگاههایی با هر ترکیبی از مشخصات را فراهم میکند: مدل، اندازه صفحه، تراکم پیکسل، مقدار RAM، اندازه حافظه ذخیرهسازی و نسخه Android.
| پارامتر AVD | توصیه برای توسعه | توصیه برای تست |
|---|---|---|
| معماری | x86_64 (با HAxM) | ARM64 (شبیهسازی خالص) |
| RAM | ۲۰۴۸-۴۰۹۶ MB | ۱۵۳۶-۲۰۴۸ MB |
| حافظه داخلی | ۸-۱۶ GB | ۴-۸ GB |
| سطح API | آخرین نسخه پایدار | حداقل پشتیبانیشده |
| Google Play Services | فعال | در صورت نیاز |
ایجاد AVD از طریق Device Manager در Android Studio انجام میشود: پروفایل سختافزاری (Pixel، Nexus، Galaxy و غیره)، تصویر سیستم را انتخاب کنید و پارامترها را تنظیم کنید. پس از ایجاد، دستگاه در لیست Run Configurations برای اجرای مستقیم برنامه ظاهر میشود.
شبیهساز از Quick Boot پشتیبانی میکند — وضعیت AVD را به عنوان snapshot ذخیره کرده و در اجرای بعدی آن را بازیابی میکند. زمان بارگذاری از ۳۰-۶۰ ثانیه به ۲-۵ ثانیه کاهش مییابد. برای بازنشانی به حالت خالص، از Cold Boot Now در AVD Manager استفاده کنید.
ترجمه ARM — فناوری کلیدی Android Emulator است که دستورالعملهای ARM را به طور لحظهای به x86_64 تبدیل میکند. بدون ترجمه، شبیهساز فقط میتوانست تصاویر x86_64 را اجرا کند که تست را محدود میکند. Google از libhoudini برای ترجمه ARM→x86 و کتابخانههای Intel برای شتابدهی HAXM استفاده میکند.
# بررسی وضعیت HAxM در Windows
sc query "IntelHaxm"
# نصب HAxM از طریق SDK Manager
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"
# راهاندازی شبیهساز با شتابدهی سختافزاری
emulator -avd Pixel_9_API_35 -accel on -gpu autoIntel HAxM (Hardware Accelerated Execution Manager) — درایور مجازیسازی برای پردازندههای Intel VT-x که شبیهساز را ۳-۵ برابر سریعتر میکند. در Windows با پردازنده AMD از Windows Hyper-V Platform و WHPX استفاده کنید. بدون شتابدهی سختافزاری، شبیهساز به کندی کار میکند و تأخیر انیمیشنها تا ۱-۲ ثانیه میرسد.
برای macOS روی Apple Silicon (سری M)، شتابدهی سختافزاری به صورت بومی از طریق Hypervisor.framework کار میکند. به گفته Google (Android Emulator Release Notes ۲۰۲۵)، شبیهساز روی M2 Max به ۹۵٪ عملکرد دستگاه واقعی در عملیات پایه میرسد.
انتخاب بین شبیهساز و دستگاه واقعی به مرحله توسعه بستگی دارد. روی شبیهساز توسعه و اشکالزدایی راحت است: راهاندازی سریع، استقرار فوری، Extended Controls برای شبیهسازی حسگرها. روی دستگاه واقعی — تست نهایی عملکرد، باتری و کار با سختافزار.
| سناریو | شبیهساز | دستگاه واقعی |
|---|---|---|
| توسعه UI | بله (سریع) | خیر (استقرار طولانی) |
| تست عملکرد | خیر (شاخصهای بالاتر از واقعیت) | بله (اندازهگیری واقعی) |
| شبیهسازی حسگرها (GPS، NFC) | بله (Extended Controls) | محدود |
| مصرف انرژی | پشتیبانی نمیشود | بله (Battery Historian) |
| تست شبکه (2G/3G/4G/5G) | بله (شبیهسازی سرعت) | بله (با سیمکارت) |
| اتوماسیون CI/CD | بله (بدون دستگاه فیزیکی) | مشکل (مزرعه دستگاه) |
عملکرد شبیهساز با شتابدهی سختافزاری اغلب از دستگاه واقعی ارزانقیمت بالاتر است. بنابراین تستهای نهایی را روی دستگاههای واقعی با سطح عملکرد هدف انجام دهید.
تعیین محیط اجرا در Kotlin برای غیرفعال کردن کد نادرست یا افزودن اطلاعات اشکالزدایی مفید است. Android Build.FINGERPRINT، Build.PRODUCT و Build.HARDWARE را برای این منظور فراهم میکند.
object EmulatorDetector {
val isEmulator: Boolean
get() = Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.contains("emulator")
|| Build.HARDWARE == "ranchu"
|| Build.HARDWARE == "goldfish"
fun logEnvironment() {
if (isEmulator) {
Log.d("EmulatorDetector", "محیط: شبیهساز")
}
}
}استفاده از تشخیصدهنده شبیهساز در اشکالزدایی کمک میکند: روی شبیهساز میتوان لاگهای گسترده را فعال کرد، انیمیشنها را غیرفعال کرد یا فراخوانیهای واقعی API را با mock جایگزین کرد. اگر منطق تجاری برنامه الزام نمیکند، از بررسی در بیلدهای تولیدی خودداری کنید.
Android Emulator برای تست خودکار روی سرورهای CI استفاده میشود. برای اجرای تستها باید AVD ایجاد کرد، شبیهساز را راهاندازی کرد و منتظر بارگذاری کامل سیستم ماند. Gradle Managed Devices این فرآیند را ساده میکند: پیکربندی AVD در build.gradle.kts توضیح داده میشود.
// build.gradle.kts — Gradle Managed Devices
android {
testOptions {
managedDevices {
devices {
register<ManagedVirtualDevice>("pixel9Api35") {
device = "Pixel 9"
apiLevel = 35
systemImageSource = "google"
}
}
}
}
}برای راهاندازی دستی شبیهساز از خط فرمان استفاده کنید: emulator -avd Pixel_9_API_35 -no-window -no-audio -gpu swiftshader_indirect. پرچم -no-window رابط گرافیکی را برای محیط سرور غیرفعال میکند و -gpu swiftshader_indirect رندرینگ نرمافزاری بدون GPU میزبان را فراهم میکند.
Extended Controls در Android Emulator ابزارهای قدرتمندی برای شبیهسازی شرایط شبکه فراهم میکند: تأخیر (latency)، پهنای باند (bandwidth) و نوع شبکه (GPRS، EDGE، 3G، 4G، 5G). این امکان را فراهم میکند رفتار برنامه را در اتصال کند بدون سفر فیزیکی به منطقهای با پوشش ضعیف تست کنید.
شبیهسازی حسگرها شامل شتابسنج، ژیروسکوپ و مغناطیسسنج از طریق مدلهای سهبعدی مجازی دستگاهها است. برای GPS میتوان فایلهای GPX با مسیرها بارگیری کرد — شبیهساز حرکت روی مختصات را شبیهسازی میکند که برای تست برنامههای ناوبری حیاتی است. دوربین از طریق وبکم میزبان یا بارگیری تصاویر شبیهسازی میشود.
چند صفحهای (Multi-display) در Android Emulator از چندین صفحه برای تبلتها و دستگاههای تاشو پشتیبانی میکند. Extended Controls امکان تغییر جهت، اندازه صفحه و تراکم پیکسل (DPI) را بدون راهاندازی مجدد شبیهساز فراهم میکند. برای تست دستگاههای تاشو، حالتهای Foldable با سوئیچ بین حالت بسته و باز در دسترس هستند.
شبیهساز نه تنها از گوشیهای هوشمند، بلکه از Wear OS و Android TV نیز پشتیبانی میکند. برای Wear OS، پیکربندیهای AVD گرد و مستطیلی، شبیهسازی چرخش bezel و حرکات swipe، و همچنین تست تعامل با شبیهساز تلفن در دسترس هستند. برای Android TV از رابط با ناوبری D-pad استفاده میشود. هر دو پلتفرم از شتابدهی سختافزاری و تست با Google Play Services پشتیبانی میکنند که برای چرخه توسعه ساعتهای هوشمند و برنامههای تلویزیونی مهم است.
سوالات متداول
Android Emulator از شبیهسازی کامل ARM از طریق QEMU با ترجمه دستورالعملها استفاده میکند، در حالی که iOS Simulator کد را برای معماری میزبان کامپایل میکند. Android Emulator از GPU، دوربین، حسگرها، Bluetooth، NFC پشتیبانی میکند — iOS Simulator بیشتر این ویژگیها را پشتیبانی نمیکند.
در Kotlin Build.FINGERPRINT را برای وجود "generic" یا "emulator" و همچنین Build.HARDWARE را برای "ranchu" یا "goldfish" بررسی کنید. از Build.PRODUCT به عنوان نشانگر اضافی استفاده کنید — برای شبیهساز حاوی "sdk_google" یا "google_sdk" است.
Intel HAxM (Intel VT-x) یا Windows Hyper-V Platform (WHPX) را برای پردازندههای AMD فعال کنید. از تصاویر سیستم x86_64 با شتابدهی سختافزاری استفاده کنید. حداقل ۴ گیگابایت RAM به شبیهساز در AVD Manager اختصاص دهید. Quick Boot را برای بارگذاری snapshot فعال کنید.
بله، Android Emulator از شبیهسازی NFC از Android 10 (API 29) پشتیبانی میکند. Extended Controls → Phone → NFC امکان ارسال پیامهای NDEF را فراهم میکند. حالتهای خواندن/نوشتن تگ، peer-to-peer و HCE پشتیبانی میشوند. برای تست کامل از دستگاه واقعی با تراشه NFC استفاده کنید.
برای توسعه روزانه x86_64 با Google APIs را انتخاب کنید — حداکثر عملکرد و مجموعه کامل خدمات. برای تست سازگاری از تصاویر ARM64 استفاده کنید. برای CI — تصاویر بدون Google Play Services، آنها کوچکتر هستند و سریعتر بارگذاری میشوند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید