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

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

يتوفّر مستويان من التتبُّع على الأجهزة التي تعمل بنظام التشغيل Android، وهما: تتبُّع النظام وتتبُّع الطريقة.

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

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

لا تتضمّن عمليات تتبُّع النظام تلقائيًا وظائف فردية قابلة للإنشاء. وتتوفّر في آثار الأنشطة.

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

الإعداد لتتبُّع التركيبة

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

  • استوديو Android - فلامينغو
  • إنشاء واجهة المستخدم: 1.3.0
  • برنامج التحويل البرمجي لإنشاء المحتوى: 1.3.0

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

بالإضافة إلى ذلك، يجب إضافة تبعية جديدة إلى ميزة "تتبُّع وقت التشغيل Compose":

implementation("androidx.compose.runtime:runtime-tracing:1.0.0-beta01")

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

تتبُّع أداء النظام

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

  1. فتح المحلل:

    استوديو Android - بدء التحليل
    الشكل 2. "استوديو Android" - بدء التحليل
  2. انقر على المخطط الزمني لوحدة المعالجة المركزية (CPU).

    محلّل استوديو Android - المخطط الزمني لوحدة المعالجة المركزية (CPU)
    الشكل 3. محلّل استوديو Android - المخطط الزمني لوحدة المعالجة المركزية (CPU)
  3. انتقِل بتطبيقك إلى واجهة المستخدم التي تريد تتبُّعها، ثم اختَر System Trace ثم Register (تسجيل).

    خيارات التتبُّع: تتبُّع النظام
    الشكل 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();

}

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

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

دقة التوقيت

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

التقاط آثار من الوحدة الطرفية

يمكن تسجيل آثار أنشطة التكوين من الوحدة الطرفية. لإجراء ذلك، عليك تنفيذ الخطوات التي يتّبعها "استوديو Android" عادةً بشكل تلقائي.

إضافة التبعيات

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

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> التتبُّع من الجهاز (الموقع الجغرافي المحدَّد في أمر record)

  2. افتح في Perfetto.

تسجيل تتبُّع باستخدام "مقياس الأداء في Jetpack"

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

  1. أضِف هذه التبعيات الإضافية إلى وحدة اختبار مقياس الأداء الفائق:

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

ملاحظات

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