کار با امولاتور و ساخت دیوایس مجازی (AVD)

آموزش نصب امولاتور (شبیه ساز) اندروید استودیو و AVD

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

شبیه ساز یا Emulator چیست؟

به نام خدا. در زمان نگارش این مبحث آموزشی، اندروید ۱۲ به عنوان آخرین نسخه‌ی پایدار این سیستم‌عامل منتشر شده و حدود ۱۲% از کل دیوایس‌های اندرویدی را پوشش می‌دهد. این یعنی هنوز درصد قبل توجهی از موبایل‌ها، تبلت‌ها و دستگاه‌های اندرویدی دیگر از نسخه‌های پایین‌تر استفاده می‌کنند.
بنابراین شما به عنوان یک برنامه نویس و توسعه دهنده‌ی اندروید لازم است پروژه‌ی اندرویدی خود را روی چندین دستگاه اندرویدی با نسخه‌های متفاوت تست کنید تا مطمئن شوید اپلیکیشن روی اکثر دستگاه‌هایی که در اختیار مردم قرار دارد عملکرد صحیحی خواهد داشت.
به عبارت دیگر شما باید چندین گوشی و تبلت خریداری کنید تا بتوانید پروژه را روی تک تک آنها بررسی کنید که علاوه بر افزایش هزینه، چالش‌های خاص خود را به همراه دارد.
اینجاست که امولاتور یا شبیه سازها وارد میدان شده و کار را بسیار ساده‌تر می‌کنند. با استفاده از شبیه ساز می‌توان هر تعداد از دیوایس‌های مجازی اندرویدی را روی کامپیوتر نصب و اجرا کرد. یعنی دیگر خبری از دیوایس فیزیکی و مشکلات اتصال آن به اندروید استودیو نیست.
با استفاده از امولاتور به راحتی می‌توانید چندین دیوایس مجازی با نسخه‌ی سیستم عامل و اندازه‌ی صفحه نمایش مختلف ایجاد و پروژه‌ی خود را روی آنها تست و دیباگ کنید.
شبیه سازهای مختلفی برای اندروید ساخته شده که روی سیستم‌عامل‌های محبوب مانند ویندوز، لینوکس و مک قابل استفاده هستند. درحال حاضر Genymotion، BlueStacks و MEMu جزء گزینه‌های مطرح به شمار می‌روند.

چرا AVD؟

در اندروید استودیو از همان ابتدای کار یک امولاتور داخلی در اختیار توسعه‌دهندگان قرار گرفته بود که امکان مدیریت دیوایس‌ها با استفاده از ابزار AVD فراهم شده است.
بااینحال از سال ۱۳۹۵ تا اوایل ۱۴۰۱ با توجه به مزایایی که Genymotion نسبت به AVD داشت (مانند سرعت بالاتر و حجم کم دیوایس‌ها) شخصاً ترجیح می‌دادم از جنی موشن استفاده کنم.
اما در ماه‌های اخیر سیاست جنی موشن در خصوص ارائه‌ی نسخه‌ی دسکتاپ این شبیه ساز تغییراتی داشته که مهم‌ترین آنها عدم انتشار API برای نسخه‌های جدید اندروید و اعمال محدودیت ۱ ماهه برای نسخه‌ی رایگان (Personal) هستند. از این به بعد تمرکز تیم Genymotion بر ارائه‌ی خدمات بر بستر Cloud است که هزینه‌های آن برای برنامه نویسان ایرانی بسیار بالاست.
در این مدت مشکلات AVD مخصوصا مساله‌ی سرعت اجرا هم تا حدود زیادی رفع شد و با توجه به شرایط فعلی، استفاده از شبیه ساز داخلی اندروید استودیو منطقی‌ترین گزینه محسوب می‌شود. همین مساله باعث شد آموزش کار با امولاتور داخلی اندروید استودیو و AVD را تهیه کنم.

نصب امولاتور اندروید استودیو

امولاتور اندروید استودیو به صورت پیش‌فرض فعال نیست و باید از طریق SDK Manager نصب شود. همانطور که در آموزش نصب و راه اندازی اندروید استودیو گفته شد، امکان نصب آفلاین گزینه‌های Emulator و HAXM وجود ندارد و صرفا باید به صورت آنلاین نصب انجام شود.
همچنین هنگام نصب اندروید استودیو باید گزینه‌ی Android Virtual Device انتخاب شده باشد در غیر اینصورت امکان استفاده از دیوایس مجازی یا AVD وجود نخواهد داشت:

انتخاب گزینه AVD هنگام نصب اندروید استودیو
انتخاب گزینه AVD هنگام نصب اندروید استودیو

پس از اطمینان از برقراری ارتباط اینترنت و تغییر IP برای عبور از تحریم ایران، SDK Manager را باز می‌کنم. اگر برای تغییر IP در اندروید استودیو نیاز به راهنمایی دارید این آموزش را مطالعه کنید.
گزینه Android Emulator را انتخاب و تایید می‌کنم تا دانلود و نصب آن شروع شود.

نصب Emulator از طریق SDK Manager اندروید استودیو
نصب امولاتور از طریق SDK Manager اندروید استودیو

نصب شبیه ساز اندروید استودیو

یک ابزار جانبی با نام Intel x86 Emulator Accelerator (Haxm) در لیست SDK وجود دارد که استفاده از آن بر روی پردازنده‌های اینتل باعث افزایش سرعت شبیه ساز می‌شود. بنابراین در صورتی که پردازنده شما Intel باشد حتما این ابزار را هم نصب کنید.

نصب HAXM در اندروید استودیو
نصب HAXM (Intel x86 Emulator Accelerator)

نصب HAXM در اندروید استودیو

در این مرحله حداکثر میزانی از RAM که به امولاتور باید اختصاص داده شود را تعیین می‌کنیم که من همان عدد پیش‌فرض یعنی ۲ گیگابایت را انتخاب می‌کنم. البته این عدد بعداً هم قابل تغییر است.

نصب Intel x86 Emulator Accelerator در اندروید استودیو

نصب HAXM در اندروید استودیو

نصب HAXM هم به پایان رسید و حالا می‌توانیم از شبیه ساز و AVD استفاده کنیم.
اگر به یاد داشته باشید قبلا در جلسه‌ی آموزش نصب اندروید استودیو توضیح دادیم که در SDK Platforms برای هر API چند System image مختلف وجود دارد که این سیستم ایمیج‌ها برای شبیه ساز داخلی اندروید استودیو استفاده می‌شود:

System Image ها در SDK
System Image ها در SDK

همانطور که در تصویر فوق مشاهده می‌کنید برای Android 12 به تعداد ۹ عدد System Image وجود دارد. توضیحات مربوط به هر سیستم ایمیج قبلا در قسمت توضیحات SDK در آموزش نصب اندروید استودیو قید شده بنابراین نیازی به تکرار نیست.
امکان دانلود و نصب هرکدام از سیستم ایمیج‌ها از طریق SDK Manager وجود دارد اما برای جلوگیری از انتخاب گزینه اشتباه توصیه می‌کنم دانلود را در محیط AVD انجام دهید. در AVD سیستم ایمیج مناسب شما در تب Recommended قرار می‌گیرد و از دانلود سیستم ایمیج‌های غیر ضروری و حجم بالا جلوگیری می‌کند.
گزینه Device Manager را از منوی تولبار یا نوار سمت راست اندروید استودیو انتخاب می‌کنم:

Device Manager اندروید استودیو
Device Manager اندروید استودیو

پنجره Device Manager باز شد:

قسمت دیوایس‌های مجازی در Device Manager
قسمت دیوایس‌های مجازی در Device Manager

در دیوایس منیجر دو تب Virtual (مجازی) و Physical (فیزیکی) وجود دارد. تب Virtual برای مدیریت دیوایس‌های مجازی استفاده می‌شود. در حال حاضر هیچ دیوایس مجازی در لیست وجود ندارد.
روی دکمه Create device یا لینک Create Virtual device کلیک می‌کنم تا پنل ساخت دیوایس مجازی باز شود:

اضافه کردن دیوایس مجازی در AVD
اضافه کردن دیوایس مجازی در AVD

در سمت چپ، دیوایس‌ها دسته‌بندی شده که در حالت پیش‌فرض گزینه Phone و یکی از دیوایس‌های آن انتخاب شده است. دیوایس‌های مختلفی در لیست وجود دارد که بر اساس متغیرهایی مانند سایز صفحه نمایش و رزولوشن آن مشخص شده‌اند.
من فعلا سایز خاصی مدنظرم نیست بنابراین همین دیوایس پیش فرض را انتخاب می‌کنم برای مرحله بعد.
دیوایسی که انتخاب شده دارای برنامه Play Store است بنابراین سیستم ایمیجی دانلود خواهد شد که از پلی استور پشتیبانی می‌کند.

انتخاب و دانلود System Image در AVD
انتخاب و دانلود System Image

در این مرحله باید نسخه‌ی system image مدنظر خود را انتخاب کنیم. برای مثال من قصد دارم دیوایس را با API 31 یعنی Android 12 بسازم. بنابراین همین API را باید انتخاب کنم اما در حال حاضر این API و تمامی API های دیگر یک گزینه دانلود مقابلشان قرار داده شده که نشان می‌دهد سیستم ایمیج هیچکدام دانلود و نصب نشده.
روی گزینه Download اندروید ۱۲ کلیک می‌کنم:

دانلود System Image
شروع دانلود System Image

دانلود system image آغاز شد. خبر خوب اینکه مانند سایر ابزار SDK و برخلاف Emulator و HAXM فایل‌های مربوط به system image را می‌توان در خارج از محیط اندروید استودیو دانلود و به صورت آفلاین به SDK اضافه کرد.
با توجه به حجم بالای سیستم ایمیج‌ها (حدود ۱٫۵ گیگابایت) و لزوم استفاده از ابزار تغییر IP احتمال شکست دانلود بالاست بنابراین توصیه می‌کنم لینک فایل سیستم ایمیج را از قسمت بالا کپی کرده و با استفاده از یک برنامه مدیریت دانلود، دریافت کنید.
هرچند بازهم برای دانلود فایل نیاز به استفاده از ابزار تغییر IP وجود دارد اما در صورت استفاده از برنامه‌های مدیریت دانلود، چنانچه فرایند دانلود در هر نقطه قطع شود، می‌توان مجدد دانلود را از همان نقطه ادامه داد در حالی که در اندروید استودیو دانلود از ابتدا آغاز خواهد شد.
اگر همچنان قصد دارید دانلود به صورت خودکار و در محیط اندروید استودیو انجام شود فقط کافیست صبر کنید تا دانلود فایل به اتمام برسد.
اما من ترجیح می‌دهم فایل را جداگانه دانلود و سپس به محل نصب SDK منتقل کنم. بنابراین لینک فایل را کپی و فرایند دانلود را متوقف می‌کنم.
پوشه SDK را باز می‌کنم:

اضافه کردن System Image به SDK به صورت آفلاین و دستی
اضافه کردن System Image به SDK به صورت آفلاین و دستی

مشاهده می‌کنید یک پوشه با نام system-images در SDK من وجود دارد. علت اینکه این پوشه قبلا ساخته شده این است که من در قسمت قبل یک سیستم ایمیج را برای دانلود انتخاب کردم و فرایند دانلود آغاز شد.
به محض شروع دانلود، پوشه‌های لازم برای قرارگیری سیستم ایمیج‌ها ایجاد می‌شود حتی اگر دانلود متوقف شود.
بنابراین اگر فایل سیستم ایمیج را قبلا دانلود کرده‌اید یا لینک آن را در اختیار دارید و نیازی به انجام مراحل قبل برای دریافت لینک دانلود ندارید، این پوشه هم خودکار ساخته نشده و خودتان باید آنرا با همین نام ایجاد کنید.

نکته: لینک دانلود سیستم ایمیج‌های پرکاربرد در انتهای همین صفحه قرار می‌گیرد.

وارد پوشه system-images می‌شوم:

اضافه کردن سیستم ایمیج در SDK اندروید استودیو

یک پوشه با نام android-31 وجود دارد که مربوط به Android 12 است که در AVD برای دانلود انتخاب کرده بودم. داخل این پوشه به ترتیب به این شکل ساخته شده:

پوشه google_apis_playstore

پوشه x86_64

حالا کافیست پوشه x86_64 را حذف کرده و پوشه‌ای با همین نام که در فایل زیپ سیستم ایمیج قرار دارد را جایگزین کنم. نام فایلی که من دانلود کردم x86_64-31_r09.zip است. در نامگذاری فایل سیستم ایمیج از جزئیات آن استفاده شده است.
X86_64 یعنی دیوایسی که با این سیستم ایمیج ساخته شود از اپلیکیشن‌های ۶۴ بیتی هم پشتیبانی می‌کند. عدد ۳۱ مربوط به نسخه API است و r09 یعنی فایل سیستم فعلی نهمین نسخه بروزرسانی شده از این سیستم ایمیج است.
به این ترتیب می‌توان یک سیستم ایمیج را بدون نیاز به دانلود آن در محیط اندروید استودیو نصب کرد.
در اینجا چون دانلود سیستم ایمیج اندروید ۱۲ برای لحظه‌ای آغاز شده بود، با اینکه آنرا متوقف کردم، تمامی پوشه‌های مربوط به آن به طور خودکار ساخته شد. اما اگر به هر دلیلی این فرایند انجام نشود، این پوشه‌ها باید به صورت دستی ایجاد شود.
برای مثال این سیستم ایمیج مربوط به API 31 بود بنابراین نام پوشه اصلی آن android-31 است. دیوایس Pixel 2 که در AVD انتخاب کردیم از نوعی بود که از Play Store پشتیبانی می‌کرد بنابراین پوشه بعدی با نام google_apis_playstore ساخته شده. اگر دیوایس از نوعی باشد که پلی استور را پشتیبانی نمی‌کند پوشه را با نام google_apis می‌سازیم.

نکته: برای هر دیوایس مثل Pixel 2 یک سیستم ایمیج جداگانه وجود ندارد. برای مثال برای API 31 فقط یک سیستم ایمیج وجود دارد که از پلی استور و از اپلیکیشن‌های x86_64 پشتیبانی می‌کند.
به عبارت دیگر چنانچه در آینده چندین دیوایس دیگر با همین مشخصات بخواهیم اضافه کنیم باز هم از همین سیستم ایمیج استفاده می‌شود و نیاز به دانلود فایل دیگری نیست.

پوشه x86_64 که از فایل زیپ دانلود شده خروجی گرفتم را جایگزین این پوشه کرده و به پنجره ساخت دیوایس برمی‌گردم. با توجه به اینکه سیستم ایمیج به صورت آفلاین نصب شد یکبار با استفاده از دکمه Refresh لیست سیستم ایمیج‌ها را بروز می‌کنم:

سیستم ایمیج اندروید استودیو
سیستم ایمیج به AVD اضافه شد

مشاهده می‌کنید API 31 نصب و گزینه Download حذف شده است. همچنین با انتخاب این API دکمه Next فعال شده و می‌توان به مرحله بعد رفت.

تنظیمات دیوایس مجازی در AVD
تنظیمات دیوایس مجازی

در این مرحله جزئیات دیوایس مجازی را می‌توان تغییر داد. مانند نام دیوایس و وضعیت افقی یا عمودی بودن دیوایس هنگام اجرا. با انتخاب گزینه Show Advanced Settings سایر تنظیمات فعال می‌شود.
با کلیک روی Finish دیوایس ساخته شده و به لیست دیوایس‌های مجازی من اضافه می‌شود:

ایجاد دیوایس مجازی در AVD

در قسمت Actions چهار گزینه برای هر دیوایس وجود دارد. گزینه اول برای استارت دیوایس است. از زمان استارت دیوایس تا بوت شدن اندروید حدود ۲۰ ثانیه زمان لازم است که البته به سخت‌افزار شما بستگی دارد.

استارت دیوایس مجازی در AVD اندروید استودیو
استارت دیوایس مجازی در AVD

حالا می‌توان پروژه را روی این دیوایس Run یا Debug کرد. در نوار بالای دیوایس چند گزینه وجود دارد که کاربرد هرکدام مشخص است. یک گزینه‌ی ۳ نقطه هم وجود دارد که تنظیمات دستگاه مانند موقعیت مکانی، میکروفون، دوربین و سنسورها را در اختیار برنامه نویس قرار می‌دهد:

پنل تنظیمات دیوایس مجازی AVD
پنل تنظیمات دیوایس مجازی AVD

این آموزش هم به پایان رسید. موفق و پیروز باشید.

دانلود System Image ها

دانلود این فایل‌ها در صورتی لازم است که قصدا نصب آفلاین سیستم ایمیج‌ها را داشته باشید.

تاریخ بروزرسانی فایل‌ها : ۱۴۰۱/۰۴/۲۵

» دانلود System Image Android 12 Google Play x86_64 (API 31) با حجم ۱٫۳ گیگابایت | لینک کمکی (سرور ایران)

» دانلود System Image Android 7 Google Play x86 (API 24) با حجم ۷۷۵ مگابایت | لینک کمکی (سرور ایران)

دانلود نسخه PDF این آموزش
تعداد صفحات : ۲۲
حجم : ۲ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۲ مگابایت لینک کمکی
این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید
5/5 - (4 امتیاز)
پرسش‌ها و دیدگاه‌های کاربران
دوره آموزش برنامه نویسی اندروید
دوره آموزش برنامه نویسی اندروید

با دریافت این دوره به تمامی آموزش‌های غیر رایگان و رایگان موجود در وب سایت دسترسی دارید که تخفیفی برای آموزش‌های غیر رایگان نیز درنظر گرفته شده. این پکیج به دو صورت دانلودی و ارسال پستی ارائه می‌گردد.
آموزش‌های اندروید استودیو در دو دسته «پایه» و «تکمیلی» منتشر می‌شوند.
آموزش‌های پایه شامل مباحث اصلی و ضروری و آموزش‌های تکمیلی مطالبی است که می‌بایست در کنار مطالب اصلی بررسی شود.
با خرید این دوره، به تمامی آموزش‌های غیر رایگانی که در آینده منتشر می‌شود نیز به صورت رایگان دسترسی خواهید داشت!

یک دیدگاه بنویسید

پرسش‌های زیر تایید و پاسخ داده نـــخواهند شد:
۱: جزء موارد مطرح شده در صفحات مشکلات و پرسش‌های رایج و بروزرسانی‌های محتوای آموزشی باشد
۲: سوال قبلا توسط کاربران در دیدگاه‌ها مطرح و پاسخ داده شده باشد
۳: پرسش خارج از مبحث آموزشی موجود در این صفحه باشد