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