در بسیاری از دستورالعمل ها برای به دست آوردن حقوق ریشه و اصلاح سیستم عامل، لازم است که اشکال زدایی USB و OEM Factory Unlocking را فعال کنید. USB Debugging چیست؟ می توانید از این مقاله متوجه شوید که چرا به آن نیاز است و چگونه آن را فعال کنید!
USB Debugging برای چه مواردی استفاده می شود؟
اشکال زدایی USB برای استفاده از سرویس برای اشکال زدایی برنامه ها و تغییر تنظیمات دستگاه در سیستم عامل اندروید (بررسی کنید که برنامه و سیستم به طور کلی چگونه کار می کند و چه خرابی هایی رخ داده است) با استفاده از ابزاری به نام ADB استفاده می شود.
OEM Factory Unlock چیست؟
با شروع Android 5.0، بسیاری از سازندگان شروع به پیاده سازی مکانیزم امنیتی اضافی در برابر تغییر غیرمجاز پارتیشن های سیستم کردند. در نتیجه، عملکرد "OEM Factory Unlock" در بخش "Developer Menu" معرفی شد، هنگامی که فعال شد، می توانید بازیابی شخص ثالث و سیستم عامل سفارشی را فلش کنید.
"OEM Factory Unlock" را با باز کردن قفل بوت لودر اشتباه نگیرید، که توسط بسیاری از تولید کنندگان - Xiaomi، HTC، Huawei، Google Pixel، Sony مورد نیاز است.
منوی برنامه نویس اندروید
"اشکالزدایی USB" و "OEM Factory Unlock" همگی در یک بخش مخفی از تنظیمات اندروید به نام "منو توسعهدهنده" قرار دارند. برای مشاهده این بخش باید یک روش فعال سازی ساده را تکمیل کنید.
چگونه USB debugging را فعال کنیم؟
در تمام دستگاه های اندرویدی، صرف نظر از اینکه گوشی هوشمند یا تبلت باشد، اشکال زدایی USB وجود دارد منو -> تنظیمات.
گزینه های موقعیت مکانی احتمالی
با وجود اینکه USB debugging در تنظیمات است، گزینه های مکان در منو ممکن است متفاوت باشد و چندین گزینه برای نحوه پیدا کردن آن وجود دارد! بیایید ۸ گزینه ممکن از نسخه های جدید اندروید تا نسخه های قدیمی تر را در نظر بگیریم.
گزینه شماره 1 برای اندروید 4.2 - اندروید 7.1:
منو -> تنظیمات -> درباره گوشی هوشمند/درباره تبلت -> تنظیمات -> برای توسعه دهندگان -> اشکال زدایی USB- تیک
گزینه شماره 2.1 برای شیائومی (نسخه های جدید MIUI)
منو -> تنظیمات -> درباره تلفن -> نسخه MIUIو حدود 7 تا 10 بار روی آن کلیک کنید، سپس به آن بازگردید تنظیمات -> پیشرفته -> برای توسعه دهندگان -> اشکال زدایی USB- تیک
گزینه شماره 2.2 برای شیائومی (نسخه های قدیمی MIUI)
منو -> تنظیمات -> عمومی -> درباره گوشی هوشمند/درباره تبلت ->شماره ساخت و 7 تا 10 بار روی آن کلیک کنید، سپس به آن برگردید تنظیمات -> برای توسعه دهندگان -> اشکال زدایی USB- تیک
گزینه شماره 3 برای اندروید 8.X و بالاتر:
در اندروید 8.0 و جدیدتر، تنظیمات کمی بهروزرسانی شدهاند و اکنون برای رفتن به منوی برنامهنویس و فعال کردن «اشکالزدایی USB» باید: به سیستم -> درباره دستگاه (تبلت/تلفن) -> 5-7 بار روی "Build number" کلیک کنید و به بخش System -> منوی Developer برگردید.
برای نسخه های اندروید 1.6 - 4.2
گزینه شماره 4:
منو -> تنظیمات -> توسعه -> اشکال زدایی USB - کادر را علامت بزنید
گزینه شماره 5:
منو -> تنظیمات -> برای توسعه دهندگان -> اشکال زدایی USB- تیک
گزینه شماره 6:
منو -> تنظیمات ->برنامه های کاربردی ->
توسعه -> اشکال زدایی USB (Android 2.2 - 3.0)
گزینه شماره 7:
منو -> تنظیمات -> بیشتر -> گزینه های توسعه دهنده -> اشکال زدایی USB- تیک
گزینه شماره 8 برای اندروید 4.2 و بالاتر:
منو -> تنظیمات ->سیستم -> درباره گوشی هوشمند/درباره تبلت -> شماره ساخت و 7 تا 10 بار روی آن کلیک کنید، سپس به تنظیمات -> برای توسعه دهندگان -> اشکال زدایی USB- تیک
[سقوط - فروپاشی]
پس از فعال کردن USB Debugging، کامپیوتر را مجاز کنید! (برای اندروید 4.2 و بالاتر)
هنگام اتصال به کامپیوتر برای اولین بارو وارد کردن دستور یا گرفتن حقوق ریشه، درخواست اعتماد خواهید داشتکامپیوتری که اندروید در حال حاضر به آن متصل است! این درخواست در هر رایانه یا لپ تاپ جدیدی ظاهر می شود! کادر را علامت بزنیدو فشار دهید دکمه OK.اشکال زدایی USB فعال است.
اشکال زدایی USB فعال است و دستگاه Android
مشخص نشده؟
اولینآنچه شما باید باور کنید این است در دسترس بودن درایورهای USB نصب شدهبه رایانه خود یا آنها را دوباره نصب/به روز کنید. مشکل دیگر، زیرا Android شناسایی نشده است - در آن موجود است حالت قفل شده! باز کردن قفلگوشی هوشمند یا تبلت شما! از پورت استفاده نکنید USB 3.0فقط USB 2.0.
اگر هنوز نمی توانید اشکال زدایی USB را با رایانه خود نصب کنید، باید روش اتصال به رایانه شخصی را تغییر دهید. هنگامی که قبلاً تلفن هوشمند یا رایانه لوحی خود را به رایانه شخصی خود متصل کرده اید، نوار اطلاعات بالای "پرده" را به پایین بکشید -> اتصال USB را انتخاب کنیدو فعال کنید حالت PTP
اگر می خواهید از طریق WI-FI متصل شوید
بعد از اینکه این گزینه را در اندروید فعال کردید، می توانید گوشی هوشمند خود را به رایانه شخصی خود متصل کرده و دستورات adb لازم را وارد کنید یا حقوق ریشه را دریافت کنید!
آیا هنوز سوالی دارید؟ آنها را در نظرات بنویسید، به ما بگویید چه کردید یا برعکس!
همین! مقالات و دستورالعمل های مفید بیشتری را در بخش بخوانید. با سایت همراه باشید، جالب تر خواهد شد!
اشکال زدایی USB به شما امکان می دهد از این سرویس برای اشکال زدایی برنامه ها و دستگاه ها در سیستم عامل Android استفاده کنید: بررسی کنید که برنامه و سیستم چگونه کار می کند و چه خرابی هایی رخ داده است.
USB Debugging را فعال کنید
در همه دستگاههای Android، اشکالزدایی USB در منو > تنظیمات قرار دارد، اما گزینههای مکان ممکن است متفاوت باشند، به عنوان مثال:
منو > تنظیمات > توسعه > اشکال زدایی USB (روشن) منو > تنظیمات > برنامه ها > توسعه > اشکال زدایی USB (روشن) منو > تنظیمات > بیشتر > گزینه های برنامه نویس > منوی اشکال زدایی USB > تنظیمات > عمومی > درباره گوشی هوشمند/درباره رایانه لوحی > شماره ساخت ( 7 تا 10 بار روی آن کلیک کنید، سپس به تنظیمات > برای توسعه دهندگان > اشکال زدایی USB (روشن) برگردید
پس از فعال کردن اشکال زدایی USB
قفل گوشی هوشمند یا تبلت خود را باز کنید. هنگام اتصال به رایانه از پورت USB 3.0 استفاده نکنید، فقط از USB 2.0 استفاده کنید.
هنگامی که دستگاه برای اولین بار به رایانه متصل می شود، از شما خواسته می شود به رایانه اعتماد کنید: کادر را علامت بزنید و تأیید را کلیک کنید. اشکال زدایی USB فعال است.
نصب یک برنامه رفع اشکال USB
برای رفع اشکال از برنامه ADB (Android Debug Bridge) استفاده می شود. ADB بخشی از Android SDK است که به آن نیاز دارید.
بایگانی فشرده را از Android SDK دانلود کنید، حاوی پوشه adt-bundle-windows-x86_64-20140702 است که حاوی خود SDK است. آن را روی رایانه خود باز کنید. به عنوان مثال، ما پوشه را در ریشه درایو C قرار دادیم، i.e. مسیر SDK به این صورت خواهد بود: C:\adt-bundle-windows-x86_64-20140702\
ما مطمئن می شویم که رایانه به اینترنت متصل است و برنامه SDK Manager واقع در پوشه adt-bundle-windows-x86_64-20140702 را اجرا می کنیم.
اگر SDK Manager راه اندازی نشد، Java SE را نصب کنید.
پس از راه اندازی برنامه SDK Manager، پنجره نصب ظاهر می شود. باید دانلود و نصب کنیم
✓ ابزارهای پلتفرم Android SDK ✓ ابزارهای Android SDK ✓ بسته درایور Google Usb
این سه مورد را در لیست علامت گذاری می کنیم و تیک بقیه موارد را برداریم. روی "نصب" کلیک کنید و منتظر بمانید تا برنامه اجزا را دانلود کند.
درایورهای USB برای ویندوز 32 و 64 بیتی در پوشه C:\adt-bundle-windows-x86_64-20140702\extras\google\usb_driver دانلود می شوند (اگر درایورهای رسمی را برای رایانه لوحی یا تلفن هوشمند خود پیدا نکردید بعداً نصب کنید).
ما دستگاه خود را به رایانه متصل می کنیم - رایانه تجهیزات جدید را تشخیص می دهد. ما درایورها را از وبسایت سازنده یا از پوشهای که قبلاً دانلود شدهاند نصب میکنیم (نصب از طریق Task Manager > *دستگاه ناشناس* > دکمه سمت راست ماوس > بهروزرسانی نرمافزار درایور.. > جستجوی درایور در رایانه شخصی > درایورهای دانلود شده انجام میشود).
پس از نصب درایورها، یک دستگاه جدید "ADB Interface" در مدیر دستگاه ظاهر می شود.
اگر دستگاه در مدیر به عنوان رابط ADB شناسایی نشده است، درایورهای رایانه لوحی یا تلفن هوشمند خود را بررسی کنید، حالت اشکال زدایی USB را خاموش و روشن کنید و دستگاه را دوباره به رایانه شخصی متصل کنید.
راه اندازی برنامه ADB
بهترین راه برای کار با برنامه ADB از طریق خط فرمان ویندوز است. برای باز کردن خط فرمان، روی «شروع» کلیک کنید و در قسمت ورودی «جستجوی برنامهها و فایلها»، cmd را تایپ کرده و «Enter» را فشار دهید.
برای مشاهده اینکه چه دستگاه هایی به کامپیوتر متصل هستند، دستور زیر را تایپ کنید:
C:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe devices
برنامه ADB لیستی از دستگاه هایی که در حال حاضر به رایانه متصل هستند را نمایش می دهد. اگر دستگاه در خط فرمان ظاهر شد، می توانید اشکال زدایی را شروع کنید.
اشکال زدایی i2 Control V2.2 از طریق USB
(1) را وارد کنید:
C:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe logcat
خط فرمان شروع به نمایش گزارش تلفن هوشمند یا تبلت شما می کند.
با کلیک کردن، ورود به سیستم را متوقف کنید Ctrl+C
(2) را وارد کنید:
C:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools\adb.exe logcat >log.txt
اکنون گزارشی که با استفاده از (1) مجدداً راه اندازی شده است، در یک فایل متنی واقع در C:\Users\*Username*\log.txt ذخیره می شود.
برنامه i2 Control V2.2 را روی تبلت یا تلفن هوشمند خود راه اندازی کنید، گزارش (1) را اجرا کنید، عملیاتی را که می خواهید گزارش ذخیره کنید، انجام دهید، با فشار دادن Ctrl+C ثبت نام را متوقف کنید.
شما می توانید گزارش ذخیره شده را به پشتیبانی فنی به همراه پروژه خود، شرح مشکل، مدل و نسخه سیستم عامل تبلت یا گوشی هوشمندی که مشکل در آن شناسایی شده است ارسال کنید.
این مقاله به شما نشان می دهد که چگونه یک دیباگر را به یک برنامه اندروید متصل کنید و با استفاده از اطلاعات به دست آمده پس از دیکامپایل برنامه، روش های فراخوانی را طی کنید.
این مقاله به شما نشان می دهد که چگونه یک دیباگر را به یک برنامه اندروید متصل کنید و با استفاده از اطلاعات به دست آمده پس از دیکامپایل برنامه، روش های فراخوانی شده را طی کنید. خبر خوب این است که اشکال زدایی به امتیازات superuser نیاز ندارد. تکنیکهای توصیفشده میتوانند در طول پنتهای برنامههای تلفن همراه بسیار مفید باشند، زیرا میتوانیم در حین اجرای برنامه به کد «نفوذ» کنیم، اطلاعاتی را که معمولاً به آنها دسترسی نداریم، بدست آوریم و ضبط کنیم. به عنوان مثال، می توانید قبل از رمزگذاری، ترافیک را رهگیری کنید و کلیدها، رمزهای عبور و هر اطلاعات ارزشمند دیگری را در حین پرواز به دست آورید. این مقاله برای نفوذگران و توسعه دهندگان برنامه های تلفن همراه که می خواهند اطلاعات عمیق تری در مورد حملات احتمالی در پلتفرم اندروید به دست آورند مفید خواهد بود.
الزامات محیط آزمایش:
- سیستم عامل: Windows / Mac OS X / Linux
- جاوا (نسخه 1.7 توصیه می شود)
- IDE (Eclipse، IntelliJ IDEA، Android Studio)
- Android SDK (https://developer.android.com/sdk/index.html?hl=i)
- APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
- دستگاه / شبیه ساز اندروید
پیکربندی زیر در این مقاله استفاده خواهد شد: Windows 8، Android Studio و IntelliJ IDEA. دستگاه: Nexus 4 با Android نسخه 4.4.4. توصیه میکنم همه ابزارهای کاربردی را به متغیر محیطی PATH اضافه کنید تا دسترسی به این ابزارها آسانتر و سریعتر شود.
بسته نرم افزار اندروید (APK) مورد استفاده در این مقاله را می توانید از اینجا دانلود کنید: com.netspi.egruber.test.apk .
راه اندازی دستگاه
دستورالعمل های زیر به شما کمک می کند دستگاه را برای آزمایش آماده کنید.
فعال کردن قسمت Developer Options
برای شروع، اشکال زدایی USB باید در دستگاه Android شما فعال باشد (گزینه اشکال زدایی USB)، که به شما امکان می دهد با استفاده از ابزارهای Android SDK با دستگاه "ارتباط" کنید. البته قبل از این باید قسمت Developer options را فعال کنید. در دستگاه خود به قسمت Settings > About Phone رفته و چندین بار بر روی آیتم Build Number کلیک کنید و پس از آن باید پیامی مبنی بر فعال بودن قسمت Developer options ظاهر شود.
شکل 1: برای فعال کردن قسمت Developer options باید چندین بار بر روی Build number کلیک کنید.
USB Debugging را فعال کنید
برای فعال کردن اشکال زدایی از طریق پورت USB، به Settings > Developer options رفته و کادر کنار USB debugging را علامت بزنید.
شکل 2: فعال کردن گزینه USB debugging
اتصال دستگاه و راه اندازی ADB
پس از اتصال دستگاه به رایانه از طریق پورت USB، پیام «اشکالزدایی USB متصل در دستگاه» ظاهر میشود. همچنین باید بررسی کنید که آیا می توانید با استفاده از برنامه Android Debug Bridge (ADB) موجود در Android SDK (Android SDK Platform-Tools) به دستگاه خود متصل شوید. در خط فرمان، دستور زیر را وارد کنید:
دستگاه باید در لیست ظاهر شود.
شکل 3: لیست دستگاه های متصل
اگر دستگاه در لیست ظاهر نمی شود، محتمل ترین دلیل نصب نادرست درایورها (در ویندوز) است. بسته به دستگاه، درایور را می توان در Android SDK یا در وب سایت سازنده پیدا کرد.
بررسی برنامه برای رفع اشکال
قبل از اشکال زدایی برنامه های اندروید، ابتدا باید بررسی کنید که آیا این امکان وجود دارد یا خیر. چک را می توان به روش های مختلفی انجام داد.
راه اول دویدن است مانیتور دستگاه اندروید، موجود در Android SDK (در پوشه ابزار). در ویندوز فایل monitor.bat نام دارد. هنگامی که Android Device Monitor را باز می کنید، دستگاه در بخش Devices ظاهر می شود.
شکل 4: برنامه مانیتور دستگاه اندروید
اگر هر برنامه ای در دستگاه قابل رفع اشکال باشد، آن برنامه نیز در لیست ظاهر می شود. من یک برنامه آزمایشی ایجاد کردم، اما لیست خالی است زیرا برنامه را نمی توان اشکال زدایی کرد.
راه دوم برای بررسی اینکه آیا یک برنامه قابل اشکالزدایی است یا خیر، بررسی فایل AndroidManifest.xml از بسته برنامه (APK، بسته برنامه Android) است. APK یک آرشیو فشرده حاوی تمام اطلاعات مورد نیاز برای اجرای برنامه در دستگاه اندرویدی شما است.
هر زمان که برنامه ای از فروشگاه Google Play دانلود می شود، بسته برنامه نیز دانلود می شود. همه فایلهای APK دانلود شده معمولاً در دستگاه در پوشه /data/app ذخیره میشوند. اگر حقوق ابرکاربر ندارید، نمیتوانید فایلها را از فهرست /data/app فهرست کنید. اگرچه، اگر نام فایل APK را می دانید، می توانید آن را با استفاده از ابزار کپی کنید adb. برای فهمیدن نام فایل APK دستور زیر را وارد کنید:
خط فرمان دستگاه ظاهر می شود. سپس دستور زیر را وارد کنید:
بسته های لیست pm -f
لیستی از تمام بسته های موجود در دستگاه نمایش داده می شود.
شکل 5: لیست بسته های موجود در دستگاه
با نگاهی به لیست، یک برنامه آزمایشی پیدا می کنیم.
شکل 6: بسته برنامه آزمایشی ایجاد شده (با رنگ سفید برجسته شده است)
اکنون باید فایل بسته را کپی کنید. پوسته را باز کنید و دستور زیر را وارد کنید:
adb pull /data/app/[فایل .apk]
شکل 7: کپی فایل APK از دستگاه به سیستم
اکنون باید فایل بسته را باز کنید و محتویات AndroidManifest.xml را بررسی کنید. متأسفانه، ما نمیتوانیم به سادگی آرشیو را استخراج کنیم زیرا فایل APK در فرمت باینری کدگذاری شده است. ابزاری که اغلب برای رمزگشایی استفاده می شود این است apktoolاگرچه استفاده می کنم APK Studio، از آنجایی که این برنامه دارای یک رابط گرافیکی دوستانه است. در ادامه مقاله در مورد APK Studio صحبت خواهد شد.
در APK Studio، روی نماد سبز کوچک کلیک کنید، نام پروژه را بگذارید و مسیر فایل APK را مشخص کنید. سپس let را برای ذخیره پروژه مشخص کنید.
شکل 8: ایجاد یک پروژه جدید در APK Studio
پس از باز کردن APK، فایل AndroidManifest.xml را انتخاب کنید و به تنظیمات تگ برنامه نگاه کنید. اگر پرچم android:debuggable مفقود باشد (یا وجود داشته باشد اما روی false تنظیم شده باشد)، برنامه را نمی توان اشکال زدایی کرد.
شکل 9: محتویات فایل AndroidManifest.xml
در حال تغییر فایل AndroidManifest.xml
با استفاده از ابزار apktool یا APK Studio، میتوانیم فایلها را تغییر دهیم و محتویات را دوباره در بسته بسته بندی کنیم. اکنون فایل AndroidManifest.xml را تغییر می دهیم تا برنامه بتواند اشکال زدایی شود. خط android:debuggable="true" را در داخل تگ برنامه اضافه کنید.
شکل 10: تغییر محتویات تگ برنامه
پس از اضافه کردن پرچم، روی نماد "چکش" کلیک کنید و بسته را دوباره جمع کنید. بسته بازسازی شده در دایرکتوری build/apk قرار خواهد گرفت.
شکل 11: بازسازی بسته با موفقیت انجام شد
پس از بازسازی، بسته امضا می شود و می توان آن را دوباره روی دستگاه نصب کرد (همه برنامه های اندروید باید امضا شوند). اکثر برنامه ها گواهی استفاده شده برای امضا را تأیید نمی کنند. در غیر این صورت، باید کدی که این بررسی را انجام می دهد را تغییر دهید.
اکنون باید بسته بازسازی شده را نصب کنید. ابتدا با استفاده از دستور زیر برنامه قدیمی را حذف کنید:
adb pm حذف نصب کنید
سپس بسته جدید را نصب کنید:
نصب adb [فایل apk.]
همچنین می توانید بسته را با یک دستور حذف و نصب کنید:
adb install -r [فایل apk.]
شکل 12: نصب بسته بازسازی شده
بررسی کنید که برنامه نصب مجدد به درستی روی دستگاه اجرا شود. اگر همه چیز کار کرد، به مانیتور دستگاه Android، جایی که برنامه آزمایشی باید ظاهر شود، برگردید.
شکل 13: برنامه بازسازی شده اکنون می تواند اشکال زدایی شود
راه اندازی محیط توسعه (IDE)
اکنون می توانید یک دیباگر را به برنامه بازسازی شده متصل کنید، اما ابتدا باید یک پروژه در محیط توسعه ایجاد کنید (مقاله از IntelliJ IDEA استفاده می کند). بیایید یک پروژه جدید ایجاد کنیم. در قسمت نام برنامه، یک نام سفارشی وارد کنید. در قسمت Package name نامی را مشخص کنید که دقیقاً با سلسله مراتب پوشه بسته بازسازی شده مطابقت داشته باشد.
شکل 14: ایجاد یک پروژه جدید در IntelliJ IDEA
معمولاً نام فایل APK با ساختار پوشه مطابقت دارد، اگرچه اگر مطمئن نیستید، سلسله مراتب دایرکتوری را در APK Studio تا پوشه ای که فایل های برنامه در آن قرار دارند بررسی کنید. در مورد من، نام و ساختار پوشه دقیقاً یکسان است (com.netspi.egruber.test).
شکل 15: سلسله مراتب دایرکتوری برنامه را آزمایش کنید
علامت "Create Hello World Activity" را بردارید و ساخت پروژه را تمام کنید (همه گزینه های دیگر پیش فرض باقی می مانند). پروژه جدید باید چیزی شبیه به این باشد:
شکل 16: سلسله مراتب پوشه ها و فایل های پروژه جدید
پس از ایجاد پروژه، باید کد منبع را از فایل APK اضافه کنید تا دیباگر نام نمادها، متدها، متغیرها و غیره را بداند. خبر خوب این است که برنامه های اندروید تقریباً بدون افت کیفیت قابل دیکامپایل هستند. (کد منبع با کد اصلی یکسان خواهد بود). پس از دیکامپایل، کد منبع به محیط توسعه (IDE) وارد می شود.
بازیابی منابع از یک بسته برنامه
ابتدا باید APK را به یک فایل jar تبدیل کنید. سپس با استفاده از یک دیکامپایلر جاوا، کد منبع برنامه را بدست می آوریم. ما با استفاده از ابزار، تبدیل به jar را انجام خواهیم داد dex2jar. dex2jar یک فایل d2j-dex2jar.bat دارد که برای تبدیل APK به jar استفاده می شود. دستور دستور بسیار ساده است:
d2j-dex2jar.bat [فایل .apk]
شکل 17: تبدیل APK به jar
سپس فایل به دست آمده را به JD-GUI (این یک دیکامپایلر جاوا) باز کرده یا بکشید.
شکل 18: ساختار فایل Jar
فایل jar باید به عنوان یک ساختار سلسله مراتبی حاوی فایل های جاوا با کد منبع قابل خواندن ظاهر شود. به File > Save All Sources بروید تا همه منابع را در یک بایگانی فشرده قرار دهید.
شکل 19: ذخیره متون منبع فایل دیکامپایل شده
پس از ذخیره متون منبع، آرشیو را در یک فهرست جداگانه باز کنید.
شکل 20: آرشیو بدون بسته بندی
اکنون باید هر دو دایرکتوری را به پروژه ایجاد شده قبلی در IDE وارد کنید. در IntelliJ به پوشه src رفته و محتویات آرشیو بدون بسته بندی را در آنجا کپی کنید (دو فهرست).
شکل 21: هر دو پوشه در پوشه src کپی می شوند
با بازگشت به Intellij، پروژه به روز شده را مشاهده می کنیم.
شکل 22: متون منبع در پروژه ظاهر شد
اگر روی هر عنصری از لیست کلیک کنیم، متن منبع را مشاهده خواهیم کرد. همانطور که در تصویر زیر می بینید (متن منبع کلاس LoginActivity)، کد منبع با استفاده از ProGuard مبهم شده است.
شکل 23: متن مبدا مبهم کلاس LoginActivity
اتصال دیباگر
اکنون که پروژه دارای کد منبع است، میتوانیم شروع به تنظیم نقاط شکست روی متدها و متغیرها کنیم. با رسیدن به نقاط شکست، برنامه متوقف می شود. به عنوان مثال، من یک نقطه انفصال روی روشی (درست در کد مبهم) که مسئول پردازش اطلاعات وارد شده در یک فیلد متنی است، تنظیم کردم.
شکل 24: یک نقطه شکست بر روی یک روش مبهم تنظیم شده است.
به محض اینکه نقطه شکست ظاهر شد، با کلیک بر روی نماد صفحه در گوشه سمت راست بالا، دیباگر را به فرآیند روی دستگاه متصل کنید (این نماد ممکن است در IDE شما متفاوت باشد).
شکل 25: اتصال دیباگر به فرآیند
شکل 26: فهرست فرآیندهای اتصال یک دیباگر
پس از انتخاب فرآیند، دیباگر به دستگاه متصل می شود.
شکل 27: دیباگر متصل به فرآیندی که روی دستگاه اجرا می شود
من عدد 42 را در قسمت متن وارد می کنم (اگر به خاطر داشته باشید در روش مربوطه نقطه شکست وجود دارد).
شکل 28: عدد 42 را در قسمت متن وارد کنید
پس از فشار دادن دکمه Enter Code، برنامه در نقطه انفصال شکسته می شود زیرا دیباگر می داند که کدام روش در دستگاه فراخوانی می شود. یک برنامه Android کامپایل شده حاوی اطلاعات اشکال زدایی (مانند نام متغیرها) است که برای هر اشکال زدایی سازگار با Java Debug Wire Protocol (JDWP) در دسترس است. اگر برنامه شما اشکال زدایی را فعال کرده باشد، یک دیباگر سازگار با JDWP (اکثر دیباگرهای موجود در محیط های توسعه جاوا در این دسته قرار می گیرند) می تواند به ماشین مجازی برنامه اندروید متصل شود و سپس دستورات اشکال زدایی را بخواند و اجرا کند.
شکل 29: ضربه نقطه شکست
اسکرین شات زیر عددی را که قبلا در قسمت متن وارد کرده بودیم نشان می دهد.
شکل 30: لیست متغیرهای نمونه کلاس فعلی
نتیجه
ما نه تنها می توانیم داده ها را در برنامه بخوانیم، بلکه می توانیم داده های خود را نیز وارد کنیم. این می تواند مفید باشد، برای مثال، اگر بخواهیم جریان اجرای کد را قطع کنیم و برخی از قسمت های الگوریتم را دور بزنیم. با استفاده از دیباگر، میتوانیم منطق برنامه را بهتر درک کنیم و آنچه را که برای کاربر معمولی غیرقابل دسترس است تجزیه و تحلیل کنیم. به عنوان مثال، مشاهده توابع رمزگذاری استفاده شده و کلیدهای پویا می تواند بسیار مفید باشد. علاوه بر این، گاهی اوقات هنگام اشکال زدایی، دانستن نحوه تعامل توابع با سیستم فایل یا پایگاه داده برای درک اینکه چه اطلاعاتی توسط برنامه ذخیره می شود مفید است. دستکاری های مشابه در هر دستگاه اندرویدی بدون امتیازات سوپرکاربر موجود است.
عصر بخیر. اغلب اتفاق می افتد که لازم است دستگاه خود را با سیستم عامل اندروید با استفاده از رایانه چک کنیم. چه آزمایش عمومی باشد و چه تشخیص های معمول برای بررسی هر گونه نقص. برای انجام این کار، باید حالت به اصطلاح "اشکال زدایی USB" را فعال کنید. مهم نیست که چقدر ترسناک به نظر می رسد، در واقع بسیار ساده و قابل دسترس است نه تنها برای متخصصان ابزار، بلکه در حد توانایی های معمولی ترین مبتدیان است. اشکال زدایی USB اندروید چیست، چگونه می توان این اشکال زدایی USB را از طریق رایانه شخصی در اندروید خود فعال کرد، می توانیم از مقاله ما یاد بگیریم.
بیایید بلافاصله بگوییم که اتصال به رایانه شخصی ما نسبت به کار با شبیه ساز رایانه شخصی بسیار ارجحیت دارد.
در هر صورت، ما یک دستورالعمل ویدیویی کوتاه در مورد نحوه تنظیم "اشکال زدایی USB" درج می کنیم، اما در زیر با جزئیات بیشتری در مورد تمام روش ها و قوانین این روش صحبت خواهیم کرد.
چه کاری و به چه ترتیبی باید انجام شود
در بیشتر موارد، حالت اشکال زدایی USB که برای همه سازندگان نیاز داریم، از طریق منوی «تنظیمات» یافت و تنظیم می شود. معمولاً شامل منوی فرعی "Development" یا "For Developers" است. و اگرچه ما هیچ توسعهدهندهای نیستیم، اما همچنان جسورانه "اشکالزدایی USB" مورد نظر را در آنجا پیدا میکنیم و بدون هیچ مقدمهای، کادر را در آنجا علامت میزنیم.
شاید فکر کنید که این پایان تمام مصیبت های ما بود، اما اینطور نبود. کاملاً ممکن است که منوی شما چنین گزینه ای نداشته باشد. این روزگار است. این دیگر برای من نیست، بلکه برای توسعه دهندگان واقعی است. چرا آنها این کار را کردند؟ غیر واضح. شاید همه نتوانند دستگاه را زیر و رو کنند و همه چیز را به هم بریزند.
ساده ترین راه برای فعال کردن اشکال زدایی USB
اگر در منوی ما نباشد، سعی می کنیم مسیر دیگری را طی کنیم. چندین نوع به دست آوردن اشکال زدایی از طریق USB در سیستم عامل های مختلف اندروید. اگر Android 2.2 3.0 دارید، ابتدا سعی کنید وارد همان "Menu"، سپس به تنظیمات، سپس به "Applications" و سپس به "Development" شوید. کاملاً ممکن است که مورد "اشکال زدایی USB" قبلاً وجود داشته باشد.
برای تمامی دارندگان اندروید 4.2 و بالاتر، روش بسیار حیله گر زیر ابداع شده است. دوباره به "منو"، سپس به "تنظیمات"، به "درباره گوشی هوشمند/درباره تبلت" می رویم. ما در اینجا «شماره ساخت » و برخی از اعمال شمنی را انجام دهید. 8-10 بار روی آن کلیک می کنیم و دفعه بعد که به "تنظیمات" می رویم، "For Developers" و "USB Debugging" ناگهان ظاهر می شوند. تنها چیزی که باقی می ماند این است که دوباره کادر را علامت بزنید.
بیایید فرض کنیم که ما موفق شدیم و این اشکال زدایی فعال است. اولین باری که به رایانه شخصی ما متصل می شوید یا دستوری را وارد می کنید، از شما خواسته می شود به رایانه ای که در حال حاضر متصل است اعتماد کنید. بنابراین ما کاملاً به رایانه خود اعتماد داریم، سپس کادر را علامت بزنید و روی "OK" کلیک کنید. همه. اشکال زدایی فعال است. اگر به طور ناگهانی رایانه نمیخواهد دستگاه ما را شناسایی کند، موارد زیر را امتحان کنید. بررسی کنید که آیا گوشی هوشمند/تبلت شما به طور ناگهانی مسدود شده است. آن را رفع انسداد کنید، دوباره اشکال زدایی را بررسی کنید.
اگر باز هم کار نمی کند، سعی کنید درایورهای USB را روی رایانه شخصی خود به روز رسانی/جایگزین/نصب مجدد کنید. توجه: توصیه می شود فقط از پورت USB 2.0 استفاده کنید و از درگاهی مانند USB 3.0 استفاده نکنید. با این حال، من جرات می کنم مطمئن شوم که همه چیز برای شما خوب بوده و حالت راه اندازی USB روشن شده است.
بیشتر به دیدن ما بیایید!
حالت " اشکال زدایی USBبدون در نظر گرفتن نام تجاری دستگاه یا نسخه سیستم عامل، همیشه می توانید در منوی تنظیمات گوشی هوشمند پیدا کنید. با این حال، شایان ذکر است که مسیر نهایی که در طول آن می توانید به این حالت برسید ممکن است متفاوت باشد. و اگر تصمیم بگیرید اشکال زدایی usb را فعال کنید، پس احتمالاً سعی می کنید یا برنامه ای به آن نیاز دارد، مثلاً برای بازیابی فایل های پاک شده در اندروید.
گزینه یک (مرتبط با اکثر نسخه های سیستم عامل اندروید).
ابتدا باید وارد منوی تنظیمات شوید. پس از آن، "Development" را در موارد پایین پیدا کنید و کادر "USB Debugging" را علامت بزنید.
گزینه دو (مرتبط با اکثر تبلت ها)
در اینجا الگوریتم اقدامات با گزینه اول یکسان است، به استثنای مورد "توسعه". در نسخه های سیستم عامل اندروید زیر 2.2، این مورد "برای توسعه دهندگان" نامیده می شود.
پس از نوشتن اولین نسخه کد برنامه خود، البته می خواهیم آن را اجرا و آزمایش کنیم تا مشکلات احتمالی را شناسایی کنیم (یا فقط برای خودنمایی). این را می توان به دو روش انجام داد: برنامه را روی یک دستگاه واقعی متصل به رایانه با استفاده از کابل USB اجرا کنید. با شبیه ساز موجود در SDK تماس بگیرید و برنامه را روی آن تست کنید.
در هر دو مورد، ما باید کمی کار کنیم تا برنامه خود را در عمل ببینیم.
اتصال دستگاه
قبل از اتصال یک دستگاه برای آزمایش، باید مطمئن شوید که توسط سیستم عامل شناسایی شده است. در ویندوز، برای این کار باید درایور مناسب را نصب کنید، که بخشی از نصب SDK است که قبلا نصب کردیم. به سادگی دستگاه را وصل کنید و دستورالعمل ها را برای نصب درایور استاندارد ویندوز دنبال کنید و به درایور/پوشه در فهرست نصب SDK خود اشاره کنید. درایورهای برخی از دستگاه ها باید از وب سایت های سازنده آنها دانلود شوند. در لینوکس و Mac OS X، معمولاً نیازی به نصب درایورها به طور جداگانه نیست - آنها با سیستم عامل ارائه می شوند. بسته به نسخه لینوکس، ممکن است لازم باشد چند مرحله اضافی را انجام دهید (معمولاً یک فایل قوانین جدید برای udev ایجاد می کنید). مجموعه اقدامات ممکن است برای دستگاه های مختلف متفاوت باشد - جستجوی وب می تواند به شما کمک کند.
ایجاد یک دستگاه مجازی اندروید
SDK با یک شبیه ساز ارائه می شود که به اصطلاح دستگاه های مجازی اندروید (AVD) را اجرا می کند. این دستگاه مجازی از یک تصویر از یک نسخه خاص از سیستم عامل اندروید، یک پوسته و مجموعه ای از ویژگی ها از جمله وضوح صفحه نمایش، اندازه کارت حافظه و غیره تشکیل شده است. برای ایجاد یک AVD جدید، باید مدیر SDK و AVD را اجرا کنید. . میتوانید این کار را همانطور که در دستورالعملهای نصب SDK توضیح داده شده است، یا مستقیماً در Eclipse با کلیک کردن روی دکمه مدیریت SDK در نوار ابزار انجام دهید.
1. Virtual Devices را از لیست سمت چپ انتخاب کنید. در نتیجه، لیستی از دستگاه های مجازی موجود را مشاهده خواهید کرد. اگر قبلا از SDK manager استفاده نکرده اید، این لیست خالی خواهد بود. بیایید این وضعیت را تغییر دهیم.
2. برای ایجاد یک AVD جدید، روی دکمه New در سمت راست کلیک کنید. یک گفتگو ظاهر می شود (شکل 2.7).
برنج. 2.7. گفتگوی ایجاد AVD در مدیر SDK
3. هر دستگاه مجازی یک نام (فیلد Name) دارد که متعاقباً به آن مراجعه خواهید کرد. Target نسخه اندرویدی را که AVD باید از آن استفاده کند، تعریف می کند. علاوه بر این، می توانید ظرفیت کارت حافظه AVD و همچنین وضوح صفحه نمایش را تعیین کنید. برای پروژه ساده ما، hello world، میتوانیم Android 1.5 را به عنوان هدف انتخاب کنیم و سایر پارامترها را بدون تغییر باقی بگذاریم. در آزمایش در دنیای واقعی، معمولاً باید چندین دستگاه مجازی ایجاد کنید تا برنامه را برای نسخههای مختلف سیستمعامل و اندازههای نمایش آزمایش کنید.
توجه داشته باشید
اگر دستگاههای اندرویدی واقعی با نسخههای مختلف و با صفحهنمایش متفاوت ندارید، استفاده از شبیهساز برای آزمایش اضافی سازگاری برنامه راحتتر است.
راه اندازی برنامه
اکنون پس از راه اندازی دستگاه ها و AVD خود، در نهایت می توانید برنامه خود را راه اندازی کنید. در Eclipse، این کار به سادگی با کلیک راست روی پروژه hello world در نمای Package Explorer و انتخاب Run As Android Application (یا کلیک کردن روی دکمه Run در نوار ابزار) انجام می شود. در نتیجه، محیط اقدامات زیر را در پسزمینه انجام میدهد:
1. پروژه را در یک فایل ARK کامپایل می کند (اگر از آخرین کامپایل تغییراتی در فایل ها ایجاد شده باشد).
2. اگر پروژه اندروید از قبل وجود نداشته باشد، پیکربندی راه اندازی جدیدی ایجاد می کند (به زودی در مورد پیکربندی راه اندازی صحبت خواهیم کرد).
3. با راهاندازی یک شبیهساز جدید یا استفاده از شبیهساز از قبل در حال اجرا از نسخه مربوطه اندروید، یا با استقرار و راهاندازی آن بر روی یک دستگاه متصل (که همچنین یک نسخه سیستمعامل نصب شده است که کمتر از آن مشخصشده نیست، برنامه را نصب و راهاندازی کنید. در پارامتر Min SDK Version هنگام ایجاد پروژه).
اگر به تازگی یک AVD برای Android 1.5 ایجاد کردهاید (همانطور که در بالا توضیح داده شد)، افزونه ADT برای Eclipse نمونه جدیدی از شبیهساز را راهاندازی میکند، پروژه hello world ARC را روی آن مستقر میکند و برنامه را راهاندازی میکند. در خروجی چیزی شبیه به شکل 1 خواهید دید. 2.8.
شبیه ساز تقریباً دقیقاً مانند یک دستگاه واقعی کار می کند و شما می توانید با استفاده از موس خود با آن تعامل داشته باشید، انگار که از انگشت خود استفاده می کنید. با این حال، چندین تفاوت با کار با یک دستگاه واقعی وجود دارد.
شبیه ساز از چند لمسی پشتیبانی نمی کند. نشانگر ماوس خود را حرکت دهید و وانمود کنید که یک انگشت است. شبیه ساز فاقد برخی از برنامه ها (به عنوان مثال، Android Market) است.
تکان دادن مانیتور برای تغییر جهت صفحه نمایش بی فایده است. در عوض، از کلید 7 روی صفحه کلید بیش از حد برای چرخاندن نمایشگر استفاده کنید. برای جلوگیری از تایپ عدد 7 به جای آن، ابتدا باید Num Lock را فشار دهید.
برنج. 2.8. برنامه شگفت انگیز hello world در عمل.
شبیه ساز بسیار بسیار کند است. عملکرد برنامه خود را با سرعت اجرای آن در شبیه ساز قضاوت نکنید.
در زمان نگارش، شبیه ساز تنها از OpenGL ES 1.0 با چند پسوند پشتیبانی می کند. برای اهداف ما، این کافی است (به جز اینکه پیاده سازی کتابخانه گرافیکی روی شبیه ساز دچار خطا می شود و گاهی اوقات ممکن است نتایجی مشابه با یک دستگاه واقعی دریافت نکنید). در حال حاضر، فقط به یاد داشته باشید که نباید برنامه هایی را که از OpenGL ES استفاده می کنند روی شبیه ساز آزمایش کنید.
چیزهای مختلفی را با شبیه ساز امتحان کنید تا به آن عادت کنید.
توجه داشته باشید
شروع یک نمونه جدید زمان قابل توجهی می برد (بسته به ویژگی های ایستگاه کاری تا چند دقیقه). برای صرفه جویی در زمان، شبیه ساز را در طول جلسه توسعه خود بدون راه اندازی مجدد آن را هر بار اجرا کنید.
گاهی اوقات، هنگام اجرای یک برنامه اندروید، انتخاب خودکار شبیه ساز/دستگاه که توسط افزونه ADT انجام می شود، آزاردهنده می شود. به عنوان مثال، ما چندین دستگاه یا شبیه ساز را به هم متصل کرده ایم و می خواهیم پروژه را روی یکی از آنها آزمایش کنیم. برای رسیدن به این هدف، می توانید انتخاب خودکار شبیه ساز/دستگاه را در پیکربندی راه اندازی پروژه اندروید غیرفعال کنید. به هر حال، پیکربندی راه اندازی چیست؟
پیکربندی راهاندازی راهی را فراهم میکند که به Eclipse بگوید وقتی دستور مناسب داده میشود، دقیقاً چگونه باید برنامه شما را راهاندازی کند. این معمولاً به توانایی تعریف آرگومان های خط فرمان ارسال شده به برنامه، آرگومان های ماشین مجازی (در مورد برنامه های دسکتاپ جاوا SE) و غیره ترجمه می شود. پلاگین های Eclipse و شخص ثالث پیکربندی های راه اندازی متفاوتی را برای انواع خاصی از پروژه ارائه می دهند. ADT نیز از این قاعده مستثنی نیست - همچنین پیکربندی راه اندازی خود را به مجموعه اضافه می کند. اولین باری که برنامه خود را اجرا کردیم، Eclipse و ADT یک پیکربندی جدید اجرای برنامه Android با تنظیمات پیش فرض ایجاد کردند.
برای دسترسی به پیکربندی راه اندازی پروژه خود، این مراحل را دنبال کنید.
1. روی پروژه در نمای Package Explorer کلیک راست کرده و Run As – Run Configurations را انتخاب کنید.
2. پروژه hello world را از لیست سمت چپ انتخاب کنید.
3. در سمت راست پنجره، میتوانید نام پیکربندی راهاندازی را تغییر دهید و همچنین تنظیمات دیگر را در تبهای Android، Target و Commons انجام دهید.
4. برای تغییر استقرار از حالت خودکار به حالت دستی، به تب Target رفته و Manual را انتخاب کنید.
اکنون، هنگامی که برنامه را اجرا می کنید، از شما خواسته می شود شبیه ساز یا دستگاه مناسب را برای استقرار انتخاب کنید. این گفتگو در شکل نشان داده شده است. 2.9. برای وضوح، چندین دستگاه مجازی با نسخه های مختلف سیستم عامل مورد نظر اضافه کردم و همچنین دو دستگاه واقعی را به هم وصل کردم.
برنج. 2.9. انتخاب یک شبیه ساز/دستگاه برای اجرای برنامه
گفتگوی تمام شبیه سازهای در حال اجرا و دستگاه های متصل در حال حاضر و همچنین سایر AVD هایی که در حال حاضر در حال اجرا نیستند را نشان می دهد.
اشکال زدایی برنامه
گاهی اوقات یک برنامه به طور غیرمنتظره ای رفتار می کند یا کار نمی کند. برای تعیین علت مشکل، باید بتوانید برنامه را اشکال زدایی کنید. Eclipse و ADT قابلیت های فوق العاده قدرتمندی را برای برنامه های اندروید ارائه می دهند. ما می توانیم نقاط شکست را در کد تنظیم کنیم، مقادیر متغیرها، وضعیت فعلی پشته و موارد دیگر را دریافت کنیم.
قبل از شروع استفاده از اشکال زدایی، باید فایل AndroidManifest.xml را تنظیم کنید. این نکته کمی یک مشکل مرغ و تخم مرغ است زیرا ما قبلاً به فایل های مانیفست نگاه نکرده ایم. در این مرحله، تنها چیزی که باید بدانیم این است که فایل manifest برخی از ویژگی های برنامه ما را تعریف می کند. یکی از آنها امکان اشکال زدایی برنامه است. این پارامتر در قالب یک ویژگی تگ XML مشخص می شود
همانطور که برنامه خود را توسعه می دهید، می توانید این ویژگی را در فایل مانیفست بگذارید. با این حال، قبل از ارسال بسته به Android Market حتما آن را حذف کنید.
اکنون که اشکال زدایی را برای برنامه خود فعال کرده اید، می توانید آن را روی یک شبیه ساز یا دستگاه پیاده سازی کنید. این معمولاً به شکل تعیین نقاط شکست برای تجزیه و تحلیل وضعیت برنامه در مراحل خاص است. برای تعیین نقطه شکست، فایل کد را در Eclipse باز کنید و در قسمت خاکستری قبل از خط کد مورد نظر خود دوبار کلیک کنید. برای نشان دادن این ویژگی، اجازه دهید این کار را در خط 23 از کلاس He1oWorl dActi vi ty انجام دهیم. این باعث می شود که دیباگر با هر بار فشار دادن دکمه روی صفحه، اجرای برنامه را متوقف کند. نقطه شکست در ویرایشگر کد با یک دایره کوچک در جلوی خطی که آن را تنظیم کرده اید مشخص شده است (شکل 2.10). برای حذف نقطه شکست، دوباره روی آن در ویرایشگر کد دوبار کلیک کنید.
برنج. 2.10. تعیین نقطه شکست
اجرای اشکال زدایی بسیار شبیه به فرآیند اجرای برنامه ای است که در بالا توضیح داده شد. روی پروژه در نمای Package Explorer کلیک راست کرده و Debug As – Android Application را انتخاب کنید. این یک پیکربندی دیباگ جدید برای پروژه شما ایجاد می کند (دقیقاً مانند زمانی که برنامه را اجرا می کنید). میتوانید تنظیمات پیشفرض این پیکربندی را با انتخاب Debug As – Debug Configurations از منوی زمینه تغییر دهید.
توجه داشته باشید
به جای استفاده از منوی زمینه پروژه در نمای Package Explorer، می توانید از منوی Run برای اجرا و اشکال زدایی برنامه و دسترسی به تنظیمات استفاده کنید.
اگر برای اولین بار یک جلسه اشکال زدایی را شروع کنید، Eclipse از شما می پرسد که آیا می خواهید به دیدگاه Debug تغییر دهید، که می توانید بدون تردید این کار را انجام دهید. بیایید این دیدگاه را در نظر بگیریم. در شکل شکل 2.11 ظاهر آن را پس از شروع فرآیند اشکال زدایی برنامه hel1o world نشان می دهد.
برنج. 2.11. دیدگاه اشکال زدایی
اگر مرور مختصر ما از Eclipse را به خاطر داشته باشید، میدانید که چندین دیدگاه دارد که شامل مجموعهای از نماها برای کارهای خاص است. دیدگاه Debug با دیدگاه Run بسیار متفاوت به نظر می رسد.
اولین مورد از نماهای جدیدی که مورد توجه قرار می گیرد، Debug در گوشه بالا سمت چپ است. اگر در حالت اشکال زدایی در حال اجرا باشند، تمام برنامه های در حال اجرا و پشته های تمام رشته های آنها را نشان می دهد.
در زیر نمای Debug نمای ویرایش کد وجود دارد که قبلاً هنگام بررسی چشم انداز جاوا با آن آشنا شده بودیم.
نمای کنسول پیامهایی را از پلاگین ADT نمایش میدهد و به ما اطلاع میدهد که چه خبر است.
نمای LogCat به یکی از بهترین دوستان ما در هنگام توسعه برنامه ها تبدیل خواهد شد. گزارشی از پیامهای دریافتی از اجزای سیستم، سایر برنامهها و برنامه ما را نشان میدهد. همچنین در صورت از کار افتادن برنامه و پیام های بلادرنگ خود ما، یک ردیابی پشته را نشان می دهد. LogCat در بخش بعدی با جزئیات بیشتر مورد بحث قرار خواهد گرفت.
نمای Outline در این منظر خیلی کاربردی نیست. شما به احتمال زیاد متغیرها و نقاط شکست را مطالعه خواهید کرد و موقعیت فعلی شما در برنامه هیچ فایده ای برای شما نخواهد داشت. من معمولاً این نما را از منظر Debug می بندم تا فضای بیشتری برای دیگران باقی بگذارم.
نمای متغیرها به ویژه برای اهداف اشکال زدایی مفید است. هنگامی که دیباگر به نقطه شکست می رسد، ما این فرصت را داریم که متغیرها را در زمینه برنامه فعلی بررسی و تغییر دهیم.
در نهایت نمای Breakpoints لیستی از نقاط شکست ما را نشان می دهد.
اگر کنجکاو هستید، احتمالاً قبلاً روی دکمهای در یک برنامه در حال اجرا کلیک کردهاید تا اشکالزدا را در عمل ببینید. با توجه به نقطه شکست تعیین شده در خط 23 متوقف خواهد شد. همچنین ممکن است متوجه شوید که در نمای Variables، متغیرهایی برای بلوک برنامه فعلی ظاهر شده اند که شامل خود اکتیویتی (this) و پارامتر متد (v) است. با گسترش لیست متغیرها، می توانید آنها را با جزئیات بیشتری بررسی کنید.
نمای Debug ردیابی پشته مرتبط با روش فعلی را نشان می دهد. توجه داشته باشید که میتوانید چندین رشته در حال اجرا داشته باشید که هر یک از آنها را میتوانید در هر زمانی در نمای Debug به حالت تعلیق درآورید. خطی که نقطه انفصال در آن تنظیم شده است، مشخص می شود که موقعیت را در کد برنامه نشان می دهد.
میتوانید به دیباگر بگویید که عبارت فعلی را اجرا کند (با فشار دادن F6)، وارد روشهایی شود که با روش فعلی فراخوانی میشوند (با فشار دادن F5)، یا اجرای برنامه را طبق معمول (با فشار دادن F8) ادامه دهد. همچنین می توانید با استفاده از منوی Run به اهداف مشابه برسید. لطفاً توجه داشته باشید که در واقع گزینه های اشکال زدایی بیشتر از آنچه که به شما گفتم وجود دارد. مثل همیشه، من شما را تشویق می کنم که آنچه را که نیاز دارید آزمایش کنید.
توجه داشته باشید
کنجکاوی بلوک اصلی سازنده بازی های اندرویدی موفق است. شما باید واقعاً با محیط توسعه آشنا شوید تا بیشترین استفاده را از آن ببرید. اما نمی توانم تمام جزئیات Eclipse را توصیف کنم، بنابراین من دوباره شما را تشویق می کنم که آزمایش کنید.
LogCat و DDMS
پلاگین ADT بسیاری از نماها و دیدگاه های جدید را برای استفاده در Eclipse نصب می کند. یکی از مفیدترین نماها (که در قسمت قبل به اختصار به آن اشاره شد) LogCat نام دارد.
LogCat یک سیستم ثبت رویدادها در اندروید است که به اجزای سیستم و برنامه های کاربردی اجازه می دهد اطلاعات را در سطوح مختلف نمایش دهند. هر ورودی گزارش شامل تاریخ، زمان، سطح ثبت، شناسه فرآیند منبع ورودی، یک برچسب (تعریف شده توسط خود برنامه) و خود پیام است.
نمای LogCat این اطلاعات را از شبیه ساز متصل یا دستگاه واقعی جمع آوری و نمایش می دهد. در شکل شکل 2.12 نمونه ای از خروجی از نمای LogCat را نشان می دهد.
برنج. 2.12. نمای LogCat
به دکمه های گوشه سمت راست بالای LogCat توجه کنید.
پنج مورد اول از این موارد به شما امکان میدهد سطوح گزارشی را که میخواهید ببینید انتخاب کنید.
دکمه سبز سبز به شما اجازه می دهد تا یک فیلتر را بر اساس برچسب، شناسه فرآیند و سطح گزارش تعریف کنید. اگر بخواهید گزارش فقط برنامه خود را ببینید (که احتمالاً از یک برچسب خاص استفاده می کند) به شما کمک زیادی می کند.
دکمه های باقی مانده به شما امکان ویرایش و تغییر فیلتر و همچنین پاک کردن پنجره خروجی را می دهند.
اگر چندین دستگاه / شبیه ساز به طور همزمان متصل شوند، LogCat فقط اطلاعات یکی از آنها را خروجی می کند. برای دریافت اطلاعات دقیق تر، می توانید از دیدگاه DDMS استفاده کنید.
DDMS (Dalvik Debugging Monitor Server) اطلاعات جامع تری در مورد فرآیندهای Dalvik و ماشین های مجازی در حال اجرا بر روی تمام دستگاه های متصل ارائه می دهد. میتوانید هر زمان که بخواهید با استفاده از آیتم منو Window – Open Perspective – Other – DDMS (پنجره – Open view – Others – DDMS) به دیدگاه DDMS تغییر وضعیت دهید. در شکل شکل 2.13 نشان می دهد که دیدگاه DDMS معمولاً چگونه به نظر می رسد.
برنج. 2.13. DDMS در عمل
مانند دیدگاه های دیگر، ما چندین دیدگاه ویژه داریم که کار مفیدی برای ما انجام می دهند. در این مورد، ما می خواهیم اطلاعاتی در مورد تمام فرآیندها، ماشین های مجازی، رشته ها، وضعیت حافظه فعلی، داده های LogCat برای یک دستگاه خاص و غیره جمع آوری کنیم. بیایید نگاهی به این نماها بیندازیم.
Devices - تمام دستگاه ها و شبیه سازهای متصل و همچنین فرآیندهای در حال اجرا بر روی آنها را نشان می دهد. با استفاده از دکمههای نوار ابزار، میتوانید اقدامات مختلفی را انجام دهید: فرآیند انتخابشده را اشکالزدایی کنید، وضعیت حافظه و دادهها را از رشتهها ضبط کنید و از صفحهنمایش عکس بگیرید.
LogCat - همان چیزی است که در بخش قبل توضیح داده شد، با یک تفاوت: اطلاعات دستگاه انتخاب شده در نمای Devices را نمایش می دهد.
کنترل شبیه ساز – به شما امکان می دهد رفتار یک نمونه شبیه ساز در حال اجرا را تغییر دهید. به عنوان مثال می توانید از آن بخواهید مختصات GPS نمونه را برای آزمایش تولید کند.
Threads - اطلاعاتی را در مورد رشته های استفاده شده توسط فرآیندی که در نمای Devices انتخاب شده است، نمایش می دهد. اطلاعات تنها در صورتی نشان داده میشوند که ردیابی جریان را فعال کرده باشید (این کار را میتوانید با کلیک کردن روی دکمه پنجم از سمت چپ در نمای دستگاهها انجام دهید).
Heap (در شکل 2.13 نشان داده نشده است) - اطلاعاتی در مورد وضعیت حافظه دستگاه ارائه می دهد. همانند داده های رشته، باید ردیابی حافظه را در نمای دستگاه ها با کلیک بر روی دکمه دوم از سمت چپ به صراحت فعال کنید.
ردیاب تخصیص - کلاس های اخیراً استفاده شده را نشان می دهد. این برای مبارزه با نشت حافظه بسیار مفید است.
File Explorer – به شما امکان میدهد فایلها را در دستگاه Android متصل یا نمونه شبیهساز تغییر دهید. شما میتوانید فایلها را مانند زمانی که با سیستمعامل کار میکنید، به این نما بکشید و رها کنید.
DDMS در واقع یک برنامه جداگانه است که با استفاده از پلاگین ADT در Eclipse ادغام شده است. همچنین می توانید آن را به طور جداگانه از فهرست ابزار $ANDR0ID H0M E/ اجرا کنید (%ANDROID HOME%/tools هنگام استفاده از ویندوز). مستقیماً به دستگاهها متصل نمیشود، اما در عوض از Android Debug Bridge (ADB) استفاده میکند، ابزار دیگری که در SDK گنجانده شده است. بیایید آن را مکمل دانش خود در مورد محیط توسعه اندروید در نظر بگیریم.
با استفاده از ADB
ADB به شما امکان می دهد دستگاه های متصل و نمونه های شبیه ساز را مدیریت کنید. از سه جزء مختلف تشکیل شده است.
یک برنامه مشتری که با استفاده از دستور adb روی ماشین توسعه دهنده راه اندازی شده است (اگر متغیرهای محیط خود را به درستی پیکربندی کرده باشید، این دستور کار می کند). وقتی در مورد ADB صحبت می کنیم، منظورمان دقیقاً این ابزار خط فرمان است.
سرور، همچنین بر روی کامپیوتر توسعه دهنده اجرا می شود. این به عنوان یک سرویس پس زمینه نصب می شود و مسئول ارتباط بین برنامه ADB و هر دستگاه متصل یا نمونه شبیه ساز است.
دیمون ADB، که همچنین یک فرآیند پسزمینه است و روی هر تلفن یا شبیهسازی اجرا میشود. سرور ADB از این دیمون برای اتصال استفاده می کند.
ما معمولاً از ADB از طریق DDMS استفاده می کنیم و وجود یک ابزار خط فرمان جداگانه را نادیده می گیریم. اما گاهی اوقات اجرای جداگانه آن مفید است، بنابراین اجازه دهید نگاهی گذرا به برخی از ویژگی های آن بیندازیم.
توجه داشته باشید
برای مرجع کامل دستورات موجود، به مستندات ADB در وبسایت Android Developers (http://developer.android.com) مراجعه کنید.
یک کار بسیار مفید که با استفاده از ADB انجام می شود، به دست آوردن لیستی از تمام دستگاه ها و شبیه سازهای متصل به سرور ADB (و در نتیجه به رایانه) است. برای انجام این کار، دستور کنسول زیر را اجرا کنید (توجه داشته باشید: نماد بخشی از دستور نیست):
در نتیجه، لیستی از تمام دستگاه های متصل و شبیه سازها با شماره سریال مربوطه روی صفحه نمایش داده می شود:
شماره سریال دستگاه یا شبیه ساز برای اجرای دستورات بعدی استفاده می شود. به عنوان مثال، دستور زیر فایل APK myapp را نصب می کند. و rk از ماشین توسعه دهنده به دستگاهی با شماره سریال NT019R803783:
آرگومان -s را می توان با هر دستور ADB که هر عملی را روی یک دستگاه خاص انجام می دهد استفاده کرد.
همچنین دستوراتی برای کپی فایل ها بین کامپیوتر و دستگاه (شبیه ساز) وجود دارد. نتیجه دستور زیر کپی کردن فایل محلی myfi1e است. txt به کارت حافظه دستگاه با شماره سریال HT019Р803783:
برای ایجاد یک کپی معکوس از fi1e. txt از کارت حافظه، از مجموعه کاراکترهای زیر استفاده کنید:
اگر در حال حاضر فقط یک دستگاه یا شبیه ساز به سرور ADB متصل است، می توانید شماره سریال را حذف کنید - adb آن را به طور خودکار شناسایی می کند.
البته قابلیت های بانک انکشاف آسیایی به عملکردهایی که توضیح دادیم محدود نمی شود. بسیاری از این موارد از طریق DDMS پیاده سازی می شوند و در بیشتر موارد از خط فرمان استفاده نمی کنیم. با این حال، برای کارهای کوچک یک راه حل ایده آل است.
خلاصه کردن
محیط توسعه اندروید گاهی اوقات می تواند ترسناک باشد. خوشبختانه، برای شروع فقط به بخشی از عملکرد نیاز دارید.
مهمترین چیزی که بعد از مطالعه باید درک کنید این است که چگونه همه چیز با هم کار می کند. JDK و Android SDK بهعنوان پایهای برای همه توسعههای اندروید عمل میکنند. آنها ابزارهایی را برای کامپایل، استقرار و اجرای برنامه ها بر روی نمونه ها و دستگاه های شبیه ساز ارائه می دهند. برای سرعت بخشیدن به روند توسعه، از Eclipse در ترکیب با افزونه ADT استفاده می کنیم که ناراحتی کار با JDK و SDK در خط فرمان را از بین می برد. خود Eclipse بر اساس چندین مفهوم ریشه ساخته شده است: فضاهای کاری که پروژه ها را مدیریت می کنند. نماهایی که عملکرد خاصی را ارائه می دهند (مانند ویرایش کد یا خروجی LogCat). پرسپکتیوهایی که نماها را برای انجام وظایف خاص (مثلاً اشکال زدایی) ترکیب می کنند. پیکربندیهای اجرا و اشکالزدایی، که به شما امکان میدهد گزینههایی را برای اجرا یا اشکالزدایی برنامه خود تعریف کنید.
پیش نیاز تسلط بر این همه ثروت، تمرین است، مهم نیست که چقدر خسته کننده به نظر برسد. با مطالعه این موضوع، پروژه هایی را اجرا خواهیم کرد که شما را با محیط توسعه اندروید آشنا می کند. با این حال، نباید در آنجا متوقف شوید - این به شما بستگی دارد که مراحل بعدی را بردارید.
اکنون که همه این اطلاعات را جذب کرده اید، می توانید با چیزی که همه این کارها را برای آن شروع کرده اید به جلو بروید: توسعه بازی.