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