مهدی ایران نژاد
مهدی ایران نژاد
خواندن ۹ دقیقه·۴ سال پیش

راهکاری جالب برای توسعه دهندگان اندروید!

نکاتی که قبل از مطالعه این مقاله باید بدانید:
- این راهکار فقط برای توسعه‌دهنگانی که از ویندوز استفاده میکنند کارایی داشته و به دلیل استفاده از کد ها و تنظیمات مربوط به ویندوز، امکان استفاده از آن درون سیستم عامل های مکینتاش یا لینوکس وجود ندارد.
- حتما از فعال بودن قابلیت USB Debugging روی گوشی اندرویدی خود مطمئن باشید.

یک دغدغه مهم

اکثر ما برنامه نویس ها وقتی که داریم روی یک پروژه اندرویدی کار میکنیم، فرقی نداره پروژمون یک بازی جذاب باشه یا یک اپلیکیشن کاربردی، یکی از دغدغه های مهم و درگیری های ذهنیمون اینه که برنامه‌امون رو روی موبایل تست و دیباگ کنیم؛ در واقع این امر یکی از کار های مهم، تکراری و البته زمانبر در فرآیند توسعه نرم‌افزار هستش.

این فرآیند برای اکثر توسعه‌دهندگان اندروید شامل مراحل مختلف و زیادی است ولی مهمترین بخش های آن شامل مراحل زیر است:

  1. خروجی گرفتن از پروژه
  2. وصل کردن گوشی به سیستم
  3. انتقال فایل apk روی گوشی
  4. رفتن به محیط گوشی و نصب برنامه
  5. مراجعه به محیط Log-Cat برای رصد تست لاگ‌ها
  6. اجرای برنامه و انجام خواسته های خود

فکر این که ما هر دفعه بعد از هر بار خروجی گرفتن از پروژه بخواهیم این 6 مرحله رو طی کنیم کمی آزار دهنده است؛ حالا، اگر ما بتونیم مراحل 2 تا 5 این فرآیند تکراری رو برای هر بار تست و دیباگ برنامه های خود حذف کنیم چه؟

من قصد دارم در این راهکار کاری کنم تا شما بعد از خروجی گرفتن معطل هیچ چیزی نشوید و خیلی سریع به سراغ اصل کار بروید و عملا مراحل 2 تا 5 رو حذف کنید.

معرفی روش Remote Install

من اسم این راهکار رو Remote Install میزارم و روش کلی کارکرد آن نیز به این صورته که شما بعد از خروجی گرفتن از پروژه کافیه فایل apk رو در محیط ویندوز اجرا کنی، با این کار فایل apk به صورت خودکار روی گوشی نصب میشه و تنها کاری که باید بکنید اجرای برنامه برای تست هستش...

نکته مهم: من به عنوان یک توسعه دهنده بازی که از انجین یونیتی استفاده میکنم سعی کردم در این مقاله راهکاری رو ارائه کنم که به دلیل سخت و تکراری بودن فرایند تست و دیباگ بازی‌ها و همچنین نبودن ابزار های مستقل برای این کار بیشتر مناسب توسعه‌دهندگان بازی هستش، ولی با این حال نکاتی رو خواهم گفت شاید مناسب سایر توسعه دهندگان اندروید باشد و خواندنش خالی از لطف نخواهد بود.

اضافه کردن آدرس فایل adb.exe به Path

در اولین مرحله باید اطمینان داشت که آدرس فایل adb.exe در متغیر Path مربوط به ویندوز ذخیره شده است؛ این فایل معمولا در پوشه platform-tools زیر مجموعه پوشه Android SDK قرار دارد و برای این که بتوانیم دستورات خود را اجرا کنیم نیاز به ثبت آدرس محل ذخیره سازی آن در Path ویندوز داریم.

برای این منظور در محیط Start ویندوز، کلمه cmd رو سرچ میکنیم و سپس روی برنامه Command Prompt یا cmd.exe راست کلیک کرده و گزینه Run as Administrator را انتخاب میکنیم تا محیط خط فرمان برایمان باز شود. سپس دستور زیر را داخل آن مینویسیم:

set PATH=%PATH%;ADB_PATH

در دستور بالا به جای عبارتADB_PATHباید آدرس محل قرارگیری فایل adb.exe را قرار دهیم؛ به عنوان مثال دستور زیر نوشته و آن را اجرا میکنیم.

set PATH=%PATH%;D:\Android-SDK\platform-tools\

پیاده سازی دستورات نصب فایل apk

اکنون باید دستورات نصب فایل apk روی گوشی را بنویسیم، برای این کار notepad رو باز کرده و دستورات زیر رو داخل آن مینویسیم:

@echo off cls title Installing &quot%~NX1&quot echo Installing &quot%~NX1&quot on Device: adb install &quot%1&quot pause>nul

حالا باید دستورات بالا را در محلی ذخیره کنیم، به این منظور یک نام مناسب برایش در نظر میگیریم و آن را با پسوند cmd ذخیره میکنیم؛ به عنوان مثال آن را Remote_Install.cmd ذخیره میکنیم.

نکته مهم: در انتخاب محل ذخیره سازی فایل Remote_Install.cmd دقت کنید، چون به هیچ وجه نباید این فایل حذف یا جابه‌جا شود.

تنظیمات مورد نیاز Registry

اکنون باید در Registry تنظیماتی را انجام دهیم تا فایل های apk در محیط ویندوز قابلیت اجرایی داشته باشند یعنی بتوانیم با دابل کلیک یا فشردن کلید Enter روی آن، آنها را اجرا کرده و عملیات موردنظر خود را اجرا کنیم؛ برای این منظور notepad رو باز کرده و دستورات زیر رو داخل آن مینویسیم:

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.apk] @=&quotapkfile&quot [HKEY_CLASSES_ROOT\.apk\shell] [HKEY_CLASSES_ROOT\.apk\shell\apkinstaller] @=&quotRemote Install on Device&quot [HKEY_CLASSES_ROOT\.apk\shell\apkinstaller\command] @=&quotCMD_FILE_ADDRESS %1&quot

حالا آدرس محل ذخیره سازی فایل Remote_Install.cmd که در مرحله قبلی ایجاد کردیم رو جایگزین عبارتCMD_FILE_ADDRESSدر کد بالا میکنیم.

در حین نوشتن آدرس باید به این نکته توجه کرد که آدرس دهی فایل‌ها و پوشه‌ها در Registry به صورت Double Back Slack انجام میشود؛ یعنی به جای استفاده از \ باید از \\ در مسیر آدرس دهی فایل‌ها و پوشه‌ها استفاده کرد؛ به عنوان مثال باید آدرس زیر:

D:\Android-Development-Tools\Remote_Install.cmd

به این صورت نوشته شود:

D:\\Android-Development-Tools\\Remote_Install.cmd

با رعایت نکته ذکر شده، باید خط آخر در کد های بالا را به این صورت بنویسیم:

@=&quotD:\\Android-Development-Tools\\Remote_Install.cmd %1&quot

حالا باید دستورات نوشته شده و تغییرات را با پسوند reg در محلی ذخیره کنیم؛ به عنوان مثال آنها را در فایلی به نام Registry_Config.reg ذخیره میکنیم.

پس از ذخیره سازی، فایل Registry_Config.reg را اجرا کنید و گزینه yes را بزنید تا فرآیند اعمال تنظیمات کامل شود.

با اجرای این دستورات، این امکان برای ما فراهم میشود که بتوان به فایل های apk به عنوان یک فایل اجرایی نگاه کرد و اگر روی فایل های apk راست کلیک کنیم میبینیم که عبارت Remote Install on Device به ابتدای منوی باز شده، اضافه شده است.

نکته مهم: باز هم تذکر داده میشود که به هیچ وجه فایل Remote_Install.cmd رو حذف یا جابه‌جا نکنید چون با اجرای فایل apk در واقع سیستم عامل به دنبال فایل فوق رفته و آن را اجرا میکند.

اکنون ما میتوانیم با وصل کردن گوشی به سیستم و اجرای یک فایل apk آن را روی گوشی خود نصب کنیم ولی صبر کنید، من میخوام کاری کنم که نیاز نباشه برای هر بار خروجی گرفتن و نصب کردن برنامه، گوشی رو به سیستم وصل کنیم، بلکه میخواهم از طریق شبکه بی‌سیم یا همون Wi-Fi این کار رو انجام بدیم...

نکته مهم: برای درست اجرا شدن این ترفند باید فقط یک دستگاه اندرویدی به سیستم متصل باشه و در صورت وصل بودن بیش از یک دستگاه به صورت همزمان، خطایی مبتنی بر این موضوع برایتان نمایش داده میشود.

شناسایی گوشی از طریق شبکه بی‌سیم

برای این که سیستم عامل بتونه گوشی رو از طریق شبکه بی‌سیم شناسایی کنه و روی آن کنترل داشته باشه باید اول از همه گوشی رو از طریق شبکه بهش معرفی کنیم؛ برای مثال IP آدرس 192.168.70.13 آدرس گوشی من تو شبکه هستش و وقتی من یک فایل apk رو اجرا میکنم قصد دارم اون فایل رو روی IP مورد نظرم نصب کنم.

برای این منظور باید اول از همه یک IP آدرس ثابت یا استاتیک برای گوشیمون تو شبکه تعریف کنیم تا تغییر نکنه چون در صورت تغییر کردن IP گوشی، باید IP تنظیم شده در داخل تنظیماتی که در ادامه به آن اشاره میکنم نیز تغییر دهیم.

نکته مهم: در صورتی که نمیدونید چجوری IP یک دستگاه رو داخل شبکه استاتیک کنید، پیشنهاد میکنم مطالب زیر رو دنبال کنید:
تنظیم IP استاتیک در روتر یا مودم
تنظیم IP استاتیک در گوشی اندرویدی

پس از تعریف IP استاتیک برای گوشی خود باید آن را در سیستم ذخیره کنیم؛ برای این منظور دقیقا طبق روش قبل محیط خط فرمان یا همان Command Prompt را باز کرده و دستور زیر را داخل آن مینویسیم:

setx MyStaticMobileIPAddress &quotX.X.X.X&quot /M

در دستور بالا به جای عبارت X.X.X.X آدرس IP استاتیک خود را وارد میکنیم؛ به عنوان مثال دستور زیر را وارد و اجرا میکنیم:

setx MyStaticMobileIPAddress &quot192.168.70.13&quot /M
نکته مهم: در صورت نیاز به تغییر IP آدرس گوشی خود، میتوانید دستور ذکر شده رو مجددا با IP جدید اجرا کنید.

حالا باید دستورات لازم برای اتصال گوشی به سیستم رو بنویسیم؛ برای این منظور notepad رو باز کرده و دستورات زیر رو مینویسیم:

@echo off cls echo 1. Connect to Device via WiFi echo 2. Disconnect All Devices echo 3. Show All Devices echo 4. Connect to %MyStaticMobileIPAddress% choice /C 1234 /n /m &quotPress 1,2,3,4 for Action: &quot cls goto l%ERRORLEVEL% :l1 echo Make Sure the Device is Conncted via USB Port and Enabled &quotUSB Debugging&quot on Mobile Settings pause>nul adb disconnect adb tcpip 5555 set /p ip=&quotEnter Device IP Address from your Network: &quot adb connect %ip% cls echo You can Disconnect your Device from USB Port... :l3 adb devices pause>nul exit :l2 adb disconnect pause>nul exit :l4 adb disconnect adb tcpip 5555 adb connect %MyStaticMobileIPAddress% cls echo You can Disconnect your Device from USB Port... goto l3

حالا دستورات بالا رو در فایلی با پسوند cmd در جایی که دسترسی به آن برامون راحت و سریعه ذخیره میکنیم؛ به عنوان مثال آن را با اسم Set Device on WiFi.cmd در دسکتاپ ویندوزمون ذخیره میکنیم.

معرفی گوشی به ویندوز از طریق شبکه

اکنون فایل Set Device on WiFi.cmd که در مرحله قبلی ساختیم رو اجرا میکنیم، همانطور که میبینید چهار گزینه به صورت زیر برایمان نمایش داده میشود:

  1. Connect to Device via WiFi
  2. Disconnect All Devices
  3. Show All Devices
  4. Connect to 192.168.70.13
نکته مهم: در اینجا فرض بر این است که IP گوشی 192.168.70.13 است و این مقدار بستگی به IP که در مراحل قبلی ذخیره کردید، داره.

شرح گزینه های بالا به صورت زیر است:

  1. این گزینه به صورت مستقیم از شما IP دستگاه مورد نظر رو دریافت کرده و سپس اقدام به اتصال به همان IP وارد شده میکند، این گزینه بیشتر مناسب زمانی است که قصد دارید گوشی هایی به غیر از گوشی خود را به سیستم خود معرفی کنید.
  2. این گزینه اتصال تمام گوشی هایی که تاکنون از طریق شبکه به سیستم معرفی شده‌اند رو قطع میکند.
  3. این گزینه وضعیت تمام دستگاه های متصل به سیستم رو نمایش میدهد.
  4. این گزینه نیز گوشی خود را به سیستم معرفی میکند.
نکته مهم: در زمانی که قصد معرفی کردن گوشی از طریق شبکه به سیستم را دارید، گوشی باید از طریق سیم به سیستم متصل باشد؛ بعد از انجام فرآیند معرفی میتوانید سیم گوشی را از سیستم جدا کنید؛ همچنین این اتصال بین گوشی و سیستم از طریق شبکه تا زمانی که از شبکه خارج نشده‌اید، ادامه خواهد داشت.

خب بلاخره کار کد نوشتن و انجام تنظیمات تمام شد؛ وقت آن رسیده که نتیجه کارمون رو ببینیم؛ برای این منظور یک بار گوشی رو با استفاده از سیم به سیستم خود وصل کرده و قفل آن را نیز باز میکنیم سپس فایلی که در آخرین مرحله ساختیم رو اجرا کرده و عدد 4 را وارد میکنیم؛ پس از اتمام فرآیند، میتوانید لیست دستگاه های متصل به سیستم رو مشاهده کنید که در حال حاضر 2 دستگاه را نمایش میدهد، هر دو آنها همان گوشی ما هستند فقط با این تفاوت که یکی از طریق شبکه و دیگری از طریق سیم به سیستم معرفی شده است.

حالا میتوانیم گوشی خود را از سیستم جدا کرده و فایل های apk یا همان پروژه های خود را به صورت مستقیم از طریق شبکه روی گوشی نصب کنیم.

اجرای مستقیم Log-Cat پس از نصب برنامه روی گوشی

در این مرحله نیز با اضافه کردن دستورات زیر به انتهای فایل Remote_Install.cmd میتوانیم بلافاصله بعد از نصب برنامه یا بازی خود، وارد محیط Log-Cat شویم؛ برای این منظور روی فایل فوق راست کلیک کرده و گزینه Edit را میزنیم سپس دستورات زیر را به انتهای فایل اضافه میکنیم:

choice /C yn /n /m &quotOpen The Logcat? (y/n)&quot goto l%ERRORLEVEL% :l1 title Device Logcat cls adb logcat -c adb logcat -s Unity IabHelper :l0 exit
نکته مهم: در دستورات بالا نوشتن دو عبارت Unity و IabHelper باعث میشود که فقط لاگ های مربوط به یونیتی و سیستم پرداخت درون برنامه‌ای برایتان نمایش داده شود که بیشتر مناسب بازی‌سازان یونیتی است و در صورتی که بخواهید علاوه بر لاگ های گفته شده، لاگ های سیستمی اندروید را نیز مشاهده کنید میتوانید این دو عبارت رو از دستورات بالا حذف کنید.

از این پس بعد از اجرا و نصب فایل apk سوالی مبتنی بر اجرای Log-Cat از ما پرسیده میشود که با فشردن دکمه y میتوانیم وارد محیط Log-Cat شویم...




سخن پایانی

در این آموزش سعی کردم راهکاری رو در اختیار توسعه دهندگان قرار دهم که خودم به عنوان یک تجربه مفید و کاربردی ازش استفاده میکنم و بهم کمک زیادی در فرآیند تست و دیباگ بازی های یونیتی کرده.

در ضمن از شما نیز بابت مطالعه این مقاله سپاسگذارم و منتظر پیشنهادات، نظرات و انتقادات سازنده شما در این زمینه هستم.

همچنین میتوانید از طریق ایمیل yp2014ir@gmail.com با من در تماس باشید.

برنامه نویسیاندرویدیونیتیاندروید استودیوandroid
برنامه نویس و توسعه دهنده بازی های اندرویدی در Unity، طراح UI
شاید از این پست‌ها خوشتان بیاید