0Pricing
Android Academy · درس

تصحيح الأخطاء وتحليل الأداء

أتقنوا أدوات تصحيح الأخطاء وتحليل الأداء في Android Studio: نقاط التوقف وLogcat وTimber وMemory Profiler وLeakCanary وCPU Profiler وNetwork Inspector وLayout Inspector.

تصحيح الأخطاء وتحليل الأداء درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.

نظرة عامة على تصحيح الأخطاء

تصحيح الأخطاء هو عملية العثور على الأخطاء وإصلاحها. يوفر Android Studio أدوات قوية:

  • Debugger — إيقاف التنفيذ مؤقتًا، وفحص المتغيرات، والتنقل بين أسطر التعليمات البرمجية
  • Logcat — عرض سجل الجهاز في الوقت الفعلي
  • Layout Inspector — فحص التسلسل الهرمي المباشر لواجهة المستخدم
  • Android Profiler — تحليل وحدة المعالجة المركزية والذاكرة والشبكة
  • Database Inspector — عرض قواعد بيانات Room والاستعلام عنها مباشرةً

Logcat — أول أداة لتصحيح الأخطاء

استخدم Log لطباعة الرسائل في Logcat. استخدم TAG لتصفية السجلات:

import android.util.Log

class UserRepository {
    companion object {
        private const val TAG = "UserRepo"
    }

    fun fetchUsers() {
        Log.d(TAG, "fetchUsers() called")        // Debug
        Log.i(TAG, "Fetching ${users.size} users") // Info
        Log.w(TAG, "Cache is empty")               // Warning
        Log.e(TAG, "Network error: $exception")    // Error
    }
}

Timber — تسجيل أفضل

Timber هو غلاف خفيف حول Log يزيل استدعاءات السجل من إصدارات الإنتاج، ويضيف اسم الفئة تلقائيًا بوصفه TAG:

// app/build.gradle:
// implementation 'com.jakewharton.timber:timber:5.0.1'

// In Application.onCreate():
if (BuildConfig.DEBUG) {
    Timber.plant(Timber.DebugTree())
}

// Usage anywhere in the app (no TAG needed):
Timber.d("User loaded: %s", user.name)
Timber.e(exception, "Failed to fetch data")
Timber.w("Cache miss for key: %s", key)

نقاط التوقف وDebugger

خطوات تصحيح الأخطاء باستخدام نقاط التوقف في Android Studio:

  1. انقر على هامش المحرر (الهامش الأيسر) بجوار سطر من التعليمات البرمجية — ستظهر نقطة حمراء
  2. شغّل التطبيق باستخدام Debug (أيقونة الخطأ) بدلًا من Run
  3. عند وصول التنفيذ إلى نقطة التوقف، سيتوقف مؤقتًا
  4. افحص المتغيرات في لوحة Variables
  5. استخدم Step Over (F8) للتنقل سطرًا تلو الآخر، وStep Into (F7) للدخول إلى دالة

تقييم التعبير

أثناء التوقف عند نقطة توقف، استخدم Evaluate Expression (Alt+F8) لتشغيل تعليمات Kotlin البرمجية ضمن النطاق الحالي. اختبر افتراضاتك دون إعادة التشغيل:

  • تحقق من list.size وuser.email.isNotBlank()
  • استدعِ أي أسلوب واعرض القيمة التي يعيدها
  • افحص الكائنات المعقدة مباشرةً

أداة تحليل الذاكرة

اعثر على تسربات الذاكرة باستخدام Memory Profiler (View → Tool Windows → Profiler):

  • راقب حجم الكومة بمرور الوقت — النمو المستمر يعني غالبًا وجود تسرب
  • فرض تشغيل GC ولاحظ ما إذا كانت الذاكرة تنخفض
  • التقط تفريغًا للكومة لمعرفة الكائنات الموجودة في الذاكرة
  • ابحث عن مثيلات Activity أو Fragment التي كان ينبغي أن تُجمع بواسطة GC

LeakCanary — اكتشاف التسربات تلقائيًا

يكتشف LeakCanary تسربات الذاكرة تلقائيًا، ويبلغ عنها في صورة إشعارات في إصدارات التصحيح:

// app/build.gradle:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'

// That's it — no code changes needed!
// LeakCanary auto-installs via ContentProvider.
// When a leak is detected, it shows a notification with the leak trace.

// Common causes to watch for:
// - Static references to Context/Activity
// - Not releasing ViewBinding in onDestroyView()
// - Listeners registered to singletons but not unregistered

أداة تحليل وحدة المعالجة المركزية

اعثر على اختناقات الأداء باستخدام CPU Profiler:

  • سجّل تتبعًا أثناء تنفيذ إجراء
  • اعرض مخططًا لهبيًا لمعرفة الأساليب التي تستغرق أطول وقت
  • ابحث عن العمليات طويلة التنفيذ على main thread — فهذا يسبب تقطع واجهة المستخدم
  • انقل العمليات الحسابية الثقيلة إلى Dispatchers.IO أو Dispatchers.Default

فاحص الشبكة

يعرض Network Inspector جميع استدعاءات HTTP التي يجريها تطبيقك في الوقت الفعلي:

  • اعرض عنوان URL للطلب، والأسلوب، والترويسات، والنص
  • اعرض رمز الاستجابة، والنص، والتوقيت
  • حدّد الطلبات البطيئة أو الفاشلة
  • يعمل مباشرةً مع OkHttp (الذي يستخدمه Retrofit)

يمكنك الوصول إليه عبر View → Tool Windows → App Inspection → Network Inspector.

فاحص قاعدة البيانات

افحص قاعدة بيانات Room واستعلم عنها مباشرةً على جهاز قيد التشغيل:

  • اعرض الجداول ومحتوياتها
  • شغّل استعلامات SQL مخصصة
  • راقب تغير البيانات أثناء استخدام التطبيق

يمكنك الوصول إليه عبر App Inspection → Database Inspector. ويعمل مع Room على API 26 والإصدارات الأحدث.

فاحص التخطيط

يعرض Layout Inspector عرضًا ثلاثي الأبعاد مباشرًا للتسلسل الهرمي لواجهة المستخدم:

  • حدّد أي عرض لرؤية سماته (الهوامش، والحشو، والنص، واللون)
  • اكتشف العروض المتداخلة أو إعدادات الظهور غير الصحيحة
  • صحّح مشكلات التخطيط دون التخمين

يمكنك الوصول إليه عبر View → Tool Windows → Layout Inspector. اتصل بتطبيق قيد التشغيل على جهاز أو محاكي.

StrictMode

يكتشف StrictMode العمليات البطيئة غير المقصودة على الخيط الرئيسي (مثل قراءات القرص واستدعاءات الشبكة)، ويسجلها أو يتسبب في تعطل التطبيق في إصدارات التصحيح:

// In Application.onCreate() — debug builds only:
if (BuildConfig.DEBUG) {
    StrictMode.setThreadPolicy(
        StrictMode.ThreadPolicy.Builder()
            .detectDiskReads()
            .detectDiskWrites()
            .detectNetwork()
            .penaltyLog()      // log violations instead of crashing
            .build()
    )
}

اختبار سريع

ما الأداة التي تكتشف تسربات الذاكرة تلقائيًا في إصدارات تصحيح Android دون الحاجة إلى تعليمات برمجية إضافية؟

مراجعة: تصحيح الأخطاء وتحليل الأداء

اعثر على المشكلات وأصلحها بكفاءة:

  • Logcat + Timber — تسجيل خفيف، وتتم إزالته تلقائيًا في إصدار الإنتاج
  • Breakpoints + Debugger — إيقاف التنفيذ المباشر مؤقتًا وفحصه
  • Memory Profiler — اكتشاف نمو الكومة وتسربات الذاكرة
  • LeakCanary — اكتشاف التسربات تلقائيًا مع تتبع المكدس
  • CPU Profiler — العثور على الأساليب البطيئة على الخيط الرئيسي
  • Network Inspector — مراقبة استدعاءات HTTP
  • Database Inspector — الاستعلام عن Room مباشرةً
  • StrictMode — اكتشاف عمليات الإدخال والإخراج غير المقصودة على الخيط الرئيسي

تهانينا — لقد أتممت دورة تطوير Android كاملة!

الأسئلة الشائعة

هل درس «تصحيح الأخطاء وتحليل الأداء» مجاني؟

نعم — نص درس «تصحيح الأخطاء وتحليل الأداء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.

ماذا ستتعلم في «تصحيح الأخطاء وتحليل الأداء»؟

أتقنوا أدوات تصحيح الأخطاء وتحليل الأداء في Android Studio: نقاط التوقف وLogcat وTimber وMemory Profiler وLeakCanary وCPU Profiler وNetwork Inspector وLayout Inspector. تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تصحيح الأخطاء وتحليل الأداء»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. اختبار الوحدات باستخدام JUnit
  2. المحاكاة باستخدام Mockito
  3. اختبار الواجهة باستخدام Espresso
  4. تصحيح الأخطاء وتحليل الأداء
← العودة إلى Android Academy