تتبُّع المقطوعة الموسيقية

تُعدّ عمليات التتبُّع غالبًا أفضل مصدر للمعلومات عند البحث لأول مرة عن مشكلة في الأداء. تسمح لك هذه الأدوات بوضع فرضية حول طبيعة المشكلة ومكان بدء البحث عنها.

يتوفّر مستويان من التتبُّع على Android: تتبُّع النظام وتتبُّع الطريقة.

وبما أنّ ميزة "تتبُّع نشاط النظام" تتتبّع فقط المناطق التي تم وضع علامة عليها خصيصًا لتتبُّع النشاط، فإنّها تتطلّب موارد قليلة ولا تؤثّر بشكل كبير في أداء تطبيقك. تُعدّ عملية تتبُّع النظام رائعة لمعرفة المدة التي تستغرقها أقسام معيّنة من الرمز البرمجي لتنفيذها.

يتتبّع تتبُّع الأسلوب كل استدعاء دالة في تطبيقك، وهو أمر مكلف للغاية، وبالتالي يؤثر بشكل كبير في أداء تطبيقك، ولكنّه يمنحك صورة كاملة لما يحدث، وما هي الدوال التي يتم استدعاؤها، وعدد مرات استدعائها.

بشكلٍ تلقائي، لا تتضمّن عمليات تتبُّع النظام الدوال الفردية القابلة للإنشاء. تتوفّر هذه البيانات في عمليات تتبُّع الطرق.

تعرض ميزة "تتبُّع الإنشاء" الدوال القابلة للإنشاء داخل عمليات تتبُّع النظام. توفّر لك هذه الميزة مستوى منخفضًا من التطفّل من خلال تتبُّع النظام، مع مستويات تفصيلية لتتبُّع الطرق في التركيب.

إعداد تتبُّع المقطوعة الموسيقية

لتجربة تتبُّع إعادة الإنشاء في مشروعك، عليك التحديث إلى الإصدارات التالية على الأقل:

  • ‫Android Studio Flamingo
  • Compose UI: 1.3.0
  • إصدار أداة تجميع Compose‏: 1.3.0

يجب أن يكون مستوى واجهة برمجة التطبيقات (API) للجهاز أو المحاكي الذي يتم تشغيل التتبُّع عليه 30 على الأقل.

بالإضافة إلى ذلك، عليك إضافة تبعية جديدة إلى Compose Runtime Tracing:

implementation("androidx.compose.runtime:runtime-tracing:1.8.1")

إذا كنت تستخدم Compose BOM، ليس عليك تحديد الإصدار:

val composeBom = platform("androidx.compose:compose-bom:2025.05.00")
implementation(composeBom)
// ...

// dependency without a version
implementation("androidx.compose.runtime:runtime-tracing")

باستخدام هذه التبعية، عندما تسجّل تتبُّعًا للنظام يتضمّن إعادة التركيب، يمكنك الاطّلاع على الدوال القابلة للإنشاء تلقائيًا.

تسجيل عملية تتبُّع النظام

لتسجيل تتبُّع النظام والاطّلاع على عملية تتبُّع إعادة التركيب الجديدة أثناء تنفيذها، اتّبِع الخطوات التالية:

  1. افتح أداة تحليل الأداء:

    ‫Android Studio - بدء إنشاء الملفات الشخصية
    الشكل 2. ‫Android Studio - بدء إنشاء الملفات الشخصية
  2. انقر على المخطّط الزمني لوحدة المعالجة المركزية.

    أداة Profiler في "استوديو Android" - المخطط الزمني لوحدة المعالجة المركزية
    الشكل 3. أداة Profiler في "استوديو Android" - المخطط الزمني لوحدة المعالجة المركزية
  3. انتقِل في تطبيقك إلى واجهة المستخدم التي تريد تتبُّعها، ثم اختَر تتبُّع النظام وتسجيل.

    خيارات التتبُّع - تتبُّع النظام
    الشكل 4 خيارات التتبُّع - تتبُّع النظام
  4. استخدِم تطبيقك لإعادة الإنشاء وإيقاف التسجيل. بعد معالجة عملية التتبُّع وظهورها، من المفترض أن تتمكّن الآن من رؤية العناصر القابلة للإنشاء في عملية تتبُّع إعادة التركيب. يمكنك استخدام لوحة المفاتيح والماوس للتكبير والتصغير والتنقّل في جميع أنحاء التتبُّع. إذا لم تكن معتادًا على التنقّل في التتبُّع، يمكنك الاطّلاع على مستندات تسجيل عمليات التتبُّع.

    تتبُّع النظام
    الشكل 5. تتبُّع النظام

    يؤدي النقر مرّتين على عنصر قابل للإنشاء في الرسم البياني إلى نقلك إلى رمز المصدر الخاص به.

  5. يمكنك أيضًا الاطّلاع على العناصر القابلة للإنشاء في "مخطط اللهب" إلى جانب رقم الملف والسطر:

    الرسم البياني المفصَّل لأداء الرموز
    الشكل 6. الرسم البياني المفصّل لأداء الرموز

المحاذير

الحِمل الزائد لحجم حزمة APK

على الرغم من أنّنا سعينا إلى تقليل النفقات العامة للميزة قدر الإمكان، سيحدث زيادة في حجم حِزم APK لتطبيقات Compose بسبب تتبُّع السلاسل المضمّنة في حِزمة APK من خلال برنامج التجميع الخاص بـ Compose. ويمكن أن تكون الزيادة في الحجم صغيرة نسبيًا إذا كان تطبيقك لا يستخدم الكثير من Compose، أو أكبر إذا كان تطبيقًا كاملاً يستند إلى Compose. بالإضافة إلى ذلك، يتم إزالة التشويش عن سلاسل التتبُّع هذه لكي تظهر في أدوات التتبُّع، كما هو موضّح سابقًا. ويُدرجها برنامج التجميع في Compose في جميع التطبيقات، بدءًا من الإصدار 1.3.0.

يمكن إزالة سلاسل التتبُّع في إصدارك العلني من خلال إضافة قاعدة Proguard التالية:

-assumenosideeffects public class androidx.compose.runtime.ComposerKt {

   boolean isTraceInProgress();

   void traceEventStart(int,int,int,java.lang.String);

   void traceEventStart(int,java.lang.String);

   void traceEventEnd();

}

قد تتغير هذه الدوال في المستقبل، ولكن سيتم ذكر أي تغييرات في ملاحظات إصدار "الكتابة".

يُرجى العِلم أنّ إبقاء الدوال البرمجية مع تحمّل بعض تكلفة حجم حزمة APK يضمن أنّ حزمة APK التي يتم إنشاء ملف تعريف لها هي نفسها التي يشغّلها مستخدمو التطبيق.

التوقيت الدقيق

للحصول على معلومات دقيقة عن الأداء، كما هو الحال مع أي اختبار أداء، عليك جعل التطبيق profileable وnon-debuggable وفقًا للتطبيقات التي يمكن تحليل أدائها.

تسجيل تتبُّع من الجهاز

يمكن تسجيل تتبُّع التركيب من الجهاز. لإجراء ذلك، عليك تنفيذ الخطوات التي ينفّذها Android Studio تلقائيًا عادةً.

إضافة عناصر تابعة

أولاً، أضِف التبعيات الإضافية إلى تطبيقك.

implementation("androidx.tracing:tracing-perfetto:1.0.0")
implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")

إنشاء أمر تسجيل

  1. أنشئ أمر تسجيل باستخدام Perfetto.
  2. أضِف قسم مصدر بيانات track_event يدويًا وفقًا للمثال التالي:

    adb shell perfetto \
      -c - --txt \
      -o /data/misc/perfetto-traces/trace \
    <<EOF
    buffers: {
        size_kb: 63488
        fill_policy: RING_BUFFER
    }
    buffers: {
        size_kb: 2048
        fill_policy: RING_BUFFER
    }
    data_sources: {
        config {
            name: "track_event"
        }
    }
    duration_ms: 10000
    flush_period_ms: 30000
    incremental_state_config {
        clear_period_ms: 5000
    }
    EOF

تسجيل عملية تتبُّع

  1. شغِّل التطبيق وجهِّز القسم الذي تريد تتبُّعه.
  2. فعِّل تتبُّع الأخطاء في التطبيق عن طريق إصدار بث.

    # set app package variable, e.g. com.google.samples.apps.nowinandroid.debug
    # can be found through `adb shell ps -ef` or `adb shell cmd package list packages`
    package=<your app process>
    
    # issue a broadcast to enable tracing
    adb shell am broadcast \
    -a androidx.tracing.perfetto.action.ENABLE_TRACING \
    $package/androidx.tracing.perfetto.TracingReceiver
    
  3. ابدأ أمر التسجيل الذي أنشأته سابقًا.

فتح عملية التتبُّع

  1. adb pull <location> التتبُّع من الجهاز (الموقع الجغرافي المحدّد في أمر التسجيل).

  2. افتح الملف في Perfetto.

تسجيل تتبُّع باستخدام Jetpack Macrobenchmark

يمكنك قياس الأداء باستخدام Jetpack Macrobenchmark، الذي يوفّر عمليات تتبُّع كنتائج. لتفعيل تتبُّع التركيب باستخدام macrobenchmarks، عليك إجراء ما يلي:

  1. أضِف التبعيات الإضافية التالية إلى وحدة اختبار Macrobenchmark:

    implementation("androidx.tracing:tracing-perfetto:1.0.0")
    implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
    
  2. أضِف وسيط androidx.benchmark.fullTracing.enable=true للأدوات قبل إجراء اختبارات الأداء. اطّلِع على وسيطات أدوات Macrobenchmark للحصول على مزيد من المعلومات حول وسيطات أدوات Macrobenchmark.

الملاحظات

يسرّنا تلقّي ملاحظاتك حول هذه الميزة وأي أخطاء تجدها فيها وأي طلبات لديك. يمكنك إرسال ملاحظاتك إلينا باستخدام أداة تتبُّع المشاكل.