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

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

هناك مستويان من التتبُّع متاح في نظام التشغيل Android: تتبُّع النظام وتتبُّع الطرق.

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

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

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

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

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

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

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

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

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

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

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

تتبُّع النظام

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

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

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

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

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

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

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

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

    رسم بياني مفصَّل
    الشكل 6. الرسم البياني الخطي

محاذير

النفقات العامة لحجم ملفات APK

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

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

-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" تلقائيًا بالنيابة عنك.

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

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

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 طلبك

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

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

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

ملاحظات

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