روش‌های موثر برای بهره‌وری هرچه بیشتر پروژه‌های اندرویدی

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

فایل Manifest پروژه‌تان را دریابید

بسیاری از برنامه‌نویسان اندروید می‌دانند که فایل AndroidManifest.xml که در اندروید استودیو دیده می شود، همیشه همان چیزی نیست که بعد از build برنامه به وجود می‌آید. این اتفاق به این دلیل است که کتابخانه‌هایی که در پروژه خود استفاده می‌کنید ممکن است حاوی مجوزهای اضافی uses-permission در manifests خود باشند، که با مجوزهای درج شده در فایل مانیفست شما ترکیب می‌شوند.

برای بررسی فایل manifest خود قبل از ساخت APK می‌توانیم از  ویژگی جدید ارائه شده در اندروید استودیو نسخه 2.2 به بعد به نام Merged Manifest Viewer استفاده کنیم. این ابزار نشان می دهد چگونه AndroidManifest پروژه‌ی شما خود را با وابستگی های پروژه شما ادغام می کند. شما می توانید به این ابزار با رفتن به فایل YourAndroidManifest.xml و کلیک بر روی تب جدید اضافه شده در پایین اندروید استدیو به نام Merged Manifest دسترسی پیدا کنید.

روش موثر در پروژه‌ی اندروید

با Annotations ها دوست باشید و حاشیه نویسی کنید

یکی دیگر از ابزارهای بسیار مفید حاشیه نویسی یا annotations است. شما می‌توانید با اضافه کردن “com.android.support:support-annotations” به فایل build.gradle خود، حاشیه‌نویسی را در پروژه خود استفاده کنید. از این حاشیه نویسی‌های برای هرچه خواناتر شدن کد خود و نیز به منظور پیدا کردن اشکالات و تعریف کدهای کمکی می‌توان استفاده کرد. رایج‌ترین موارد استفاده برای آنها علامت‌گذاری متدها و متغیرها به عنوان nullable و non-nullable است که احتمالا تا الان در پروژه‌ها دیده‌اید و استفاده کرده‌اید.

در زبان برنامه نویسی جاوا، annotation ها، یک نوع متادیتا است که می تواند به کدهای جاوا اضافه شود. کلاس‌ها، متدها، متغیرها، پارامترها و پکیج‌ها ممکن است حاشیه نویسی شوند. Java VM می‌تواند در زمان اجرا به annotation ها از طریق reflection دسترسی پیدا کند.

فقط تغییرات را اعمال کنید

فرض کنید  که روی یک پروژه بزرگ با بیش از ۱۰۰۰ کلاس مختلف و انواع مختلف build کار می‌کنید و می‌خواهید نتیجه‌ی تغییراتی که روی کد می‌دهید را روی موبایل یا شبیه ساز ببینید و اپلیکیشن را تست کنید. بیشترین وقتی که گرفته خواهد شد مربوط به انتظار شما برای build شدن پروژه بر اساس آخرین تغییرات شما خواهد بود. هر re-build زمان زیادی را حتی روی یک سیستم قدرتمند از شما خواهد گرفت. همچنین وقتی که اپلیکیشن اجرا شد، شما باید به اسکرین‌های مختلف بروید تا در نهایت به اسکرینی برسید که می‌خواهید تغییرات را در آن مشاهده کنید که این امر هم به نوبه‌ی خود وقت‌گیر است.

ابزارهایی وجود دارد که به شما کمک می‌کند تا تغییرات سریع‌تر اعمال شود و روند کار راحت‌تر پیش رود. JRebel و Instant Run دو ابزار کارآمد در اندروید هستند. JRebel برای مدت زیادی توسط برنامه‌نویس‌های جاوا استفاده می‌شد و اخیرا پا به دنیای اندروید نیز گذاشت و Instant Run نیزابزار توسعه داده شده توسط گوگل است در از اندروید استدیو نسخه ۲٫۰ به بعد قابل استفاده برای برنامه‌نویس‌ها شد. هر دو ابزارهای مفیدی هستند و یک هدف را دنبال می‌کنند اما برای استفاده از JRebel باید سالانه مبلغی را پرداخت کنید.

زمان اجرای کدها را اندازه بگیرید

یکی دیگر از ویژگی های بسیار مفید در اشکال‌زدایی یا debug نرم‌افزار و تجزیه و تحلیل عملکرد ورودی/خروجی و زمان اجرای متدها است. به منظور اینکه لاگ نویسی هرچه بهینه‌تر انجام شود، از ابزار ساده و  Hugo که توسط جیک وارتون توسعه پیدا کرده استفاده می‌کنیم. استفاده از این ابزارمثل یک افسون عمل می کند در صورتی که فقط بخواهید لاگ‌ها را بخوانید و نخواهید بررسی پیچیده‌تری انجام دهید که در اینصورت مجبورید از ابزارهای پیچیده‌تر و حرفه‌ای‌تر مثل Systrace استفاده کنید.

برای استفاده از Hugo تنها کافیست یک annotation مانند زیر را اضافه کنید:

@DebugLog
public String getName(String first, String lastname) {/* ... */}

و اطلاعات نمایش یافته در لاگ را به صورت زیر مشاهده کنید:

V/Example: --> getName(first="Jake", last="Wharton")
V/Example: <-- getName [16ms] = "Jake Wharton"

اطلاعات logcat را راحت‌تر بخوانید

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

  • خواندن خروجی‌های logcat دشوار است و شما به ابزارهای دیگری نیاز دارید نا متون نوشته شده را زیباتر نمایش دهد.
  • logcat بر اساس Process ID کار می‌کند و شما هر بار که پروژه را deploy می‌کنید یا پروسس را kill می‌کنید، Process ID تغییر می‌کند و شما به لاگ‌های قبلی دسترسی نخواهید داشت که کار را برای شما در برخی موارد دشوار می‌کند.

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

  • قالب‌بندی لاگ‌های خروجی به همراه رنگ‌بندی کاربردی
  • اتصال به اپلیکیشن از طریق package name به جای Process ID

روش موثر در پروژه‌ی اندروید مشاهده‌ی لاگ log

بررسی اپلیکیشن در دستگاه‌های مختلف

همیشه اپلیکیشن خود را در دستگاه‌ها یا شبیه‌سازها با اندرورید Lolipop و بالاتر (API 21+) و نیز نسخه‌های قبلی آن تست کنید تا از صحت عملکرد اجزای مختلف اپلیکیشن مطمئن شوید. این نکته به نظر خیلی بدیهی است اما دلیل بسیاری از فاجعه‌هایی که در اپلیکیشن‌های اندرویدی پیش می‌آید همین است!

حواس‌تان به فایل build.gradle باشد

حتی برنامه‌نویس‌های با تجربه نیز گاهی اوقات فراموش می‌کنند که تنظیمات فایل build.gradle را به روز کنند و یا آن را بهینه‌تر کنند.

  • از شر MavenCenteral خلاص شوید و به جای آن از jcenter به عنوان dependencies repository استفاده کنید. jceneter زمان پاسخگویی کمتری دارد و از MavenCenteral جامع‌تر است.
  • نسخه‌ی پلاگین اندرویدی Gradle را چک کنید. استفاده از آخرین نسخه‌ی آن کارایی بالاتری دارد و امکانات جذابی مانند Instant Run را در اختیار شما می‌گذارد.
  • برای وابستگی‌ها (dependencies) از بازه‌ی ورژن استفاده نکنید (مثل +.23) و همیشه ورژن دقیق را استفاده کنید (مثل 23.4.0) تا تغییرات API آن‌ها در نسخه‌های جدید باعث بروز مشکلات در پروژه‌ی شما نشود.

دیدگاهتان را بنویسید