غالبًا ما تكون عمليات التتبّع هي أفضل مصدر للمعلومات عند النظر في مشكلة تتعلّق بالأداء لأول مرة. وتسمح لك بصياغة فرضية عن المشكلة وتحديد مكان البدء في البحث.
هناك مستويان لتتبُّع عمليات التشغيل متوافقان مع Android: تتبُّع النظام وتتبُّع الطريقة.
ونظرًا لأن نظام تتبع النظام لا يتتبع سوى المناطق التي تم وضع علامة عليها خصيصًا للتتبع، فإنه يتضمن انخفاض النفقات العامة ولا يؤثر بشكل كبير في أداء التطبيق إنّ تتبُّع النظام يُعدّ أمرًا رائعًا لمعرفة الوقت الذي تستغرقه أقسام معيّنة من الرمز البرمجي لتشغيلها.
تتبُّع الطريقة يتتبّع كل طلب وظيفي في تطبيقك. وهذا إجراء مكلف للغاية ويؤثّر بشكل كبير في أداء تطبيقك، ولكنه يمنحك صورة كاملة عن ما يحدث والوظائف التي يتمّ طلبها ومعدّل تكرار طلبها.
لا تتضمن عمليات تتبُّع النظام تلقائيًا وظائف فردية قابلة للإنشاء. وهي متاحة في عمليات تتبُّع الطرق.
نختبر حاليًا وظيفة تتبُّع جديدة للنظام لعرض وظائف قابلة للتجميع داخل عمليات تتبُّع النظام. إنها تتيح لك تقليل تدخل النظام التتبع، مع مستويات تتبع الطرق من التفاصيل في التركيب.
الإعداد لتتبُّع التركيب
لتجربة تتبع إعادة الإنشاء في مشروعك، تحتاج إلى التحديث إلى على الأقل الإصدارات التالية:
- Android Studio Flamingo
- واجهة مستخدم الإنشاء: 1.3.0
- محوّل إنشاء المحتوى: 1.3.0
يجب أيضًا أن يكون الجهاز أو المحاكي الذي تستخدمه لتتبُّع نشاطك مضبوطًا على الحد الأدنى من واجهة برمجة التطبيقات. 30-
بالإضافة إلى ذلك، عليك إضافة تبعية جديدة إلى تتبُّع بيئة تشغيل Compose:
implementation("androidx.compose.runtime:runtime-tracing:1.0.0-beta01")
باستخدام هذه التبعية، عندما تقوم بتتبع نظام يتضمن إعادة التركيب، يمكنك رؤية الدوال القابلة للإنشاء تلقائيًا.
تتبُّع النظام
لإجراء عملية تتبُّع للنظام والاطّلاع على عملية تتبُّع إعادة التركيب الجديدة، اتّبِع الخطوات التالية:
فتح المحلِّل:
انقر على المخطط الزمني لوحدة المعالجة المركزية (CPU).
انتقِل إلى تطبيقك إلى واجهة المستخدم التي تريد تتبُّعها، ثم اختَر النظام التتبُّع وRecord (تسجيل)
استخدِم تطبيقك لإعادة التركيب وإيقاف التسجيل. بعد معالجة التتبُّع وظهوره، من المفترض أن تتمكّن الآن من الاطّلاع على العناصر القابلة للتجميع في تتبُّع إعادة التركيب. يمكنك استخدام لوحة المفاتيح والماوس للتكبير/التصغير والعرض الشامل حول آثار الأنشطة إذا لم تكن معتادًا على التنقّل في سجلّ تتبُّع، راجِع القسم مستندات تسجيل آثار الأنشطة
يؤدي النقر مرّتين على عنصر قابل للتجميع في الرسم البياني إلى نقلك إلى رمزه المصدر.
يمكنك أيضًا الاطّلاع على العناصر القابلة للتجميع في مخطّط Flame Chart مع رقم الملف والخط:
المحاذير
حجم حزمة 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")
إنشاء طلب تسجيل
- يجب إنشاء أمر سجلّ باستخدام Perfetto.
إضافة قسم مصدر البيانات
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
تسجيل تتبع
- افتح التطبيق وأعِد القسم الذي تريد تتبُّعه.
يمكنك تفعيل التتبُّع في التطبيق من خلال إصدار بث.
# 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
ابدأ أمر التسجيل الذي أنشأته سابقًا.
فتح عملية التتبّع
adb pull <location>
التتبُّع من الجهاز (الموقع الجغرافي المحدّد في الأمر record)افتح في Perfetto.
تسجيل عملية تتبُّع باستخدام مقياس Jetpack طلبك
يمكنك قياس الأداء باستخدام أداة Jetpack macroBenchmark. والذي يوفر آثارًا كنتائج. لتفعيل ميزة تتبُّع التركيبات باستخدام قياسات الأداء الإجمالية، عليك إجراء ما يلي:
أضِف هذه التبعيات الإضافية إلى وحدة اختبار معيار ماكرو:
implementation("androidx.tracing:tracing-perfetto:1.0.0") implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
أضِف
androidx.benchmark.fullTracing.enable=true
مَعلمة أداة القياس قبل إجراء اختبارات الأداء. اطّلِع على مَعلمات أداة قياس الأداء على مستوى التطبيق للحصول على مزيد من المعلومات عن مَعلمات أداة قياس الأداء على مستوى التطبيق .
ملاحظات
يسرّنا معرفة ملاحظاتك حول هذه الميزة وأي أخطاء تواجهها فيها، وأي طلبات لديك. يمكنك إرسال ملاحظات وآراء إلينا عن طريق المشكلة .