نکاتی که قبل از مطالعه این مقاله باید بدانید:
- این راهکار فقط برای توسعهدهنگانی که از ویندوز استفاده میکنند کارایی داشته و به دلیل استفاده از کد ها و تنظیمات مربوط به ویندوز، امکان استفاده از آن درون سیستم عامل های مکینتاش یا لینوکس وجود ندارد.
- حتما از فعال بودن قابلیت USB Debugging روی گوشی اندرویدی خود مطمئن باشید.
اکثر ما برنامه نویس ها وقتی که داریم روی یک پروژه اندرویدی کار میکنیم، فرقی نداره پروژمون یک بازی جذاب باشه یا یک اپلیکیشن کاربردی، یکی از دغدغه های مهم و درگیری های ذهنیمون اینه که برنامهامون رو روی موبایل تست و دیباگ کنیم؛ در واقع این امر یکی از کار های مهم، تکراری و البته زمانبر در فرآیند توسعه نرمافزار هستش.
این فرآیند برای اکثر توسعهدهندگان اندروید شامل مراحل مختلف و زیادی است ولی مهمترین بخش های آن شامل مراحل زیر است:
فکر این که ما هر دفعه بعد از هر بار خروجی گرفتن از پروژه بخواهیم این 6 مرحله رو طی کنیم کمی آزار دهنده است؛ حالا، اگر ما بتونیم مراحل 2 تا 5 این فرآیند تکراری رو برای هر بار تست و دیباگ برنامه های خود حذف کنیم چه؟
من قصد دارم در این راهکار کاری کنم تا شما بعد از خروجی گرفتن معطل هیچ چیزی نشوید و خیلی سریع به سراغ اصل کار بروید و عملا مراحل 2 تا 5 رو حذف کنید.
من اسم این راهکار رو Remote Install میزارم و روش کلی کارکرد آن نیز به این صورته که شما بعد از خروجی گرفتن از پروژه کافیه فایل apk رو در محیط ویندوز اجرا کنی، با این کار فایل apk به صورت خودکار روی گوشی نصب میشه و تنها کاری که باید بکنید اجرای برنامه برای تست هستش...
نکته مهم: من به عنوان یک توسعه دهنده بازی که از انجین یونیتی استفاده میکنم سعی کردم در این مقاله راهکاری رو ارائه کنم که به دلیل سخت و تکراری بودن فرایند تست و دیباگ بازیها و همچنین نبودن ابزار های مستقل برای این کار بیشتر مناسب توسعهدهندگان بازی هستش، ولی با این حال نکاتی رو خواهم گفت شاید مناسب سایر توسعه دهندگان اندروید باشد و خواندنش خالی از لطف نخواهد بود.
در اولین مرحله باید اطمینان داشت که آدرس فایل 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 روی گوشی را بنویسیم، برای این کار notepad رو باز کرده و دستورات زیر رو داخل آن مینویسیم:
@echo off cls title Installing "%~NX1" echo Installing "%~NX1" on Device: adb install "%1" pause>nul
حالا باید دستورات بالا را در محلی ذخیره کنیم، به این منظور یک نام مناسب برایش در نظر میگیریم و آن را با پسوند cmd ذخیره میکنیم؛ به عنوان مثال آن را Remote_Install.cmd ذخیره میکنیم.
نکته مهم: در انتخاب محل ذخیره سازی فایل Remote_Install.cmd دقت کنید، چون به هیچ وجه نباید این فایل حذف یا جابهجا شود.
اکنون باید در Registry تنظیماتی را انجام دهیم تا فایل های apk در محیط ویندوز قابلیت اجرایی داشته باشند یعنی بتوانیم با دابل کلیک یا فشردن کلید Enter روی آن، آنها را اجرا کرده و عملیات موردنظر خود را اجرا کنیم؛ برای این منظور notepad رو باز کرده و دستورات زیر رو داخل آن مینویسیم:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.apk] @="apkfile" [HKEY_CLASSES_ROOT\.apk\shell] [HKEY_CLASSES_ROOT\.apk\shell\apkinstaller] @="Remote Install on Device" [HKEY_CLASSES_ROOT\.apk\shell\apkinstaller\command] @="CMD_FILE_ADDRESS %1"
حالا آدرس محل ذخیره سازی فایل Remote_Install.cmd که در مرحله قبلی ایجاد کردیم رو جایگزین عبارتCMD_FILE_ADDRESS
در کد بالا میکنیم.
در حین نوشتن آدرس باید به این نکته توجه کرد که آدرس دهی فایلها و پوشهها در Registry به صورت Double Back Slack انجام میشود؛ یعنی به جای استفاده از \ باید از \\ در مسیر آدرس دهی فایلها و پوشهها استفاده کرد؛ به عنوان مثال باید آدرس زیر:
D:\Android-Development-Tools\Remote_Install.cmd
به این صورت نوشته شود:
D:\\Android-Development-Tools\\Remote_Install.cmd
با رعایت نکته ذکر شده، باید خط آخر در کد های بالا را به این صورت بنویسیم:
@="D:\\Android-Development-Tools\\Remote_Install.cmd %1"
حالا باید دستورات نوشته شده و تغییرات را با پسوند 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 "X.X.X.X" /M
در دستور بالا به جای عبارت X.X.X.X آدرس IP استاتیک خود را وارد میکنیم؛ به عنوان مثال دستور زیر را وارد و اجرا میکنیم:
setx MyStaticMobileIPAddress "192.168.70.13" /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 "Press 1,2,3,4 for Action: " cls goto l%ERRORLEVEL% :l1 echo Make Sure the Device is Conncted via USB Port and Enabled "USB Debugging" on Mobile Settings pause>nul adb disconnect adb tcpip 5555 set /p ip="Enter Device IP Address from your Network: " 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 که در مرحله قبلی ساختیم رو اجرا میکنیم، همانطور که میبینید چهار گزینه به صورت زیر برایمان نمایش داده میشود:
نکته مهم: در اینجا فرض بر این است که IP گوشی 192.168.70.13 است و این مقدار بستگی به IP که در مراحل قبلی ذخیره کردید، داره.
شرح گزینه های بالا به صورت زیر است:
نکته مهم: در زمانی که قصد معرفی کردن گوشی از طریق شبکه به سیستم را دارید، گوشی باید از طریق سیم به سیستم متصل باشد؛ بعد از انجام فرآیند معرفی میتوانید سیم گوشی را از سیستم جدا کنید؛ همچنین این اتصال بین گوشی و سیستم از طریق شبکه تا زمانی که از شبکه خارج نشدهاید، ادامه خواهد داشت.
خب بلاخره کار کد نوشتن و انجام تنظیمات تمام شد؛ وقت آن رسیده که نتیجه کارمون رو ببینیم؛ برای این منظور یک بار گوشی رو با استفاده از سیم به سیستم خود وصل کرده و قفل آن را نیز باز میکنیم سپس فایلی که در آخرین مرحله ساختیم رو اجرا کرده و عدد 4 را وارد میکنیم؛ پس از اتمام فرآیند، میتوانید لیست دستگاه های متصل به سیستم رو مشاهده کنید که در حال حاضر 2 دستگاه را نمایش میدهد، هر دو آنها همان گوشی ما هستند فقط با این تفاوت که یکی از طریق شبکه و دیگری از طریق سیم به سیستم معرفی شده است.
حالا میتوانیم گوشی خود را از سیستم جدا کرده و فایل های apk یا همان پروژه های خود را به صورت مستقیم از طریق شبکه روی گوشی نصب کنیم.
در این مرحله نیز با اضافه کردن دستورات زیر به انتهای فایل Remote_Install.cmd میتوانیم بلافاصله بعد از نصب برنامه یا بازی خود، وارد محیط Log-Cat شویم؛ برای این منظور روی فایل فوق راست کلیک کرده و گزینه Edit را میزنیم سپس دستورات زیر را به انتهای فایل اضافه میکنیم:
choice /C yn /n /m "Open The Logcat? (y/n)" 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 با من در تماس باشید.