غالبًا ما تكون الآثار أفضل مصدر للمعلومات عند النظر في مشكلة في الأداء. تسمح لك بتشكيل فرضية حول ماهية المشكلة أين أبدأ البحث.
هناك مستويان للتتبُّع متاح على Android: تتبُّع النظام وطريقة تتبُّعها. التتبع.
ونظرًا لأن نظام تتبع النظام لا يتتبع سوى المناطق التي تم وضع علامة عليها خصيصًا للتتبع، فإنه يتضمن انخفاض النفقات العامة ولا يؤثر بشكل كبير في أداء التطبيق النظام فإن التتبع مفيد لمعرفة المدة التي تستغرقها أقسام معينة من التعليمات البرمجية لتشغيله.
يتتبع أسلوب التتبع كل استدعاء دالة في تطبيقك. هذا مكلف جدًا وبالتالي فهي تؤثر بشكل كبير في أداء التطبيق، لكنها تُظهر إجمالي صورة لما يحدث، والدوال التي يتم استدعاؤها، وعدد المرات يتم استدعاؤها.
لا تتضمن عمليات تتبُّع النظام الدوال الفردية القابلة للإنشاء تلقائيًا. وهي متاحة في عمليات تتبع الطريقة.
نختبر حاليًا وظيفة جديدة لتتبُّع النظام لعرض واجهة برمجة التطبيقات القابلة للإنشاء. الدوال داخل تتبعات النظام. إنها تتيح لك تقليل تدخل النظام التتبع، مع مستويات تتبع الطرق من التفاصيل في التركيب.
الإعداد لتتبُّع المقطوعة الموسيقية
لتجربة تتبع إعادة الإنشاء في مشروعك، تحتاج إلى التحديث إلى على الأقل الإصدارات التالية:
- استوديو Android - زهرة الفلامنغو
- واجهة مستخدم الإنشاء: 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 أو أكبر حجمًا لإكمال عملية الإنشاء التطبيقات. بالإضافة إلى ذلك، لا يتم تشويش سلاسل التتبع هذه حتى تظهر في التتبع، كما هو موضح سابقًا. ويدخلها المحول البرمجي للإنشاء في جميع التطبيقات بدءًا من الإصدار 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 طلبك
يمكنك قياس الأداء باستخدام أداة Jetpack macroBenchmark. والذي يوفر آثارًا كنتائج. لتمكين تتبع التركيب مع ومقاييس الأداء الكلية، يلزمك:
أضِف هذه التبعيات الإضافية إلى وحدة اختبار معيار ماكرو:
implementation("androidx.tracing:tracing-perfetto:1.0.0") implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
إضافة وسيطة أداة
androidx.benchmark.fullTracing.enable=true
قبل عرض مقاييس الأداء التحقق من قياس أداء الماكرو الوسيطات لمزيد من المعلومات عن مقياس الأداء الكلي وسيطات الأدوات.
ملاحظات
يسعدنا معرفة ملاحظاتك حول هذه الميزة وأي أخطاء تعثر عليها. وأي طلبات لديك. يمكنك إرسال ملاحظات وآراء إلينا عن طريق المشكلة .