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

۱۹۸ بازدید
آخرین به‌روزرسانی: ۲۹ شهریور ۱۴۰۲
زمان مطالعه: ۶ دقیقه
ابزارهای دیباگ کردن اپلیکیشن های اندرویدی — راهنمای کاربردی

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

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

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

  • Android Profiler : یک پروفایلر برای اندروید استودیو است.
  • Facebook Stetho : پل ارتباطی برای اپلیکیشن‌های اندرویدی است.
  • DebugDrawer : یک درآور برای توسعه سریع است.
  • AppSpector : ابزار دیباگ برای اندروید و iOS است.

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

دیباگ در اندروید

ابزار پروفایلر اندروید استودیو داده‌های لحظه‌ای را برای کمک به پروفایل کردن لایه شبکه و درک شیوه استفاده از CPU، حافظه، و باتری در اپلیکیشن ارائه می‌کند. از اندروید استودیو نسخه 3.0 به بعد می‌توان از سرویس پروفایل کردن پیشرفته استفاده کرد که وقتی فعال می‌شود که اپلیکیشن روی دستگاه‌های با اندروید نسخه 7.1 و بالاتر اجرا شود.

قابلیت‌ها

پنجره پروفایلر میزان مصرف CPU، حافظه، شبکه و باتری را نمایش می‌دهد و ظاهر آن به صورت زیر است:

دیباگ در اندروید

بازبینی شبکه

اگر روی تایملاین شبکه کلیک کنید، پروفایل اطلاعات تفصیلی در مورد درخواست‌ها را نمایش می‌دهد.

دیباگ در اندروید

این پنجره شامل برگه «نمای اتصال» (Connection View) است که لیستی از درخواست‌ها را بر حسب اندازه، زمان، وضعیت، درخواست، پاسخ و زمان نشان می‌دهد.

بازبینی حافظه

پروفایلر حافظه گرافی از مصرف RAM نشان می‌دهد و مانند زیر است:

دیباگ در اندروید

با استفاده از این قابلیت می‌توانید تابع‌هایی را که اشیای اضافی تولید می‌کنند پیدا کنید و مقدار رویدادهای garbage collection را کاهش دهید.

پروفایل کردن پیشرفته

همچنین می‌توانید پیکربندی‌های اپلیکیشن خود را ویرایش و اجرا کنید تا گزینه پروفایلینگ پیشرفته را مانند تصویر زیر فعال کنید.

دیباگ در اندروید

قابلیت‌هایی که از سوی پروفایلینگ پیشرفته عرضه می‌شوند، شامل موارد زیر هستند:

  • همه پنجره‌های پروفایلر از تایملاین رویداد پشتیبانی می‌کنند.
  • پروفایلر حافظه تعداد اشیای تخصیص‌یافته را نمایش می‌دهد.
  • پروفایلر حافظه رویدادهای garbage collection را نمایش می‌دهد.
  • پروفایلر حافظه جزییاتی در مورد همه فایل‌های انتقال‌یافته نشان می‌دهد.

معایب و مزایا

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

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

Facebook Stetho

دیباگ در اندروید

Stetho یک پل ارتباطی برای اندروید است که امکان دسترسی به ابزارهای توسعه‌دهنده کروم را برای بازبینی اپلیکیشن در اختیار ما قرار می‌دهد.

یکپارچه‌سازی

برای دانلود کتابخانه اصلی Stetho در پروژه باید خط زیر را به بلوک dependencies اضافه کنید:

implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'

برای مقداردهی اولیه Stetho باید خط زیر را به متد onCreate کلاس Application اپلیکیشن خود اضافه کنید:

Stetho.initializeWithDefaults(this);

برای این که ;(Stetho.initializeWithDefaults(this بتواند داده‌های شبکه را با کلاینت OkHttp نمایش دهد باید یک interceptor مانند مورد زیر اضافه کنید:

1new OkHttpClient.Builder()
2    .addNetworkInterceptor(new StethoInterceptor())
3    .build()

قابلیت‌ها

Stetho امکان بازبینی لایه‌های شبکه و ذخیره‌سازی را در اپلیکیشن شما فراهم می‌سازد:

دیباگ در اندروید

بدین ترتیب می‌توان با استفاده از برگه‌ها بین ابزارهای بازبینی مختلف سوئیچ کرد.

بازبینی شبکه

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

دیباگ در اندروید

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

دیباگ در اندروید

بازبینی پایگاه داده

برگه Resource جدول SQLite اپلیکیشن شما را به صورت تصویر زیر نشان می‌دهد:

دیباگ در اندروید

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

پروژه نمونه

می‌توانید پروژه نمونه را در این لینک (+) مشاهده کنید.

مزایا و معایب

Stetho ابزار رایگانی است که امکان بازبینی لایه‌های شبکه و ذخیره‌سازی را می‌دهد. همچنین می‌توانید کتابخانه Stetho-Realm را برای بررسی پایگاه داده Realm نصب کنید. Stetho رایگان و با کاربری آسان است اما شامل باگ است و رابط کاربری آن زشت بوده و کارکرد ضعیفی دارد.

DebugDrawer

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

یکپارچه‌سازی

برای دانلود DebugDrawer باید خط زیر را به بلوک dependencies فایل build.gradle اضافه کنید:

debugImplementation ‘io.palaima.debugdrawer:debugdrawer:0.8.0’

همچنین می‌توانید کارکرد درآور ناوبری را با افزودن ماژول‌های مختلف به پروژه پیکربندی کنید. برای نمونه اگر بخواهید لایه شبکه اپلیکیشن خود را با افزودن خط زیر پیکربندی کنید:

implementation 'io.palaima.debugdrawer:debugdrawer-okhttp3:0.8.0'

برای مقداردهی DebugView باید خطوط زیر را به متد onCreate در Actibity خود اضافه کنید:

1SwitchAction switchAction = new SwitchAction("Test switch", new SwitchAction.Listener() {
2 @Override
3 public void onCheckedChanged(boolean value) {
4  Toast.makeText(MainActivity.this, "Switch checked", Toast.LENGTH_LONG).show();
5 }
6});
7
8ButtonAction buttonAction = new ButtonAction("Test button", new ButtonAction.Listener() {
9 @Override
10 public void onClick() {
11  Toast.makeText(MainActivity.this, "Button clicked", Toast.LENGTH_LONG).show();
12 }
13});
14
15SpinnerAction < String > spinnerAction = new SpinnerAction < > (
16 Arrays.asList("First", "Second", "Third"),
17 new SpinnerAction.OnItemSelectedListener < String > () {
18  @Override public void onItemSelected(String value) {
19   Toast.makeText(MainActivity.this, "Spinner item selected - " + value, Toast.LENGTH_LONG).show();
20  }
21 }
22);
23
24debugDrawer = new DebugDrawer.Builder(this)
25 .modules(
26  new ActionsModule(switchAction, buttonAction, spinnerAction),
27  new FpsModule(Takt.stock(getApplication())),
28  new LocationModule(this),
29  new ScalpelModule(this),
30  new TimberModule(),
31  new OkHttp3Module(okHttpClient),
32  new PicassoModule(picasso),
33  new GlideModule(Glide.get(getContext())),
34  new DeviceModule(this),
35  new BuildModule(this),
36  new NetworkModule(this),
37  new SettingsModule(this)
38 ).build();

قابلیت‌ها

درآور دیباگ ناوبری بسته به پیکربندی شما ممکن است به صورت زیر نمایان شود:

دیباگ در اندروید

DebugDrawer امکان بررسی سریع اطلاعاتی در مورد دستگاه، تغییر دادن تنظیمات یا شبیه‌سازی مکان را می‌دهد.

بازبینی شبکه

DebugView در پس‌زمینه از کتابخانه Chuck استفاده می‌کند و امکان بازبینی درخواست‌های شبکه را فراهم می‌سازد.

دیباگ در اندروید

کتابخانه Chuck فهرستی از همه درخواست‌ها را نمایش می‌دهد و امکان بررسی جزییات را فراهم می‌سازد.

پروژه نمونه

برای دانلود پروژه نمونه به این صفحه (+) مراجعه کنید.

مزایا و معایب

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

AppSpector

دیباگ در اندروید

AppSpector یک سرویس برای دیباگ کردن اپلیکیشن‌های iOS و اندروید است. که امکان بازبینی و کنترل اپلیکیشن‌ها را از راه دور به صوت همزمان و با استفاده از یک رابط ساده فراهم می‌کند. برای مطالعه بیشتر به مستندات (+) کامل آن مراجعه کنید.

یکپارچه‌سازی

برای آغاز کار با AppSpector باید یک فرم ثبت نام ساده را پر کنید و پروژه خود را ایجاد یا یک سازمان اضافه کنید. برای یکپارچه‌سازی AppSpector در اپلیکیشن باید فایل build.gradle را به صورت زیر تغییر دهید:

1buildscript {
2    repositories {
3        jcenter()
4        google()
5        maven {
6            url "https://maven.appspector.com/artifactory/android-sdk"
7        }
8    }
9
10    dependencies {
11        classpath "com.appspector:android-sdk-plugin:1.+"
12    }
13}
14
15apply plugin: 'com.android.application'
16// Put AppSpector plugin after Android plugin
17apply plugin: 'com.appspector.sdk'
18
19repositories {
20    maven {
21        url "https://maven.appspector.com/artifactory/android-sdk"
22    }
23}
24
25dependencies {
26    implementation "com.appspector:android-sdk:1.+"
27}

برای مقداردهی AppSpector در متد onCreate در کلاس Application اپلیکیشن به صورت زیر عمل کنید:

1AppSpector
2        .build(this)
3        .withDefaultMonitors()           .run("android_OGMyYzA3NGYtNDkxNy00ZWRiLTgxOTktNjQ5YjIzMTZjOWM4");

قابلیت‌ها

زمانی که اپلیکیشنتان را اجرا می‌کنید یک نشست جدید ایجاد می‌شود و آن را می‌توانید در پنجره اصلی AppSpector در مرورگر مشاهده کنید.

دیباگ در اندروید

زمانی که روی نشست خاصی کلیک کنید، می‌توانید اپلیکیشنتان را با استفاده از مانیتورهای متفاوت بازبینی کنید.

بازبینی عملکرد

پنجره Performance گراف‌هایی با معیارهای مختلف مانند CPU، حافظه، شبکه، دیسک، FPS و مصرف باتری نمایش می‌دهد.

دیباگ در اندروید

این مانیتور به تشخیص نشت منابع، مصرف دیسک و FPS کمک می‌کند.

بازبینی شبکه

مانیتور Network جدولی نمایش می‌دهد که در آن درخواست‌ها وجود دارند و بدین ترتیب می‌توانید روی ردیف خاصی کلیک کرده و اطلاعات تکمیلی در مورد هر درخواست و پاسخ آن را مشاهده کنید.

دیباگ در اندروید

این پنجره شامل کارکردهای جستجو، فیلتر و اکسپورت نیز هست.

دیباگ در اندروید

در صورتی که اپلیکیشن بزرگی داشته باشید، استفاده از آن همچنان کاملاً آسان خواهد بود.

بازبینی پایگاه داده

مانیتور SQLite امکان بازبینی یک پایگاه داده و فراخوانی درخواست‌های SQL را می‌دهد.

دیباگ در اندروید

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

مزایا و معایب

AppSpector رابط کاربری کاملی دارد. ناوبری در این برنامه و یافتن مانیتور مورد نیاز کاملاً آسان است. شما می‌توانید نشست خود را با کپی کردن آدرس URL از مرورگر و ارسال کردن آن، با هم‌تیمی‌ها به اشتراک بگذارید. نشست مشترک در دسترس همه اعضا در یک سازمان خواهد بود. AppSpector مانیتورهای کاملاً مختلفی با گزینه‌های کارآمد جستجو فیلتر دارد. دوره استفاده آزمایشی رایگان 14 روز است. AppSpector از هر دو پلتفرم iOS و اندروید پشتیبانی می‌کند.

سخن پایانی

بدین ترتیب به پایان این راهنما در مورد ابزارهای دیباگ کردن اندروید رسیدیم. در این نوشته به اشتراک تجربیات در مورد کاربرد پروفایلرها پرداختیم و توضیح دادیم که چرا باید تلاش کنیم خودمان یکی از آن‌ها را بسازیم.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۳ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
proandroiddev
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *