غالبًا ما تكون عمليات التتبُّع أفضل مصدر للمعلومات عند البحث لأول مرة عن مشكلة في الأداء. تسمح لك هذه الأدوات بوضع فرضية حول طبيعة المشكلة ومكان بدء البحث عن حلّ لها.
يتوفّر مستويان من التتبُّع على نظام التشغيل Android، وهما تتبُّع النظام وتتبُّع الأسلوب.
وبما أنّ ميزة "تتبُّع نشاط النظام" تتتبّع فقط المناطق التي تم وضع علامة عليها خصيصًا لتتبُّع النشاط، فإنّها تتطلّب موارد قليلة ولا تؤثّر بشكل كبير في أداء تطبيقك. تتبُّع النظام مفيد لمعرفة المدة التي تستغرقها أقسام معيّنة من الرمز البرمجي لتنفيذها.
تتتبّع هذه الطريقة كل استدعاء دالة في تطبيقك، وهي مكلفة جدًا، لذا تؤثّر بشكل كبير في أداء تطبيقك، ولكنّها تمنحك صورة كاملة لما يحدث، وما هي الدوال التي يتم استدعاؤها، وعدد مرات استدعائها.
بشكلٍ تلقائي، لا تتضمّن عمليات تتبُّع النظام دوال برمجية فردية قابلة للإنشاء. تتوفّر هذه البيانات في عمليات تتبُّع الطرق.
تعرض عملية تتبُّع الإصدار الدوال البرمجية المركّبة داخل عمليات تتبُّع النظام. تمنحك هذه الميزة مستوى منخفضًا من التطفّل من خلال تتبُّع النظام، مع مستويات تفصيلية لتتبُّع الدوال البرمجية في التركيب.
إعداد ميزة تتبُّع الإنشاء
لتجربة تتبُّع إعادة التركيب في مشروعك، عليك التحديث إلى الإصدارات التالية على الأقل:
- استوديو Android Flamingo
- Compose UI: 1.3.0
- إصدار Compose Compiler: 1.3.0
يجب أن يكون مستوى واجهة برمجة التطبيقات (API) على الجهاز أو المحاكي الذي يتم تشغيل التتبُّع عليه 30 على الأقل.
بالإضافة إلى ذلك، عليك إضافة اعتمادية جديدة إلى Compose Runtime Tracing:
implementation("androidx.compose.runtime:runtime-tracing:1.10.5")
إذا كنت تستخدم قائمة مواد إنشاء Compose، ليس عليك تحديد الإصدار:
val composeBom = platform("androidx.compose:compose-bom:2026.03.00")
implementation(composeBom)
// ...
// dependency without a version
implementation("androidx.compose.runtime:runtime-tracing")
باستخدام هذه التبعية، عندما تسجّل تتبُّعًا للنظام يتضمّن إعادة التركيب، يمكنك الاطّلاع على الدوال القابلة للإنشاء تلقائيًا.
تسجيل عملية تتبُّع النظام
لتسجيل تتبُّع النظام والاطّلاع على عملية تتبُّع إعادة التركيب الجديدة أثناء عملها، اتّبِع الخطوات التالية:
افتح أداة Profiler باتّباع الخطوات التالية:
الشكل 2. استوديو Android - بدء إنشاء الملفات الشخصية انقر على المخطّط الزمني لوحدة المعالجة المركزية.
الشكل 3. أداة "محلّل الأداء" في "استوديو Android" - المخطط الزمني لوحدة المعالجة المركزية انتقِل في تطبيقك إلى واجهة المستخدم التي تريد تتبُّعها، ثم اختَر تتبُّع النظام وتسجيل.
الشكل 4. خيارات التتبُّع - تتبُّع النظام استخدِم تطبيقك لإعادة الإنشاء وإيقاف التسجيل. بعد معالجة عملية التتبُّع وظهورها، من المفترض أن تتمكّن الآن من رؤية العناصر القابلة للإنشاء في عملية تتبُّع إعادة التركيب. يمكنك استخدام لوحة المفاتيح والماوس للتكبير والتصغير والتنقّل في المخطط التفصيلي. إذا لم تكن معتادًا على التنقّل في المخطط التفصيلي، يمكنك الاطّلاع على مستندات تسجيل عمليات التتبُّع.
الشكل 5. تتبُّع النظام يؤدي النقر مرّتين على عنصر قابل للإنشاء في الرسم البياني إلى نقلك إلى رمز المصدر الخاص به.
يمكنك أيضًا الاطّلاع على العناصر القابلة للإنشاء في "مخطط Flame" مع رقم الملف والسطر:
الشكل 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 تلقائيًا عادةً.
إضافة التبعيات
أولاً، أضِف التبعيات الإضافية إلى تطبيقك.
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>التتبُّع من الجهاز (الموقع الجغرافي المحدّد في أمر التسجيل).افتح الملف في Perfetto.
تسجيل عملية تتبُّع باستخدام Jetpack Macrobenchmark
يمكنك قياس الأداء باستخدام Jetpack Macrobenchmark، التي توفّر عمليات تتبُّع كنتائج. لتفعيل تتبُّع الإنشاء باستخدام macrobenchmarks، عليك إجراء ما يلي:
أضِف الاعتمادات الإضافية التالية إلى وحدة اختبار Macrobenchmark:
implementation("androidx.tracing:tracing-perfetto:1.0.0") implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")أضِف وسيط
androidx.benchmark.fullTracing.enable=trueلقياس حالة التطبيق قبل إجراء اختبارات مقياس الأداء. اطّلِع على وسيطات أدوات Macrobenchmark للحصول على مزيد من المعلومات حول وسيطات أدوات Macrobenchmark.
الملاحظات
يسرّنا تلقّي ملاحظاتك حول هذه الميزة وأي أخطاء تجدها فيها وأي طلبات لديك. يمكنك إرسال ملاحظاتك إلينا باستخدام أداة تتبُّع المشاكل.