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