مروری بر راه اندازها و اشکال زدایی برنامه های Android. اتصال یک دستگاه فیزیکی به Android Studio اشکال زدایی برنامه های Android در دستگاه

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

  1. اشکال زدایی USB را در تلفن خود فعال کنید. با رفتن به تنظیمات -> برنامه ها -> منوی توسعه و بررسی "اشکال زدایی USB" می توانید این کار را انجام دهید.
  2. منتظر نصب درایور باشید
  3. تلفن خود را قطع کرده و مجدداً به رایانه وصل کنید.

برای بررسی اینکه آیا تلفن برای رایانه قابل مشاهده است ، باید موارد زیر را انجام دهید:

اگر در مورد شما چنین است ، می توانید از آن استفاده کنید برنامه ویژه: PdaNet. () معمولاً به منظور استفاده از اینترنت از طریق تلفن از طریق رایانه استفاده می شود ، اما اتفاق می افتد که تعداد زیادی راننده برای تلفن ها در آن وجود دارد. در حین نصب ، از من مدل دستگاه پرسیده شد ، و سپس یک بالون قرمز زیبا با هشدار ظاهر شد که راننده تست نشده است و ممکن است همه چیز بد پایان یابد ، اما نه - همه چیز خوب است ، نصب شده است. پس از آن ، دوباره چک را اجرا کردم (دستور بالا) و تلفن من در لیست دستگاه ها ظاهر شد.

چگونه می توان از Eclipse کار کرد؟ در واقع ، همه چیز قبلاً انجام شده است - ما فقط پروژه را راه اندازی می کنیم و روی تلفن باز می شود.

هنگام ایجاد برنامه های Android ، اکثر توسعه دهندگان از شبیه سازهای مختلف استفاده می کنند. این راحت است زیرا نیازی به ذخیره چند دستگاه مختلف در کشوهای میز ندارید ، هنگام اتصال دستگاه ها به رایانه سردرد وجود ندارد ، انبوه سیم روی میز وجود ندارد. ماوس را کلیک می کنیم و کار برنامه خود را روی صفحه کامپیوتر می بینیم. ساده و شیک. با این حال ، شبیه ساز یک تلفن نیست. او در توانایی های خود محدود است. اگر برنامه شما از ویژگی های سخت افزاری خاصی مانند Bluetooth ، Bluetooth یا اتصال USB، در حین پذیرایی کار کنید تماس تلفنی، با درجه بالایی از احتمال می توان گفت که شما نمی توانید بدون اشکال زدایی در یک دستگاه واقعی انجام دهید. خوشبختانه Eclipse همه چیز را برای انجام این کار نیاز دارد.

اتصال تلفن و راه اندازی برنامه

قبل از اتصال تلفن خود به کامپیوتر با استفاده از کابل یو اس بیانتقال داده ها ، شما باید چند مرحله مقدماتی را انجام دهید. واقعیت این است که Eclipse به طور پیش فرض برای کار با شبیه ساز پیکربندی شده است و ما باید پیکربندی حالت اشکال زدایی را تنظیم کنیم. ساده است. مورد منو Run> Debug Configuration و سپس DroidDebug را انتخاب کنید. در برگه Target در بخش Deployment Target Selection Mode ، سوئیچ را روی Manual تنظیم کرده و روی Apply کلیک کنید. بنابراین شامل می شود حالت دستیانتخاب پلت فرم اکنون ، هنگام شروع برنامه ، یک کادر محاوره ای ظاهر می شود که می توانید شبیه ساز یا یکی از تلفن های متصل را انتخاب کنید.

برای اینکه تلفن در حالت اشکال زدایی کار کند ، همچنین باید بر اساس آن پیکربندی شود. از صفحه اصلی ، روی دکمه منو کلیک کنید و برنامه تنظیمات را پیدا کنید. در این برنامه ، بخش برنامه ها و سپس توسعه را باز کنید. در صفحه باز شده ، علامت چک را در کنار مورد "اشکال زدایی از طریق USB" (Debgging USD) قرار دهید. این دنباله اقدامات در اکثر تلفن ها کار می کند ، اما این امکان وجود دارد که در دستگاه شما حالت اشکال زدایی UBS در جایی دیگر فعال باشد.

تلفن خود را به رایانه متصل کرده و روی دکمه اشکال زدایی در Eclipse کلیک کنید. در کادر محاوره ای ظاهر شده ، دو لیست را مشاهده خواهید کرد: "انتخاب دستگاه Android در حال اجرا" و "راه اندازی دستگاه مجازی جدید Android". در اولین آنها تلفن های متصل به رایانه ، و دوم - شبیه سازها ذکر شده است. تلفن خود را از لیست اول انتخاب کنید. Eclipse برنامه اشکال زدایی شده را بر روی تلفن نصب کرده و آن را راه اندازی می کند. می توانید برنامه خود را اشکال زدایی کنید.

نظارت بر وضعیت تلفن DDMS (سرویس نظارت بر اشکال Dalvik)

تمام اطلاعات مربوط به وضعیت تلفن از طریق ابزار خاصی به نام سرویس مانیتور اشکال زدایی Dalvik (DDMS) در دسترس است. برای راه اندازی آن ، روی دکمه با تصویر اندروید در گوشه سمت راست بالای Eclipse کلیک کنید.

پنجره DDMS از چندین پنل تشکیل شده است. پنل Devices لیستی از شبیه سازهای موجود و تلفن های متصل را نمایش می دهد. در اینجا لیستی از برنامه های اجرا شده در این لحظهفرآیندها هر فرآیند به تنهایی شروع می شود ماشین مجازی... جریانها نقشه برداری می شوند برگه جداگانهموضوعات. برگه جستجوگر فایلطراحی شده برای کار با سیستم فایلتلفن. با استفاده از آن می توانید فایل ها را از رایانه خود به تلفن خود و بالعکس کپی کنید. با استفاده از دکمه Screen Capture ، می توانید از صفحه گوشی اسکرین شات بگیرید. دکمه سبز اشکال به شما اجازه می دهد تا یک اشکال زدایی را به روند انتخاب شده وصل کنید. برای استفاده از این ویژگی ، باید یک کد منبع باز برای این فرآیند داشته باشید.

همچنین ابزار ورود LogCat و پنل مربوطه قابل توجه است که هنگام جستجوی خطاها می تواند بسیار مفید باشد. کار با ورود به سیستم از طریق کلاس ویژه android.util.Log انجام می شود. متداول ترین روشها عبارتند از:

Log.e () - برای خطاهای ورود به سیستم ،
Log.w () - برای هشدارهای ورود به سیستم ،
Log.i () - برای ثبت پیام های اطلاعاتی ،
Log.d () - برای ثبت اشکال زدایی ،
Log.v () - برای ثبت ورودی های مفصل ،

این روش ها باید به عنوان پارامتر دو رشته را رد کنند. اولین مورد یک برچسب است که می تواند برای جستجو و فیلتر در LogCat استفاده شود. دوم اطلاعات واقعی است که در گزارش ثبت می شود.

جعبه شنی

سرور خدا 18 سپتامبر 2011 ، ساعت 03:55 بعد از ظهر

مروری بر راه اندازها و اشکال زدایی برنامه های Android

  • اتاق چوب *

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

دستگاه مجازی Android (AVD)
نصب و راه اندازی:
این مرکز شبیه سازی ساخته شده است Android SDK.

تنظیمات:
(برای مثال در Eclipse استفاده کنید)
پنجره> Android SDK و AVD Manager> جدید
نام دستگاه مجازی ، پلت فرم ، اندازه کارت حافظه ، نوع نمایش ...
روی ایجاد AVD کلیک کنید.

راه اندازی:
اولین راه اندازی شبیه ساز زمان زیادی طول می کشد ، به ویژه در دستگاه های ضعیف. به عنوان مثال ، من نمی توانستم منتظر اولین راه اندازی در نت بوک خود باشم ، و هنگامی که آن را برای اولین بار در رایانه راه اندازی کردم ، مطمئن بودم که شبیه ساز وارد یک حلقه ابدی شده است.
راه اندازی های بعدی شبیه ساز کمی شوخی تر خواهد بود.
زمان بین فشار دادن دکمه "اجرا" و ظاهر شدن فعال سازی اصلی برنامه آزمایش روی شبیه ساز به طور متوسط ​​11 ثانیه می گذرد. اندازه گیری ها بر روی یک رایانه نسبتاً کارآمد انجام شد.

مزایا و معایب:
+ قابلیت آزمایش برنامه در نسخه های مختلفسیستم عامل Android ، در دستگاه های دارای مدل های متفاوت، انواع مختلف، انواع متفاوت، مدل های مختلفنمایش دادن ...
+ تنظیمات مختلفبرای آزمایش ، به عنوان مثال ، تغییر جهت صفحه نمایش مورد نیاز است
+ شبیه سازی کارت SD
- فاصله طولانی بین فشار دادن دکمه "اجرا" و راه اندازی برنامه بر روی شبیه ساز
-شبیه ساز بسیار کند کار می کند ، به عنوان مثال ، آنچه تلفن 1-2 ثانیه پردازش می کرد ، شبیه ساز در 8-10 ثانیه انجام داد

VirtualBox + اندروید x86
نصب و پیکربندی:
  1. VirtualBox را بارگیری و نصب کنید.
  2. تصویر را بارگیری کنید.
  3. "ما یک ماشین مجازی لینوکس 2.6 / دیگر لینوکس ، 512 مگابایت RAM ، Bridged Network ، HD 2 Gb ، غیرفعال کردن ادغام موس را ایجاد می کنیم. وصل می کنیم فایل ISOو یکی از گزینه های LiveCD را بوت کنید (گزینه HDPI و MDPI وجود دارد) "یا این دستورالعمل را دنبال کنید.
  4. Alt-F1 را فشار دهید تا به کنسول بروید و netcfg را تایپ کنید و آدرس IP شبیه ساز را به خاطر بسپارید. برای بازگشت به GUI ، Alt-F7 را فشار دهید.
  5. adb وصل کنید

راه اندازی:
فاصله بین فشار دادن دکمه "اجرا" و ظاهر شدن فعال سازی اصلی برنامه آزمایش در شبیه ساز تشخیص داده نشد ، اما طبق احساسات ذهنی ، تقریباً فوراً اتفاق می افتد.

مزایا و معایب:
+ فاصله زمانی کوتاه بین فشار دادن دکمه "اجرا" و راه اندازی برنامه در شبیه ساز
+ در مکانها کار چابک
- نصب طولانی و گاهی مشکل ساز
- شبیه ساز در مکانها به آرامی کار می کند ، مشکلاتی در تصویر وجود دارد (مخصوصاً در MDPI)
- مشکلات شبیه سازی کارت SD ، تغییر جهت صفحه ، ...
- فقط دو (سه) نسخه سیستم عامل Android و فقط دو نوع نمایشگر موجود

تلفن Android از طریق USB متصل شده است
نصب و پیکربندی:
  1. حالت اشکال زدایی را در تلفن روشن کنید. (تنظیمات> برنامه ها> توسعه> اشکال زدایی USB).
  2. درایور گوشی خود را بارگیری کنید.
  3. ما تلفن را به رایانه متصل می کنیم.
  4. نصب درایور. بخش رابط ADB باید در Device Manager ظاهر شود.
  5. دستگاه های adb اگر تلفن شما در لیست ظاهر نمی شود ، درایور ADB را دوباره نصب کنید.

راه اندازی:
بین فشردن دکمه "Run" و ظاهر شدن فعال سازی اصلی برنامه آزمایشی روی تلفن ، حدود 5 ثانیه طول می کشد.

مزایا و معایب:
+ قابلیت مشاهده برنامه همانطور که کاربر آن را مشاهده می کند (بسیار نکته مهم، به ویژه هنگام ایجاد رابط و طراحی برنامه)
+ چند لمسی (در صورت موجود بودن روی تلفن)
+ تغییر جهت صفحه ، شتاب سنج (در صورت موجود بودن در تلفن)
- فقط یک نسخه سیستم عامل و یک نوع صفحه نمایش
- یک شیء دیگر در دسکتاپ فیزیکی ظاهر می شود

نتیجه گیری:
من هر یک از این ابزارهای شبیه سازی را امتحان کردم و با این گزینه به پایان رسید:
1. نوشتن و آزمایش برنامه با استفاده از تلفن.
2. آزمایش برنامه بر روی دستگاه های مجازی متعدد Android با ترکیبات مختلف نسخه سیستم عامل و نوع نمایش.
امیدوارم خواننده یک شبیه ساز انتخاب کرده یا چیز جدیدی برای خودش آموخته باشد.
در آزمایش خود موفق باشید!

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

قابلیت تست بر روی گوشی های هوشمند توسط ADB (Android Debug Bridge) ارائه می شود. در این مقاله ، ما آن را راه اندازی کرده و برنامه خود را بر روی یک تلفن هوشمند واقعی اجرا می کنیم.

ADB چیست؟

پل اشکال زدایی Android (ADB) یک ابزار خط فرمان همه کاره است که ارتباط بین محیط های توسعه را در محیط ما تسهیل می کند. مورد اندرویداستودیو ، شبیه ساز AVD یا دستگاههای فیزیکی Android برای اجرای و اشکال زدایی برنامه ها.

ADB شامل یک سرویس گیرنده است ، سروری که به عنوان نقش عمل می کند فرایند پس زمینه، در ماشین توسعه و از یک شیطان که به عنوان یک فرایند پس زمینه در هر نمونه شبیه ساز یا دستگاه واقعی اجرا می شود.

راه اندازی دستگاه Android برای کار با ADB

برای استفاده از ADB با دستگاه متصل به USB ، باید اشکال زدایی USB را فعال کنید تنظیمات سیستمتلفن یا رایانه لوحی در بخش Developer Options (نام ممکن است متفاوت باشد). در برخی از دستگاه ها ، این بخش به طور پیش فرض پنهان است. بیایید نگاهی به مراحل موردی که بخش تنظیمات مورد نیاز وجود ندارد ، بیاندازیم.

  1. به تنظیمات ، بخش "درباره دستگاه" بروید
  2. مورد "شماره ساخت" را پیدا کرده و 7 بار روی آن کلیک کنید. باید پنجره ای ظاهر شود که نشان می دهد حالت برنامه نویس فعال شده است.
  3. اکنون بخش گزینه های توسعه دهنده باید در تنظیمات ظاهر شود.
  4. گزینه "اشکال زدایی USB" را در آن فعال کنید.

اکنون ، بسته به مدل ، دستگاه خود را به رایانه متصل می کنید ، ممکن است گزینه اتصال جدیدی داشته باشید.

پیکربندی ADB در ویندوز

در راه اندازی ویندوزابتدا مطمئن شوید که Google USB Driver را نصب کرده اید. به قسمت SDK Manager در قسمت Extras بروید و Google USB Driver را پیدا کنید ، در صورت لزوم آن را نصب کنید.


درایور باید به روز شود. دستگاه خود را به رایانه خود وصل کنید ، به Control Panel -> Hardware and Sound -> Device Manager بروید و دستگاه خود را پیدا کنید. روی دستگاه خود راست کلیک کنید تا باز شود منوی زمینهو "Update Drivers ..." را انتخاب کنید. درایور را می توانید در پوشه sdk تحت \ (فهرست sdk) \ extras \ google \ usb_driver پیدا کنید.

چگونه می توان صحت تنظیمات ADB را بررسی کرد؟

برای بررسی عملکرد ADB ، دستگاه را به کامپیوتر وصل کنید ، خط فرمان را در پوشه \ (sdk directory) \ platform-tools اجرا کرده و فرمان را در آن وارد کنید:

دستگاه های Adb

لیستی مانند این باید ظاهر شود:

لیست دستگاه های متصل دستگاه 5cdb2ced

اجرای برنامه بر روی یک دستگاه واقعی

همه چیز همانند مورد اجرای شبیه ساز است. پروژه ما را در Android Studio باز کنید ، روی مثلث سبز کلیک کنید ، اما در پنجره انتخاب دستگاه که ظاهر می شود ، دستگاه خود را انتخاب کنید.


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

در نتیجه ، برنامه ما روی صفحه تلفن یا رایانه لوحی ظاهر می شود.

نتیجه

این فصل را به پایان می رساند. ما موفق بودیم: ما توانستیم سیستم خود را برای توسعه برنامه های Android سفارشی کنیم و حتی یکی از آنها را بر روی یک دستگاه واقعی اجرا کنیم.

اگر چیزی به طور فعال برای شما کار نمی کند یا گیج شده اید ، لطفاً اشتراک نظرات را لغو کنید و من به شما کمک می کنم تا مشکل خود را دریابید.

کامپایل و اشکال زدایی برنامه های Android

الکساندر آنتیپوف

در این مقاله نحوه اتصال اشکال زدایی به برنامه Android و نحوه استفاده از اطلاعات به دست آمده پس از کامپایل کردن برنامه ، از طریق روش های فراخوانی شده توضیح داده می شود.


در این مقاله نحوه اتصال اشکال زدایی به برنامه Android و نحوه استفاده از اطلاعات به دست آمده پس از کامپایل کردن برنامه ، از طریق روش های فراخوانی شده توضیح داده می شود. خبر خوب این است که اشکال زدایی نیازی به امتیازات فوق استفاده کننده ندارد. تکنیک های توصیف شده می تواند در طول آزمایش های نفوذ بسیار مفید باشد. برنامه های موبایلزیرا ما می توانیم کد را در حین اجرای برنامه "نفوذ" کنیم ، اطلاعاتی را که معمولاً به آنها دسترسی نداریم بنویسیم و بنویسیم. به عنوان مثال ، می توانید ترافیک را قبل از رمزگذاری رهگیری کرده و کلیدها ، گذرواژه ها و سایر اطلاعات ارزشمند دیگر را در حال پرواز دریافت کنید. این مقاله برای برنامه نویسان و توسعه دهندگان برنامه های تلفن همراه که می خواهند اطلاعات عمیق تری از حملات احتمالی به پلت فرم اندروید کسب کنند مفید خواهد بود.

شرایط محیط آزمایش:

  • سیستم عامل: Windows / Mac OS X / Linux
  • جاوا (نسخه 1.7 توصیه می شود)
  • IDE (گرفتگی ، IntelliJ IDEA، Android Studio)
  • SDK Android (https://developer.android.com/sdk/index.html؟hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • دستگاه Android / شبیه ساز

این مقاله از پیکربندی زیر استفاده می کند: Windows 8 ، Android Studio و IntelliJ IDEA. دستگاه: Nexus 4s نسخه اندروید 4.4.4 توصیه می کنم همه ابزارها را به متغیر محیط PATH اضافه کنید تا دسترسی به این ابزارها آسان تر و سریعتر شود.

بسته برنامه Android (APK) مورد استفاده در مقاله را می توانید از اینجا بارگیری کنید: com.netspi.egruber.test.apk .

راه اندازی دستگاه

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

فعال کردن بخش Developer Options

برای شروع ، اشکال زدایی از طریق USB باید در دستگاه Android فعال شود (گزینه اشکال زدایی USB) ، که به شما امکان می دهد با دستگاه با ابزارهای "ارتباط" برقرار کنید شماره گیری اندروید SDK با این حال ، قبل از آن باید بخش Developer options را فعال کنید. در دستگاه خود ، به تنظیمات> بروید درباره تلفنو چندین بار روی مورد Build Number کلیک کنید ، پس از آن باید پیامی مبنی بر فعال بودن بخش Developer options ظاهر شود.

شکل 1: برای فعال کردن بخش Developer options ، باید چندین بار بر روی Build number کلیک کنید

اشکال زدایی USB را فعال کنید

برای فعال کردن اشکال زدایی USB ، به تنظیمات> گزینه های توسعه دهنده بروید و کادر کنار اشکال زدایی USB را علامت بزنید.

شکل 2: فعال کردن گزینه اشکال زدایی USB

اتصال دستگاه و راه اندازی ADB

پس از اتصال دستگاه به رایانه از طریق درگاه USB ، پیام "اشکال زدایی USB متصل به دستگاه" ظاهر می شود. همچنین باید بررسی کنید که آیا می توانید با استفاده از برنامه Android Debug Bridge (ADB) که با Android SDK (بسته ابزار Android SDK Platform-pack) موجود است به دستگاه متصل شوید. در خط فرمان ، دستور زیر را وارد کنید:

دستگاه باید در لیست ظاهر شود.

شکل 3: فهرست دستگاههای متصل شده

اگر دستگاه در لیست نمایش داده نمی شود ، به احتمال زیاد دلیل آن نادرست است درایورهای نصب شده(در ویندوز). بسته به دستگاه ، درایور را می توانید در Android SDK یا در وب سایت سازنده پیدا کنید.

بررسی برنامه برای اشکال زدایی

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

اولین راه دویدن است مانیتور دستگاه Androidموجود در SDK Android (در پوشه ابزارها). که در فایل ویندوزبه نام monitor.bat. در باز کردن اندرویدمانیتور دستگاه ، دستگاه در قسمت Devices نمایش داده می شود.

شکل 4: برنامه مانیتور دستگاه Android

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

راه دوم برای آزمایش برنامه برای اشکال زدایی ، بررسی فایل AndroidManifest.xml از بسته برنامه Android (APK) است. APK یک بایگانی فشرده است که شامل تمام اطلاعات مورد نیاز برای اجرای یک برنامه در دستگاه Android است.

هر زمان که برنامه ها بارگیری می شوند از 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: اشکال زدایی وجود ندارد (یا موجود است اما روی false تنظیم شده است) ، برنامه را نمی توان اشکال زدایی کرد.

شکل 9: محتوای فایل AndroidManifest.xml

اصلاح فایل AndroidManifest.xml

با استفاده از ابزار apktool یا APK Studio ، می توانیم فایل ها را تغییر دهیم و محتویات را دوباره در بسته قرار دهیم. اکنون فایل AndroidManifest.xml را تغییر می دهیم تا برنامه اشکال زدایی شود. خط android: debuggable = "true" را در داخل برچسب برنامه اضافه کنید.

شکل 10: تغییر محتوای برچسب برنامه

پس از افزودن پرچم ، روی نماد چکش کلیک کرده و بسته را مجدداً مونتاژ کنید. بسته بازسازی شده در فهرست build / apk قرار دارد.

شکل 11: بازسازی بسته با موفقیت انجام شد

پس از بازسازی ، بسته امضا می شود و می تواند دوباره روی دستگاه نصب شود (همه برنامه های Android باید امضا شوند). اکثر برنامه ها گواهی مورد استفاده برای امضا را تأیید نمی کنند. در غیر این صورت ، باید کدی را که این بررسی را انجام می دهد ، تغییر دهید.

اکنون باید بسته بازسازی شده را نصب کنید. ابتدا برنامه قدیمی را با استفاده از دستور زیر حذف کنید:

adb pm حذف کنید

سپس بسته جدید را نصب می کنیم:

adb install [.apk فایل]

همچنین می توانید یک بسته را با یک دستور حذف و نصب کنید:

adb install -r [.apk فایل]

شکل 12: نصب بسته بازسازی شده

بررسی کنید که برنامه نصب مجدد به درستی در دستگاه شروع به کار کند. اگر همه چیز کار کرد ، به مانیتور دستگاه Android بازگردید ، جایی که برنامه آزمایشی باید ظاهر شود.

شکل 13: برنامه بازسازی شده اکنون می تواند اشکال زدایی شود

راه اندازی محیط توسعه (IDE)

اکنون می توانید یک اشکال زدایی را به برنامه بازسازی شده متصل کنید ، اما ابتدا باید یک پروژه در محیط توسعه ایجاد کنید (این مقاله از IntelliJ IDEA استفاده می کند). ما یک پروژه جدید ایجاد می کنیم. در قسمت Application name یک نام دلخواه مشخص کنید. در قسمت Package name ، نامی را که دقیقاً با سلسله مراتب پوشه بسته بازسازی شده مطابقت دارد ، مشخص کنید.

شکل 14: ایجاد یک پروژه جدید در IntelliJ IDEA

معمولاً نام فایل APK همان ساختار پوشه است ، اگرچه اگر مطمئن نیستید ، در APK Studio سلسله مراتب فهرستها را تا پوشه ای که فایلهای برنامه در آن قرار دارند بررسی کنید. در مورد من ، نام و ساختار پوشه دقیقاً یکسان است (com.netspi.egruber.test).

شکل 15: سلسله مراتب فهرست برنامه های کاربردی را آزمایش کنید

کادر تأیید Create Hello World Activity را حذف کرده و پروژه را تکمیل کنید (همه گزینه های دیگر به طور پیش فرض باقی می مانند). پروژه جدیدباید چیزی شبیه به این باشد:

شکل 16: سلسله مراتب پوشه ها و فایل های یک پروژه جدید

پس از ایجاد پروژه ، باید کد منبع را از فایل APK اضافه کنید تا اشکال زدایی نام نمادها ، روش ها ، متغیرها و غیره را "بشناسد". خبر خوب این است که برنامه های اندروید را می توان بدون هیچ افت کیفیتی کامپایل کرد. (کد منبع با نسخه اصلی مطابقت دارد). پس از تجزیه ، کد منبع به محیط توسعه (IDE) وارد می شود.

بدست آوردن کد منبع از بسته برنامه

ابتدا باید APK را به یک فایل jar تبدیل کنید. سپس ما کد منبع برنامه را با استفاده از decompiler java دریافت می کنیم. ما تبدیل به jar را با استفاده از ابزار انجام می دهیم dex2jar... Dex2jar دارای یک فایل d2j-dex2jar.bat است که برای تبدیل APK به jar استفاده می شود. نحو دستور بسیار ساده است:

d2j-dex2jar.bat [.apk فایل]

شکل 17: تبدیل APK به jar

سپس فایل به دست آمده را در JD-GUI باز کنید یا بکشید (این یک کامپایلر جاوا است).

شکل 18: ساختار فایل jar

فایل jar باید به صورت یک ساختار سلسله مراتبی با فایل های جاوا با منبع خوانا در داخل ظاهر شود. به فایل> ذخیره همه منابع بروید تا همه منابع را در یک بایگانی zip قرار دهید.

شکل 19: ذخیره متون منبع فایل decompiled

پس از ذخیره منابع ، بایگانی را در یک فهرست جداگانه باز کنید.

شکل 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 (اکثر اشکال زدایان جاوا در این دسته قرار می گیرند) می تواند به ماشین مجازی برنامه Android متصل شود و سپس دستورات اشکال زدایی را بخواند و اجرا کند.

شکل 29: نقطه شکست راه اندازی شده است

تصویر زیر عددی را که قبلاً در کادر متن وارد کرده ایم نشان می دهد.

شکل 30: فهرست متغیرهای نمونه فعلی کلاس

نتیجه

ما نه تنها می توانیم داده ها را در برنامه بخوانیم ، بلکه داده های خود را نیز وارد کنیم. این می تواند مفید باشد ، برای مثال ، اگر بخواهیم جریان اجرای کد را قطع کرده و برخی از قسمت های الگوریتم را دور بزنیم. با کمک اشکال زدایی ، ما می توانیم منطق برنامه را بهتر درک کنیم و آنچه را که برای کاربران عادی قابل دسترسی نیست ، تجزیه و تحلیل کنیم. به عنوان مثال ، مشاهده ویژگی های رمزگذاری در حال استفاده و کلیدهای پویا می تواند بسیار مفید باشد. علاوه بر این ، گاهی اوقات هنگام اشکال زدایی مفید است که بدانید چگونه عملکردها با سیستم فایل یا پایگاه داده تعامل دارند تا متوجه شوید چه اطلاعاتی توسط برنامه ذخیره می شود. چنین دستکاری هایی در هر دستگاه Android بدون امتیاز فوق العاده کاربر در دسترس است.