مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 9 سبتمبر 2026 | 1.5.0 | - | - | - |
تحديد الاعتماديات
لإضافة اعتمادية على Benchmark، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle الخاص بوحدة Macrobenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.1" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.1") }
اختبار الأداء الدقيق
لاستخدام Microbenchmark في مشروعك، أضِف الاعتمادات التالية إلى ملف build.gradle الخاص بوحدة Microbenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.1" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.1") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
توفّر مكتبة Microbenchmark أيضًا مكوّنًا إضافيًا لـ Gradle لاستخدامه مع وحدة اختبار الأداء الصغير.
يضبط هذا المكوّن الإضافي الإعدادات التلقائية لإعدادات الإنشاء للوحدة، ويُعدّ نسخة من نتائج الاختبار إلى المضيف، ويقدّم
مهمة ./gradlew lockClocks.
لاستخدام المكوّن الإضافي، أدرِج السطر التالي في مجموعة plugins في ملف
build.gradle من المستوى الأعلى:
رائع
plugins { id 'androidx.benchmark' version '1.4.1' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.4.1" apply false }
بعد ذلك، طبِّق المكوّن الإضافي على ملف build.gradle الخاص بوحدة الأداء المرجعي.
رائع
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.5
الإصدار 1.5.0
9 سبتمبر 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0. يتضمّن الإصدار 1.5.0 هذه التعديلات.
الإصدار 1.5.0-rc02
26 أغسطس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-rc02. يتضمّن الإصدار 1.5.0-rc02 هذه التعديلات.
الإصدار 1.5.0-rc01
12 أغسطس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-rc01. يتضمّن الإصدار 1.5.0-rc01 هذه التعديلات.
الإصدار 1.5.0-beta01
29 يوليو 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-beta01. يتضمّن الإصدار 1.5.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يمكن لـ "
PerfettoCapture" و"PerfettoTraceRule" الآن تسجيل عمليات التتبُّع الجارية ودمجها في حزمة مستهدَفة. (I9a00b، b/497959820)
الإصدار 1.5.0-alpha07
01 يوليو 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha07. يتضمّن الإصدار 1.5.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تبسيط عملية تسجيل سجلات Perfetto على الجهاز (I48810)
- نقل واجهات برمجة التطبيقات التجريبية للإضافة
TraceProcessor.runServerمنandroidx.benchmark:benchmark-macroإلىandroidx.benchmark:benchmark-common، ثم إلى حزمةandroidx.benchmarkسيؤدي ذلك إلى إتاحة استخدامها في اختبارات الأداء المصغّرة في المستقبل. (Ie25bb، b/393640753)
إصلاح الأخطاء
- تعديل عملية تنفيذ traceprocessor (بالإضافة إلى عملية التقاط Perfetto Trace غير المجمَّعة) لاستخدام الإصدار 56.0 من Perfetto (I8fb9d)
- اضبط
androidx.benchmark.requireAotوandroidx.benchmark.requireAotعلى "صحيح" تلقائيًا. تضمن هذه الإعدادات التلقائية الأكثر أمانًا إجراء عملية الترجمة قبل تشغيل اختبارات الأداء الدقيق (يتم تفعيلها تلقائيًا باستخدام مكوّن Gradle الإضافي الخاص باختبار الأداء عند استخدام الإصدار 8.4 من "مكوّن Android الإضافي لبرنامج Gradle" أو الإصدارات الأحدث)، وعدم استخدامmeasureRepeatedفي سلسلة التعليمات الرئيسية، حيث يمكن أن يؤدي ذلك إلى حدوث أخطاء ANR. (I1bc3c، b/379115078) - تمت زيادة مهلة إيقاف Perfetto من 5 ثوانٍ إلى 30 ثانية (لجلسات Perfetto التي تم تسجيلها في اختبار الأداء فقط). تمت إضافة تسجيل أوضح للأخطاء عند حدوث المشكلة. (If188f، b/435589290)
الإصدار 1.5.0-alpha06
6 مايو 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha06. يتضمّن الإصدار 1.5.0-alpha06 هذه التعديلات.
إصلاح الأخطاء
- التعامل مع بيئات تعدد المستخدمين بسلاسة عند نقل الملفات من دليل نتائج قياس الأداء إلى دليل نتائج الاختبار الإضافي (I90da5، b/489358149)
الإصدار 1.5.0-alpha05
25 مارس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha05. يتضمّن الإصدار 1.5.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل
ArtMetricلتضمين الحِزم ذات المستوى الأعلى، وهو أمر مهم بشكل خاص عند استخدام الإصدار 9.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle"/R8، أو الخيار العام-repackageclasses. في السابق، كانArtMetricيتعذّر عليه رصد عمليات تحميل الفئات هذه في مقاييسartClassLoad.... (If8a35، b/487402058)
الميزات الجديدة
- تمت إضافة وسيطة جديدة للأدوات androidx.benchmark.requireLockedClocks تتيح تفعيل عملية التحقّق مما إذا كانت سرعات وحدة المعالجة المركزية (CPU) ثابتة للأجهزة التي تم الوصول إلى جذرها. (Id82e8، b/468039042)
الإصدار 1.5.0-alpha04
11 مارس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة
JvmOverloadsإلىPowerMetric.EnergyوPowerMetric.Power(Iac0d0، b/481371562).
إصلاح الأخطاء
- تم تعديل
ArtMetricلتضمين الحِزم ذات المستوى الأعلى، وهو أمر مهم خاصةً عند استخدام الإصدار 9.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle"/R8، أو الخيار العام-repackageclasses. في السابق، كانArtMetricيتعذّر عليه رصد عمليات تحميل الفئات هذه في مقاييسartClassLoad.... (I207ca، b/487402058)
الإصدار 1.5.0-alpha03
11 فبراير 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
- تم تعديلها لتعتمد على الإصدار التجريبي 2.4 من UiAutomator.
الإصدار 1.5.0-alpha02
28 يناير 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
تمّت إضافة دعم جزئي لإنشاء ملفات تعريف أساسية لوحدات Kotlin المتوافقة مع منصات متعددة. يمكن عادةً تحديد التبعيات على الملفات الشخصية باستخدام إعدادات
baselineProfileGradle في قسم التبعيات، ولكن لا يعمل ذلك حاليًا مع وحدات KMP.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }بدلاً من ذلك، يجب تحديد التبعيات باستخدام
baselineProfile**الإضافة. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
الإصدار 1.5.0-alpha01
17 ديسمبر 2025
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
- يستخدم الإصدار 1.5 من Macrobenchmark الإصدار 2.4 من
UiAutomatorلتبسيط التفاعل مع التطبيق الذي يتم قياسه. يوسّع العنصر MacrobenchmarkScope الآن UiAutomatorTestScope، ما يتيح لك استخدام واجهات برمجة التطبيقات الحديثةUiAutomator، مثلonElement { ... }.click(). - لمزيد من المعلومات عن
UiAutomator2.4، يُرجى الاطّلاع على المستندات.
الميزات الجديدة
- لم يعُد المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile يتطلّب
newDsl=falseفي الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (Iaaac7، b/443311090) - توسيع إعدادات التتبُّع لتشمل حجم النواة (مثل صغير/كبير) في عمليات تتبُّع النظام/Perfetto التي تم تسجيلها في مقياس الأداء (I8e397، b/457469959)
تغييرات واجهة برمجة التطبيقات
- (في UiAutomator) تم تغيير
startActivitywait إلى wait for new window. (I35da6، b/440021797) - تثبيت واجهات برمجة التطبيقات
BlackHoleفي androidx.benchmark (I2b67e، b/451749438) - إضافة
@JvmOverloadsلإنشاء دوال إنشاء ملائمة لـPerfettoTraceRule(I1510a، b/443763207)
الإصدار 1.4
الإصدار 1.4.1
10 سبتمبر 2025
تم طرح androidx.benchmark:benchmark-*:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
إصلاح الأخطاء
- كانت عملية التتبُّع الثابتة
perfettoSdkTracing=true(على سبيل المثال، عند تتبُّع Compose في اختبار أداء صغير) توقف العملية المستهدَفة إذا كانت قيد التشغيل ولم يتم تحديد StartupMode. (Ib2c1f)
الإصدار 1.4.0
30 يوليو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
Microbenchmark
- تم نقل مهام Gradle
lockClocksوunlockClocksلتكون في مشاريع قياس الأداء، بدلاً من المستوى الأعلى، وذلك لضمان عزل مشاريع Gradle. - تمت إعادة تصميم
BenchmarkRuleليعمل على أساس الروتينات الفرعية، ويتيح سلوكًا أفضل فيyield(). من المفترض أن يحدّ ذلك بشكل كبير من خطر حدوث أخطاء ANR أثناء عمليات القياس، لا سيما عمليات التكامل المستمر الطويلة. ملاحظة: يجب تشغيل مقاييس أداء واجهة المستخدم باستخدامmeasureRepeatedOnMainThread.
Macrobenchmark
- تمت إضافة حلّ بديل في الإصدار 34 من واجهة برمجة التطبيقات والإصدارات الأحدث، حيث كان أداء
CompilationMode.None()غير متسق بسبب تجميع ART للتطبيقات جزئيًا بعد التشغيل الأول. - ميزة تجريبية: يمكن أن توضّح ميزة "إحصاءات بدء التشغيل" بعض المشاكل الشائعة في اختبار Macrobenchmark لتطبيق قيد التشغيل من خلال تمرير
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))). - تمت إضافة ArtMetric التي يمكن استخدامها لرصد عملية "الترجمة في الوقت المناسب" (JIT Compilation) وتحميل الفئات غير المحسَّن، وكلاهما مفيد للتحقّق من صحة تحسينات "الملف الشخصي للمرجع".
ملفات Baseline Profile
- تجمع أداة
BaselineProfileRuleالآن بيانات الأداء للتطبيقات المتعددة العمليات.
التغييرات الأخرى
- تم نقل TraceProcessor إلى مكتبة منفصلة (
androidx.benchmark:benchmark-traceprocessor) ليتم استخدامه خارج مقاييسMacrobenchmarkفي حالات أخرى. يمكن أيضًا تشغيله على Desktop JVM من خلال تحديد ServerLifecycleManager الخاص بك.
الإصدار 1.4.0-rc01
18 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للمشاكل التي تتسبّب فيها صور وقت التشغيل في عدم قياس
CompilationMode.None()أسوأ أداء بعد التكرار الأول. لسوء الحظ، يتطلّب هذا الحلّ البديل تأخيرًا لمدة 5 ثوانٍ لإتلاف صورة وقت التشغيل عمدًا في بداية كل مجموعة اختبارات macrobenchmark (I4a4f1).
الإصدار 1.4.0-beta02
4 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
BaselineProfileConfig.Builderلتسهيل عملية استدعاءBaselineProfileRule.collectWithResults()لمطوّري Java. (I94905)
الإصدار 1.4.0-beta01
7 مايو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة الدالة الإنشائية
PerfettoTraceRuleالتي تقبلPerfettoConfig(Ie53ba)
إصلاح الأخطاء
- تم تعديل تنسيق رابط إحصاءات بدء التشغيل
TraceProcessorلاستخدام المكوّن الإضافي الصحيح، وفاصل أكثر وضوحًا (:أقصر من%3A، وكلاهما متوافق) (Ie18ef) - استخدِم دائمًا خيار "إيقاف إجباري" لإيقاف العمليات، حتى عند الوصول إلى الجذر وإيقاف تطبيقات النظام. يحلّ هذا الإجراء الاستثناءات من النموذج:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
المساهمة الخارجية
- تمت إضافة معالج استثناء الخادم الوكيل لـ
TraceProcessorHttpServer(I480f5)
الإصدار 1.4.0-alpha11
9 أبريل 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha11. يتضمّن الإصدار 1.4.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تغيير مهلة وسيطة
TraceProcessor: المدة إلى timeoutMs طويلة جدًا لتسهيل استخدامها من قِبل برنامج Java. (I9fbb5) - ضَع علامة "داخلي" على الدالة الإنشائية
TraceProcessor. يجب أن يستخدم مقدّمو الطلباتTraceProcessor.startServerأوTraceProcessor.runServer. (Ia8c5b)
إصلاح الأخطاء
- عند إيقاف التطبيق باستخدام
MacrobenchmarkScope.killProcess، تحقَّق من نتائج أمر الإيقاف لمنع حدوث خطأ بدون إشعار أو خطأ في المهلة. (I84555)
تحديثات الاعتماديات
- تستهدف هذه المكتبة الآن مستوى اللغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (Idb6b5)
الإصدار 1.4.0-alpha10
26 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha10. يتضمّن الإصدار 1.4.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت زيادة المهلة التلقائية لتحميل خادم
TraceProcessorوالاستعلام إلى 120 ثانية (بدلاً من 60/30 ثانية سابقًا)، وأصبح من الممكن ضبط كليهما باستخدام مَعلمة مهلة واحدة. (Ifec87)
إصلاح الأخطاء
- تم إصلاح بعض المشاكل التي كانت تحدث عند قياس أداء تطبيق أو تسجيل ملفات شخصية له بدون
profileinstaller، وتم تضمينBroadcastReciever. يؤثر ذلك فقط في عمليات التشغيل على الأجهزة التي تم الوصول إلى جذرها. (Ied308)
الإصدار 1.4.0-alpha09
12 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha09. يتضمّن الإصدار 1.4.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
TraceProcessorوواجهة برمجة التطبيقات Session API مع مقابض قابلة للإغلاق، وذلك لتسهيل الاستخدام مع دورات الحياة المخصّصة. هذه الخطوة هي أيضًا خطوة نحو إتاحة استخدام أسهل لواجهة برمجة التطبيقات Coroutine وJava. تم الآن وضع علامة "تجريبية" على وظائف الإضافة التي تعمل علىTraceProcessor.runServer {}، لأنّه من المحتمل أن يتم نقلها وإزالة العلامة "تجريبية" عنها في المستقبل. (I358b4)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل ميزة "قياس الأداء" و"الملف الشخصي للمرجع" مع واجهة برمجة التطبيقات 36 بسبب تغيير في
pgreptoybox يتطلّب الآن-aلطباعة سطر الأوامر الكامل. (Idc991) - فلترة إعدادات التتبُّع التلقائية للحدّ من مخاطر فقدان البيانات في عمليات التتبُّع على مستويات أحدث من واجهة برمجة التطبيقات (I54e8a)
- تمت إضافة وسيط تجريبي
androidx.benchmark.killExistingPerfettoRecordingsللأدوات، ويمكن ضبطه علىfalseللسماح بمواصلة عملية تسجيل بيانات التتبُّع الحالية في Perfetto. يتم تلقائيًا إيقاف عمليات تسجيل التتبُّع الحالية في Perfetto على الجهاز لمنع حدوث تداخل. (I02a3c) - سيصبح الحقل
context.osCodenameAbbreviatedبتنسيق JSON الآنRELلإصدارات نظام التشغيل التي تم طرحها بالمستوى 35 لواجهة برمجة التطبيقات والإصدارات الأحدث، لأنّ المنصة الأساسية لم تعُد تتوافق مع أسماء الرموز غير الرقمية. (Ib17fd) - تم إصلاح عُطل في
FrameTimingMetricعند حدوث إطارات تمت إعادة مزامنتها. (I7c6f4، b/394610806) - لم يعُد يُفترض أنّ
Choreographer#doFrameهو أعلى إطار حزمة التكديس في سلسلة التعليمات الرئيسية لـFrameTimingQuery. (Iee0e0، b/340206285)
الإصدار 1.4.0-alpha08
12 فبراير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha08. يتضمّن الإصدار 1.4.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل واجهات برمجة التطبيقات الخاصة بالإضافات
TraceProcessor.runSession()لتصبح تجريبية، لأنّه من المحتمل أن يتم نقلها لتصبح أدوات إنشاء ملموسة في النهاية على Android. (Ib0528، b/393640753) - أصبحت معظم عمليات تنفيذ "إحصاءات بدء التشغيل" متاحة الآن للجميع أو تجريبية، وتم نقلها إلى العنصر
TraceProcessor، راجِعStartupInsights. (I0aa00) - إيقاف
BenchmarkRule.runWithTimingDisabled {}نهائيًا واستخدامBenchmarkRule.runWithMeasurementDisabled {}بدلاً منه، لأنّه يصف السلوك بشكلٍ أوضح، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScopeلأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabledلفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تم نقل مكتبات قياس الأداء إلى Kotlin 2.0. (I9d1e0)
- تمت إزالة وسيطة أداة القياس
androidx.benchmark.startupProfiles.enable. لم يعُد هذا الخيار مفيدًا، إذ يمكن التحكّم فيه باستخدام الوسيطةincludeInStartupProfileفيBaselineProfileRule.collect(). (I39eb4)
إصلاح الأخطاء
- تم تقليل عدد الدوال الداخلية التي يتم استدعاؤها في Microbenchmark أثناء إنشاء الملفات الشخصية لتوضيح عمليات تتبُّع الطرق، على سبيل المثال (Ifaed8)
- إصلاح تجريبي للأعطال: "تعذّر إيقاف [
ProcessPid(processName=perfetto, pid=...)]". سيسجّل تطبيق Benchmark الآن رسالة بدلاً من تعطُّله عندما يتعذّر إيقاف عملية Perfetto في الخلفية قبل تشغيل مقياس الأداء. (I37d3e، b/323601788) - تم إصلاح الخطأ
IllegalStateExceptionsالذي يحمل التصنيف "pm dump-profilesstdout المتوقّع" والذي نتج عن التدقيق الصارم في تنسيق الناتج. (I358dc)
الإصدار 1.4.0-alpha07
29 يناير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha07. يتضمّن الإصدار 1.4.0-alpha07 هذه التعديلات.
الميزات الجديدة
- تقدّم
BaselineProfileRuleالآن واجهة برمجة التطبيقاتcollectWithResults(...)التي تتضمّن قائمة بمسارات الملفات الشخصية المحسوبة. (I056f8) - تمت إضافة وسيط قياس حالة التطبيق
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline، ويمكن ضبطه على "خطأ" لإيقاف سلوكmeasureRepeatedOnMainThreadعند انتهاء الموعد النهائي للاختبار المحلي. لا يُنصح بذلك في الحالات الأخرى، لأنّ ذلك يزيد من احتمالية حدوث أخطاء ANR أثناء الاختبارات. (Idbeec، b/353226476)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
@JvmOverloadsإلى الدالة الإنشائيةMicrobenchmarkConfig. (I13fd3) - تمت إعادة تصميم
BenchmarkRuleليعمل على أساس الروتينات الفرعية، ويتيح سلوكًا أفضل فيyield(). أدت عملية إعادة الهيكلة هذه إلى إزالة العديد من واجهات برمجة التطبيقات التجريبيةBenchmarkState، ولكن سيتم استبدالها حسب الحاجة. بالإضافة إلى ذلك، أضفناrunWithMeasurementDisabledلتوضيح السلوك (يتم إيقاف جميع عمليات القياس مؤقتًا). سيتم إيقاف سياسة "runWithTimingDisabled" نهائيًا في المستقبل. (I19837، b/389149423، b/311242861) - انقل
PerfettoTraceProcessorإلىTraceProcessorفي عنصرandroidx.benchmark:benchmark-traceprocessorجديد، واجعل معظم واجهة برمجة التطبيقات غير تجريبية. يجب تعديل أيTraceMetricمخصّص أو أي شيء تتم قراءته من عمليات التتبُّع لاستخدام عملية الاستيراد الجديدةTraceProcessor. تعمل واجهة برمجة التطبيقات الجديدةTraceProcessorتمامًا مثل واجهة برمجة التطبيقات القديمة، ولكنّها مكتبة واجهة مستقلة (تشبه إلى حد ما طبقةandroidx.sqliteمن Room) تتضمّن عملية تنفيذ خاصة بنظام Android ومضمّنة في Macrobenchmark. يمكن استخدام العنصر الجديد على آلة جافا افتراضية (JVM) أيضًا، ولكن عليك حاليًا بدء نسختك الخاصة من برنامج ثنائيTraceProcessorوتقديم منفذ للاتصال به. (I3a767، I62563، b/381134564)
إصلاح الأخطاء
- عرض رسالة خطأ أوضح عند تعذُّر تشغيل العملية المستهدَفة من خلال
MacrobenchmarkScope.startActivityAndWait(قد يكون ذلك بسبب تعطُّل العملية المستهدَفة)، بدلاً من الرسالة الأكثر غموضًا "تعذُّر تأكيد اكتمال تشغيل النشاط" (I3539b) - تم إصلاح العديد من أخطاء البنية في أمثلة Kotlin، وتمييز البنية في العديد من أمثلة Java / build.gradle. (Ib3808)
- تم توضيح مستندات المَعلمتَين
ArtMetricوCaptureInfo. (I96e60)
الإصدار 1.4.0-alpha06
11 ديسمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha06. يتضمّن الإصدار 1.4.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة استخدام
@Language("sql")فيPerfettoTraceProcessor.Session.query()، لأنّ ميزة التمييز/التحليل في "استوديو Android" لا تعمل. (Idc2fa، b/377733398)
إصلاح الأخطاء
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I46810، b/326456246) - تم تصحيح
ArtMetricللإبلاغ عن تحميل الفئة (وليس تهيئتها)، وتم تحسين المستندات لتوضيح سلوك وقت التشغيل. (I9915c) - في ميزة "المستخدمون المتعدّدون" على Android، نفِّذ الأوامر بصفتك مستخدمًا لديه امتيازات الجذر على الأجهزة التي تم منحها هذه الامتيازات فقط. (I88b44)
الإصدار 1.4.0-alpha05
13 نوفمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في المستوى 34 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، حيث كان أداء
CompilationMode.None()غير متسق ولا يمثّل الأداء الأولي في أسوأ الحالات. يحلّ هذا الإجراء مشكلة تغيير في النظام الأساسي يسمح لحالة تجميع ARTverifyبتجميع التطبيقات جزئيًا (يؤثر فقط في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (Ie48d0) - تم إصلاح مشكلة كان يمكن فيها تسجيل عمليات تتبُّع (قصيرة بشكل خاص) لا تعرض قياسات من مقاييس Macrobenchmark المضمّنة، وذلك بسبب اقتطاع اسم العملية في عملية تتبُّع Perfetto. تعمل مكتبة Macrobenchmark الآن على حلّ هذه المشكلة من خلال البحث عن اسم الحزمة المختصَر في جميع طلبات البحث المضمّنة، بالإضافة إلى اسم الحزمة المتوقّع. يُرجى العِلم أنّ عمليات التنفيذ المخصّصة
TraceMetricأو أدوات الاتصال المباشر الأخرى بـPerfettoSession.queryيمكنها تنفيذ السلوك نفسه من خلال تغييرprocess.name LIKE "$packageName"في طلب بحث Perfetto إلى(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")بدلاً من ذلك. (I5bf01، b/377565760)
الإصدار 1.4.0-alpha04
30 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- (تجريبي) فعِّل إنشاء "ملف Baseline" وقياس الأداء على التطبيقات المثبَّتة على مستخدم ثانوي، مثل أي تطبيق على أجهزة Android Auto غير المزودة بشاشة. تم اختبار هذه الميزة في بعض السيناريوهات، ولكن يُرجى إعلامنا إذا لم تنجح معك. (I9fcbe وb/356684617 وb/373641155)
إصلاح الأخطاء
- يتم الآن دائمًا تجاهل
isProfileableفي إصدارات قياس الأداء، ويتم أيضًا دائمًا تجاهلisDebuggableفي كل من إصدارات قياس الأداء وإصداراتnonMinified(التقاط ملفات تعريف الأداء الأساسية). (I487fa، b/369213505) - إصلاح مشكلة رصد عملية التجميع على بعض الأجهزة الفعلية التي تعمل بإصدارات أقدم من المستوى 28 لواجهة برمجة التطبيقات، ما يؤثر في json
context.compilationMode، بالإضافة إلى سلوكandroidx.benchmark.requireAot=true(الذي لم يعُد يعرض خطأ بشكل غير صحيح) (Ic3e08، b/374362482) - في مقاييس
CpuEventCounter، يتم طرح خطأ في حال رصد قياسات غير صالحة (مثل instructions/cpucycles==0) (I8c503)
الإصدار 1.4.0-alpha03
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- Macrobenchmark: إضافة
ArtMetric، التي يمكن استخدامها لفحص تغطية الملف الشخصي أو الأداء العام لـ Android RunTime. تسجّل هذه السمة عدد عمليات التحويل في الوقت المناسب (JIT) وإجمالي مدتها، وعمليات تهيئة الفئة (حيثما كان ذلك متاحًا)، وعمليات التحقّق من الفئة. بالإضافة إلى ذلك، تم إجراء تغييرات علىCaptureInfoلتضمين إصدار ART الرئيسي الاختياري مع الإعداد التلقائي. (I930f7) - أضِف
coefficientOfVariationإلى ناتج JSON الخاص بمقياس الأداء لعرض الثبات ضمن عملية تنفيذ مقياس أداء معيّن. (Ib14ea)
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTaskعندما يحتوي جهاز AVD على مسافات. (Ia0225، b/371642809) - إصلاح تخميني للأخطاء الناتجة عن استثناءات
StartupMode.COLD:Package <packagename> must not be running prior to cold start!الآن، ستنتظرMacrobenchmarkScope.killProcess()(بما في ذلك العملية التي يتم تنفيذها قبل كل تكرار، والتي تُستخدَم لتنفيذ سلوكStartupMode.COLD) للتأكّد من توقّف جميع عمليات التطبيق عن التنفيذ. (I60aa6، b/351582215) - تم إصلاح المشكلة التي كانت تتسبب في ظهور الخطأ UNLOCKED_ على بعض المحاكيات التي تم الوصول إلى جذرها. (Ic5117)
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I7104f، b/326456246)
الإصدار 1.4.0-alpha02
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل مهام Gradle
lockClocksوunlockClocksإلى مشاريع قياس الأداء، بدلاً من توفيرها على المستوى الأعلى. كان هذا التغيير ضروريًا لأنّه ليس هناك للأسف طريقة لتسجيل هذه الإجراءات كإجراءات على أعلى مستوى بدون إيقاف عزل المشاريع. (I02b8f، b/363325823)
إصلاح الأخطاء
- تجمع
BaselineProfileRuleالآن الملفات الشخصية للتطبيقات المتعددة العمليات من خلال إرسال إشارة إلى كل عملية قيد التشغيل في نهاية الحظر لتفريغ الملفات الشخصية. إذا لم يتمكّن تجميع البيانات المستند إلى الملف الشخصي من العثور على عملية للبث إليها، سيتعذّر التجميع، لأنّه من غير المتوقّع أن تتضمّن البيانات ملفًا شخصيًا. بالإضافة إلى ذلك، تمت إضافة وسيطة أدوات للتحكّم في مدة انتظار التفريغ:androidx.benchmark.saveProfileWaitMillis(I0f519، b/366231469) - من Benchmark
1.3.2: تم إصلاح مشكلة عدم قدرة مختبر Firebase الافتراضي (FTL) على سحب ملفات نتائج الملف الشخصي للمرجع أو Macrobenchmark من Baseline Profile Gradle Plugin. (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة ملفات تعريف خط الأساس في حزمة المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
ثم اضبط إعدادات مركز الاختبار الافتراضي لمنصة Firebase باستخدام:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة ملف التعريف الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.4.0-alpha01
18 سبتمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
ميزة جديدة: إحصاءات بدء تشغيل التطبيق
- يمكن تفعيل الإصدار الأوّلي من إحصاءات بدء تشغيل التطبيق في Macrobenchmark. (09fae38)
لتفعيلها في مقياس أداء الشركات الناشئة، اتّبِع الخطوات التالية:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
بعد ذلك، سيحلّل مقياس أداء بدء التشغيل التتبُّع بحثًا عن المشاكل الشائعة، وسيطبعها بعد المقاييس في ناتج اختبار "استوديو Android" ضمن علامة التبويب "مقياس الأداء"، على سبيل المثال:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
لا تزال هذه الميزة قيد التطوير، وسنعمل على تحسين المستندات وإمكانية التوسيع في المستقبل، ولكن نرحّب بتلقّي ملاحظاتك.
الميزات الجديدة
- تمت إضافة السمة gradle
androidx.baselineprofile.suppressWarningsلإيقاف جميع تحذيرات ملفات تعريف الأداء الأساسية. (314153a) - يتم الآن عرض مقاييس الاختبارات المصغّرة في عمليات تتبُّع Perfetto كعدادات. (3214854)
- إضافة نصوص برمجية تجريبية لإيقاف التحويل في الوقت المناسب (يتطلّب الوصول إلى الجذر أو إعادة تشغيل وقت التشغيل) وإعادة ضبط حالة الأداء/الاختبار للجهاز لا يتم نشرها حاليًا كمهام Gradle. (7c3732b)
- تمت إضافة وسيطة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار
automaticGenerationDuring، سيتم أيضًا تشغيل مقاييس الأداء لإنشاء ملف تعريف أساسي. سيحدث خطأ في هذه الحالة إذا تم استخدام المحاكيات. باستخدام الوسيطة الجديدةskipBenchmarksOnEmulator، يمكننا بدلاً من ذلك تخطّي الاختبار. (0c2ddcd) - تغيير منطق تفعيل حدث الأداء ليتم تشغيله على الإصدار 23 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (2550048)
تغييرات واجهة برمجة التطبيقات
- تم نقل وسيطة
PerfettoConfigالتجريبية الحالية إلىMacrobenchmarkRule.measureRepeated()إلى عنصرExperimentalConfigالجديد.
إصلاح الأخطاء
- زيادة عدد محاولات إعادة التشغيل
lockClocks.sh(99e9dac) - لا تُنشئ نوعَي الإصدار
nonMinifiedوقياس الأداء إذا كانا متوفّرَين. بسبب خطأ، كان سيتم إعادة إنشاء نوعَي الإصدارnonMinifiedوإصدارات قياس الأداء حتى إذا كانا متوفّرَين. (e75f0a5) - تجاهل الشرائح غير المنتهية من نتائج
TraceSectionMetric(a927d20) - تحسين عملية التحقّق من المحاكي لتضمين البادئة
sdk_(1587de8) - اعتبار الحِزم غير النشطة على أنّها تمت إزالتها في
FrameTimingGfxInfoMetric(35cc79c) - تم إصلاح الخطأ الذي كان يتسبّب في إنتاج قيم تالفة للأحداث غير المرتبطة بالتعليمات البرمجية في
androidx.benchmark.cpuEventCounter. (06edd59) - إصلاح
resumeTiming/runWithTimingDisabledليتوافق مع ترتيب أولوية المقاييس، وتقليل تأثير إيقاف/استئناف المقياس الأقل أولوية بشكل كبير على نتائج المقياس الأعلى أولوية على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطةcpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند الإيقاف المؤقت/الاستئناف. (5de0968)
الإصدار 1.3
الإصدار 1.3.4
26 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.3.4. يتضمّن الإصدار 1.3.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح حالات عدم التوافق مع ميزة "عزل مشاريع Gradle" في "المكوّن الإضافي لنظام Gradle الخاص بـ Benchmark Baseline". (b/404523257)
الإصدار 1.3.3
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTaskعندما يحتوي جهاز AVD على مسافات (Ia0225، b/371642809)
الإصدار 1.3.2
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم قدرة مختبر Firebase الافتراضي (FTL) على سحب ملفات نتائج الملف الشخصي للمرجع أو Macrobenchmark من Baseline Profile Gradle Plugin. (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة ملفات تعريف خط الأساس في حزمة المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
ثم اضبط إعدادات مركز الاختبار الافتراضي لمنصة Firebase باستخدام:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة ملف التعريف الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.3.1
18 سبتمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.1. يتضمّن الإصدار 1.3.1 على هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة السمة
androidx.baselineprofile.suppressWarningsفي Gradle لإيقاف جميع تحذيرات ملفات تعريف خط الأساس (I7c36e، b/349646646) - تم إصلاح Baseline Profile Gradle Plugin لاستخدام
nonMinified…وbenchmark…المتوفّرة مسبقًا إذا أنشأها التطبيق بدلاً من إنشاء برامج تضمين. (Ia8934، b/361370179) - تم إصلاح
java.lang.AssertionError: ERRORS (not suppressed): EMULATORعند تفعيلautomaticGenerationDuringBuildعلى المحاكيات. يتم استخدام وسيطة جديدة بدلاً من ذلك لتخطّي الاختبار. (If3f51، b/355515798) - تصغير اختبارات الأداء الدقيقة - الاحتفاظ بالفئات الفرعية من
org.junit.runner.notification.RunListenerفي مكتبة اختبار الأداء Proguard (Ic8ed5، b/354264743) - إصلاح
TraceSectionMetricلتجاهل الشرائح غير المنتهية في السابق، كان يتم اعتبار مدة هذه الفيديوهات -1، مثلاً أثناء عملية الجمع أو البحث عن الحد الأدنى للمدة. (If74b7) - تم إصلاح مشكلة في
FrameTimingGfxInfoMetricتؤدي إلى تعطُّل بدء المقياس إذا لم تكن العملية قيد التشغيل. (I6e412)
الإصدار 1.3.0
21 أغسطس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات في مكتبة Microbenchmark منذ الإصدار 1.2.0
- تكون ميزة "تتبُّع الأسلوب" مفعَّلة تلقائيًا في اختبارات الأداء الدقيق عند تشغيلها على معظم الأجهزة
- يتم تنفيذ تتبُّع الطرق كمرحلة منفصلة بعد القياسات، ما يتيح إخراج القياسات الدقيقة وعمليات تتبُّع الطرق من عملية قياس أداء واحدة.
- سيؤثّر تتبُّع الطرق في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. وفي هذه الإصدارات، يكون تتبُّع الطرق غير مفعّل تلقائيًا ويتم عرض تحذير في ناتج Studio.
- مقاييس الأداء وأخطاء ANR في سلسلة التعليمات الرئيسية
- تمت إضافة
measureRepeatedOnMainThreadلمقاييس أداء سلسلة واجهة المستخدم (مثل تلك التي تتفاعل مع واجهات مستخدم Compose/View) لتجنُّب أخطاء ANR عند التشغيل لعدة ثوانٍ. - يتم تخطّي عمليات تتبُّع الطرق إذا كان من المتوقّع أن تتجاوز الموعد النهائي لتجنُّب خطأ ANR. اضبط القيمة على
androidx.benchmark.profiling.skipWhenDurationRisksAnrعلى "خطأ" لإيقاف هذا السلوك (لا يُنصح بذلك في عمليات التكامل المستمر، لأنّ أخطاء ANR يمكن أن تتسبّب في حدوث مشاكل في عمليات التكامل المستمر الطويلة).
- تمت إضافة
- إزالة البيانات غير الضرورية
- قواعد Proguard المضمّنة لتحسين قياس الأداء الدقيق مع تفعيل التصغير
- يتطلّب تصغير الرموز/R8 في وحدة مكتبة الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)، ويمكن تفعيله من خلال
android.buildTypes.release.androidTest.enableMinificationفيbuild.gradle - تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()لمنع إزالة الرمز غير المستخدَم (If6812، b/286091643)
- المقاييس
- ميزة عدّاد أحداث وحدة المعالجة المركزية التجريبية (المقاييس من
perf_event_open، والتي تتطلّب الوصول إلى الجذر على معظم إصدارات النظام الأساسي)، وإمكانية الوصول من خلالInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(يمكن ضبطها علىtrue)، ويمكن ضبطandroidx.benchmark.cpuEventCounter.eventsمثلاً على (Instructions,CpuCycles). من المفترض أن تتوفّر هذه الميزة على بعض المحاكيات التي تتضمّن إصدارات userdebug، ولكن لم يتم اختبارها على جميع المحاكيات المتاحة
- ميزة عدّاد أحداث وحدة المعالجة المركزية التجريبية (المقاييس من
التغييرات في MACRObenchmark منذ الإصدار 1.2.0
- إصلاح شامل لتتبُّع الطرق في اختبارات الأداء الشاملة
- يتم الآن تحديد نطاق عمليات تتبُّع الطرق بمدة
measureBlock، ويمكنها تسجيل جلسات متعددة إذا بدأت العملية عدة مرات. - في السابق، لم يكن تتبُّع طريقة الأداء يعمل إلا مع مقاييس
StartupMode.COLD، ولم يكن يسجّل أي بيانات عنmeasureBlocksالتي لم تتم إعادة تشغيل العملية المستهدَفة فيها. - يتم إفراغ آثار الطريقة الثابتة في Macrobenchmark، لذا يجب أن يتم تسجيل آثار الطريقة بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- يتم الآن تحديد نطاق عمليات تتبُّع الطرق بمدة
- تفريغ ملف ART الشخصي بشكل صحيح أثناء تكرار
warmUpالفردي عند إيقاف العملية، ما يؤدي إلى زيادة دقة قياساتCompilationMode.Partial(warmup=N)(I17923) - رسالة الخطأ في بث Drop Shader
- تمت إضافة اقتراحات لتصحيح الأخطاء إلى رسالة الخطأ المتعلقة بعدم بث برنامج تظليل
- أضِف وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل من أجل حلّ الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: يمكن استخدامها لتخطّي جميع عمليات إزالة تظليل الأشكال (بما في ذلك تلك التي تتم في عمليات إطلاقStartupMode.Cold)، خاصةً عند قياس أداء التطبيقات التي لم تستخدم بعد الإصدار 1.3 من profileinstaller -
androidx.benchmark.dropShaders.throwOnFailure=true/false: يمكن استخدامها لتحمُّل حالات الأعطال عند محاولة إيقاف برامج التظليل، مثلاً عند قياس أداء التطبيقات بدون الإصدار 1.3 من profileinstaller (I4f573)
-
- تمت إضافة صيغة تجريبية
MacrobenchmarkRule#measureRepeatedتأخذPerfettoConfigمخصّصًا لتسجيل تتبُّع Perfetto المخصّص بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر عمل فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - ألغِ مهام dexopt في الخلفية قبل تشغيل Macrobenchmark لتقليل التشويش. (I989ed)
- تنتظر مكتبة Macrobenchmark الآن لمدة ثانية واحدة حتى يمحو التطبيق المستهدف ملف ART (كانت المدة سابقًا 500 ملي ثانية). (I85a50، b/316082056)
- إصلاح شامل لـ TraceSectionMetric
- ملاحظة: يمكن أن تؤثّر التغييرات في
TraceSectionMetricأدناه في النتائج عند استخدام CI، وقد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل. - أصبح المجموع هو القيمة التلقائية، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة، وسيؤدي الخيار "الأول" إلى تجاهل البيانات في هذه الحالات
- تم تغييرها لتصبح قابلة للتخصيص بشكل أكبر، مع توفّر المزيد من الأوضاع
- تم الآن تضمين أسماء الأوضاع في اسم إخراج المقياس (في "استوديو YouTube" وJSON)
- يتيح الآن استخدام الشرائح التي تم إنشاؤها باستخدام
Trace.{begin|end}AsyncSection.
- ملاحظة: يمكن أن تؤثّر التغييرات في
- المقاييس
- الطاقة - تمت إضافة
PowerMetric.deviceSupportsHighPrecisionTrackingوPowerMetric.deviceBatteryHasMinimumCharge()وPowerMetric.deviceSupportsPowerEnergy() - تمت إعادة تسمية
Metric.getResultإلىgetMeasurementsلتتطابق مع نوع القيمة التي تم إرجاعها - تمت إضافة تصنيفات log.w / exception إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذا سيتم طرح بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بدون إشعار)، بل يجعله أكثر وضوحًا. بشكل عام، تلك التي
Log.w()ولا يمكنها إرسال مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بإطار العرض، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت إطار العرض (من شرائح واجهة المستخدم/وقت التشغيل). (Id240f، b/329145809) - تمت إضافة مقياس
frameCountإلىFrameTimingMetricللمساعدة في رصد السيناريوهات التي تتغير فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة، وتم إصلاح مشاكل الإبطال). (I1e5aa) - تم توضيح أنّ
frameOverrunMsهو المقياس المفضّل للتتبُّع عند توفّره في المستندات، وسبب ذلك. (I18749، b/329478323) - تم إصلاح المشكلة التي يمكن فيها إقران اللقطات غير المنتهية في بداية التتبُّع ونهايته، ما يؤدي إلى تسجيلها بشكل غير صحيح على أنّها لقطة واحدة طويلة جدًا. (I39353، b/322232828)
- تحسين الخطأ
FrameTimingMetricعند عدم إنشاء إطارات، وعرض رابط دائمًا لتتبُّع المشكلة عند تعذُّر تحليل المقاييس للمساعدة في تشخيص المشكلة (I956b9) - تم إصلاح عُطل في
FrameTimingMetricبسبب تعذُّر تحليل رقم تعريف الإطار، خاصةً على أجهزة معيّنة تابعة لمصنّع أصلي للجهاز. (Ia24bc، b/303823815، b/306235276) - تم تخفيف صرامة عمليات التحقّق في
FrameMetrics، وأضفنا المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
- الطاقة - تمت إضافة
تسجيل "الملف الشخصي للمرجع" / تغييرات على المكوّن الإضافي Gradle منذ الإصدار 1.2.0
- تمت زيادة الحد الأقصى للإصدار المقترَح من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" إلى 9.0.0-alpha01.
- تأكَّد من أنّ المهام
mergeArtProfileوmergeStartupProfileتنتظر دائمًا إنشاء ملف تعريف خط الأساس. (I623d6، b/343086054) - سيؤدي إنشاء ملف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8، b/269484510)
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- حلّ المشكلة لضمان استخدام مقاييس الأداء لملفات تعريف أساسية تم إنشاؤها عندما تكون ميزة
automaticGenerationDuringBuildغير مفعّلة (Ic144f، b/333024280) - إصلاح
BaselineProfileعمليات تجاوز خصائص المكوّن الإضافي Gradle لتفعيل إنشاء الملفات الشخصية للمرجع وقياس الأداء عند تخصيصnonMinifiedأو نوع تصميم قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تضمين الملفات الأساسية للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (I1d2af، b/313992099)
- تم إصلاح عنوان URL الأساسي وملف تعريف بدء التشغيل في نهاية مهمة الإنشاء. (I802e5، b/313976958)
التغييرات المهمة الأخرى منذ الإصدار 1.2.0
- التقاط بيانات التتبُّع
- تقليل الخطأ EXITCODE 2 عند بدء Perfetto من خطأ إلى تحذير مسجَّل
- تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلّب الإصدار 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
- تفعيل تتبُّع علامة النقل تلقائيًا في مقاييس الأداء يتم من خلالها تسجيل نقاط تتبُّع قفل التنشيط، على سبيل المثال. (Icfe44، b/286551983)
- زيادة مهلة بدء تسجيل التتبُّع لتجنُّب الأعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841، b/329145808)
- تمّت إضافة واجهة برمجة تطبيقات عامة
PerfettoTraceProcessor.Session.queryMetricsتتضمّن صيغ JSON وtextproto وproto الثنائية (غير مفكّكة). تتيح لك هذه الحقول طلب البحث عن المقاييس المضمّنة فيTraceProcessor(I54d7f، b/304038382). - فعِّل خيار حظر البدء في سجلّ بيانات تتبُّع Perfetto للحدّ من خطر عدم توفّر البيانات في بداية بيانات التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- الردّ بتنسيق JSON
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
-
context.artMainlineVersion: إصدار عدد صحيح من وحدة Art الرئيسية (إذا كانت متوفّرة على الجهاز،-1بخلاف ذلك) context.build.id- يساوي android.os.Build.IDcontext.build.version.codename- يساوي android.os.Build.VERSION.CODENAME-
context.build.version.abbreviatedCodename: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار المسبق (بما في ذلك إصدارات الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutputإلى إخراج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع بيانات تحديد المشاكل (مثل Perfetto وMethod traces) (I05ddd وb/332604449) - تمت إضافة تحذير عند استخدام منسّق الاختبارات من Android في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات JSON الناتجة لكل وحدة. (Ia1af6، b/286899049)
- يتم طرح خطأ عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو معالجتها بعد ذلك. (I4a5ab)
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
الإصدار 1.3.0-rc01
7 أغسطس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
androidx.benchmark.cpuEventCounterالتي تنتج قيمًا تالفة للأحداث غير Instruction (I7386a، b/286306579) - إصلاح
resumeTiming/runWithTimingDisabledليتوافق مع ترتيب أولوية المقاييس، والحدّ بشكل كبير من تأثير إيقاف/استئناف مقياس ذي أولوية أقل على نتائج مقياس ذي أولوية أعلى على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطةcpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند الإيقاف المؤقت/الاستئناف. (I39c2e، b/286306579، b/307445225) - تقليل فرصة تسبُّب أخذ عيّنات من حزمة التعليمات البرمجية في حدوث الخطأ
measureRepeatedOnMainThreadبسبب انتهاء المهلة المحدّدة للسلسلة الرئيسية، وذلك من خلال نقل عملية تحويل أخذ العيّنات من حزمة التعليمات البرمجية خارج السلسلة الرئيسية (I487a8، b/342237318) - تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة، لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP) (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من AGP (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
- تمت إضافة عملية التحقّق من إصدار "مكوّن Android الإضافي لبرنامج Gradle" لإرسال اسم الحزمة كمعلَمة instr. قبل الإصدار 8.4.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق أدوات القياس من خلال وسيطات أدوات القياس. (0c72a3f)
الإصدار 1.3.0-beta02
10 يوليو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- التعامل بشكل سليم مع EXITCODE
2عند بدء Perfetto لتسجيل تحذير، ولكن مع المتابعة
الإصدار 1.3.0-beta01
12 يونيو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
MethodTracing.affectsMeasurementOnThisDeviceإلىAFFECTS_MEASUREMENT_ON_THIS_DEVICEلضمان الاتساق. (I1bdfa) - تمت إضافة واجهة برمجة تطبيقات تجريبية
BlackHole.consume()لمنع إزالة الرمز البرمجي غير المستخدَم في اختبارات الأداء الدقيقة. (If6812، b/286091643) - ستعرض أداة Microbenchmark الآن خطأ بشكل صحيح لمنع تداخل تتبُّع الطرق مع القياسات. يحدث ذلك على الأجهزة معيّنة عند فرض سجلّ الإجراءات (من خلال وسيطات قياس حالة التطبيق أو
MicrobenchmarkConfig)، وفي حال محاولة إجراء قياس بعد سجلّ الإجراءات. تعمل الأجهزة المتأثّرة بالإصدارات 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها في وقت التشغيل من خلالProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92، b/303660864)
إصلاح الأخطاء
- تمت زيادة الحد الأقصى لإصدار "مكوّن Android الإضافي لبرنامج Gradle" الذي يُنصح باستخدامه إلى 9.0.0-alpha01. (I5bbb0)
- تمت إضافة وضع التجميع إلى سياق مقياس الأداء (If5612، b/325512900)
- تفعيل تتبُّع AIDL تلقائيًا (يتطلّب المستوى 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
-
context.artMainlineVersion- إصدار عدد صحيح لوحدة Art الرئيسية (إذا كانت متوفرة على الجهاز، -1 بخلاف ذلك) -
context.build.id- يساويandroid.os.Build.ID -
context.build.version.codename- يساويandroid.os.Build.VERSION.CODENAME -
context.build.version.abbreviatedCodename: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار المسبق (حتى في الإصدارات النهائية) (Ie5020)
-
- إصلاح
StackSamplingليتوافق معandroidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) - غيِّر التبعية من macro->common إلى
api()، لتسهيل استخدامها، مثلPerfettoTraceوPerfettoConfig. (Icdae3، b/341851833) - تأكَّد من أنّ المهام
mergeArtProfileوmergeStartupProfileتنتظر دائمًا إنشاء ملف تعريف خط الأساس. (I623d6، b/343086054) - ضَع في اعتبارك حالة تفعيل السعر المتغير عند تحديد ما إذا كان يجب تفعيله. (I5d19e، b/343249144)
- زيادة مهلة البدء التلقائية لمعالج تتبُّع Perfetto (I87e8c، b/329145808)
الإصدار 1.3.0-alpha05
14 مايو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- طرح استثناء أوضح عندما يعرض مقياس Macrobenchmark قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
- تمت إضافة قواعد إضافية لحل المشاكل إلى قواعد Proguard الخاصة باختبارات الأداء المصغّرة، بما في ذلك إتاحة قواعد أدوات معالجة الأحداث والتحذيرات / الأخطاء الأخرى التي تم رصدها. (I14d8f، b/329126308، b/339085669)
- يتم تنفيذ تتبُّع الطرق كمرحلة منفصلة أثناء اختبار Macrobenchmark، ولم يعُد يؤثّر في القياسات. (If9a50، b/285912360، b/336588271)
- تمت إضافة اقتراحات إضافية لتصحيح الأخطاء إلى رسالة تعذُّر بث برنامج التظليل. (I5efa6، b/325502725)
الإصدار 1.3.0-alpha04
1 مايو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha04. يتضمّن الإصدار 1.3.0-alpha04 هذه التعديلات
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة تجريبية
MacrobenchmarkRule#measureRepeatedتأخذPerfettoConfigمخصّصًا لتسجيل تتبُّع Perfetto المخصّص بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر عمل فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - إعادة تسمية
PowerMetric.deviceSupportsPowerEnergyإلىPowerMetric.deviceSupportsHighPrecisionTrackingلتوضيح المعنى (I5b82f) - تمت إضافة
PowerMetric.deviceBatteryHasMinimumCharge()وPowerMetric.deviceSupportsPowerEnergy()لتفعيل تغيير مقاييس الأداء أو تخطّيها استنادًا إلى إمكانية قياس طاقة الجهاز. (I6a591، b/322121218)
إصلاح الأخطاء
- تمت إضافة مقارنة مع ملف تعريف الأداء الأساسي السابق (I824c8، b/269484510)
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- تم تغيير الاستثناء إلى سجلّ معلومات عند إيقاف صيغ مقاييس الأداء (I8a517، b/332772491)
- تسهيل عملية تسجيل عمليات تتبُّع الطرق التي يتم تنفيذها في Macrobenchmark ضمن نطاق مدة
measureBlock()الفعلية في السابق، كانت تبدأ عند تشغيل العملية المستهدَفة ولا تتوافق إلا مع عمليات التشغيل على البارد (Iee85a، b/300651094). - تجنُّب حدوث أعطال عندما يكون معالج تتبُّع Perfetto بطيئًا في البدء (I98841، b/329145808)
الإصدار 1.3.0-alpha03
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات
الميزات الجديدة
- تضيف واجهة برمجة التطبيقات العامة
PerfettoTraceProcessor.Session.queryMetricsواجهات برمجة تطبيقات مع صيغ JSON وtextproto وproto الثنائية (غير مفكّكة). تتيح لك هذه الحقول طلب البحث عن المقاييس المضمّنة في TraceProcessor (I54d7f، b/304038382). - تمت إضافة
profilerOutputإلى إخراج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع بيانات تحديد المشاكل (مثل perfetto، وتتبُّع الطرق). (I05ddd، b/332604449) - تمت إضافة علامة الطاقة إلى إعدادات Perfetto الأساسية. يتم من خلالها تسجيل نقاط تتبُّع قفل التنشيط، على سبيل المثال. (Icfe44، b/286551983)
- تمت إضافة وسيطة inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr، ويمكن ضبطها على "خطأ" لتجنُّب تخطّي عمليات تتبُّع الطرق عندما قد يؤدي المدة المتوقّعة إلى حدوث خطأ ANR، وننصح بشدة بتجنُّب ذلك في عمليات التشغيل المتكاملة. - تمت إضافة وسيط تجريبي
androidx.benchmark.profiling.perfCompare.enable، اضبط هذا الوسيط على "صحيح" لتنفيذ توقيت المقارنة بين مرحلتَي القياس وإنشاء الملفات الشخصية. مفيدة في تقييم الحمل الزائد لتتبُّع الطرق، على سبيل المثال. (I61fb4، b/329146942)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
TraceSectionMetric.Modeإلى فئة محكمة الإغلاق لإتاحة التوسيع في المستقبل بدون إيقاف عبارات when الشاملة (I71f7b) - تمت إضافة
TraceSectionMetric.Mode.Averageو.Count، وإعادة ترتيب الوسيطات لتكون الوسيطة الأكثر شيوعًا (الوضع) في وقت سابق من قائمة الوسيطات، ما يقلّل من الحاجة إلى تحديد أسماء المَعلمات. (Ibf0b0، b/315830077، b/322167531) - تمت إعادة تسمية
Metric.getResultإلىgetMeasurementsلتتطابق مع نوع القيمة التي تم إرجاعها (I42595)
إصلاح الأخطاء
- حلّ المشكلة لضمان استخدام مقاييس الأداء لملفات تعريف أساسية تم إنشاؤها عندما تكون ميزة
automaticGenerationDuringBuildغير مفعّلة (Ic144f، b/333024280) - إصلاح
BaselineProfileعمليات تجاوز إعدادات مكوّن Gradle الإضافي لتفعيل إنشاء الملف الشخصي للمرجع وقياس الأداء عند تخصيصnonMinifiedأو نوع تصميم قياس الأداء. (Ib8f05، b/324837887) - يتم إفراغ آثار الطريقة الثابتة في Macrobenchmark، لذا يجب أن يتم تسجيل آثار الطريقة بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- فعِّل خيار حظر البدء في سجلّ بيانات تتبُّع Perfetto للحدّ من خطر عدم توفّر البيانات في بداية بيانات التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- تمت إضافة تحذير عند استخدام منسّق الاختبارات من Android في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات JSON الناتجة لكل وحدة. (Ia1af6، b/286899049)
- فرض استخدام الفاصلة (,) كفاصل آلاف لتحقيق المطابقة في نتائج "استوديو YouTube"، مع تجاهل اللغة المحلية للجهاز (I3e921، b/313496656)
- يتيح
TraceSectionMetricالآن استخدام الشرائح التي تم إنشاؤها باستخدامTrace.{begin|end}AsyncSection. (I91b32، b/300434906) - تمت إضافة تصنيفات log.w / exception إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذا سيتم طرح بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بدون إشعار)، بل يجعله أكثر وضوحًا. بشكل عام، تلك التي
Log.w()ولا يمكنها إرسال مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بإطار العرض، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت إطار العرض (من شرائح واجهة المستخدم/وقت التشغيل). (Id240f، b/329145809) - ألغِ مهام dexopt في الخلفية قبل تشغيل Macrobenchmark لتقليل التشويش. (I989ed)
- تمت إضافة مقياس
frameCountإلىFrameTimingMetricللمساعدة في رصد السيناريوهات التي تتغير فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة، وتم إصلاح مشاكل الإبطال). (I1e5aa) - تم توضيح أنّ
frameOverrunMsهو المقياس المفضّل للتتبُّع عند توفّره في المستندات، وسبب ذلك. (I18749، b/329478323)
الإصدار 1.3.0-alpha02
20 مارس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
الميزات الجديدة
إتاحة استخدام R8 التجريبي في اختبارات الأداء الدقيقة من خلال قواعد proguard المضمّنة يُرجى العِلم أنّ هذه الميزة تجريبية، وتتطلّب الإصدار 8.3 من "مكوّن Android الإضافي في Gradle" لتصغير اختبارات وحدة المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين R8 في
build.gradleلوحدة قياس الأداء، ما سيؤدي إلى زيادة كبيرة في الأداء، حسب عبء العمل. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
إصلاح الأخطاء
- إصلاح تحذير تتبُّع طريقة العرض ليكون في سطر منفصل عن ناتج الاختبار المصغّر. (I0455c، b/328308833)
الإصدار 1.3.0-alpha01
21 فبراير 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية المَعلمات المنطقية
MicrobenchmarkConfigلتجنُّب الكلمة غير الضرورية "يجب" (Ia8f00، b/303387299) - تمت إضافة
BenchmarkRule.measureRepeatedOnMainThreadحتى تتمكّن مقاييس الأداء لسلسلة المحادثات الرئيسية (مثل تلك التي تتضمّن "طرق العرض" أو واجهات مستخدم Compose) من تجنُّب تشغيل أخطاء ANR، خاصةً أثناء المجموعات الكبيرة في عملية التكامل المستمر. (I5c86d) - تمت إضافة
FrameTimingGfxInfoMetric، وهو تنفيذ تجريبي بديل لـFrameTimingMetricمع قياسات واردة مباشرةً من النظام الأساسي، بدلاً من استخراجها من تتبُّع Perfetto. (I457cb، b/322232828) - إضافة إمكانية تفريغ ملف ART أثناء تكرارات
warmUpالفردية (I17923) - أجرينا عدة تغييرات على واجهة برمجة التطبيقات
TraceSectionMetric:- أضِف
Mode.MinوMode.Max. - إضافة وسيطة التصنيف لتجاوز اسم القسم كتصنيف مقياس
- تمّت إضافة اسم الوضع إلى الناتج لتوضيح معنى المقياس
- تم تغيير القيمة التلقائية إلى المجموع، لأنّ معظم استخدام هذا المقياس يكون للأحداث المتكرّرة يُرجى الانتباه إلى هذه التغييرات في استخدام CI، لأنّها قد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل. (Ic1e82، b/301892382، b/301955938)
- أضِف
إصلاح الأخطاء
- تم تحسين رسالة الخطأ في مكوّن Gradle الإضافي لملف تعريف خط الأساس عندما لا يكون الجهاز المُدار المحدّد متوفّرًا (Idea2b، b/313803289)
- إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (I1d2af وb/313992099)
- تم إصلاح عنوان URL الناتج عن ملفات خط الأساس الثابت وملفات بدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
- تم تعديل مهلات مصادر البيانات في محاولة لإصلاح الخطأ
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d، b/323601788) - أضِف وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل من أجل حلّ الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: يمكن استخدامها لتخطّي جميع عمليات إزالة تظليل الأشكال (بما في ذلك تلك التي تتم في عمليات إطلاقStartupMode.Cold)، خاصةً عند قياس أداء التطبيقات التي لم تستخدم بعد الإصدار 1.3 من profileinstaller -
androidx.benchmark.dropShaders.throwOnFailure=true/false: يمكن استخدامها لتحمُّل حالات الأعطال عند محاولة إيقاف برامج التظليل، مثلاً عند قياس أداء التطبيقات بدون الإصدار 1.3 من profileinstaller (I4f573)
-
- تخطّي تتبُّع الأسلوب في سلسلة التعليمات الخاصة بواجهة المستخدم عندما يُتوقّع أن يستغرق ذلك أكثر من بضع ثوانٍ، وتنظيف عمليات تتبُّع الأسلوب عند عرض استثناء (I6e768)
- يتم طرح خطأ عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو معالجتها بعد ذلك. (I4a5ab)
- تم إصلاح المشكلة التي يمكن فيها إقران اللقطات غير المنتهية في بداية التتبُّع ونهايته، ما يؤدي إلى تسجيلها بشكل غير صحيح على أنّها لقطة واحدة طويلة جدًا. (I39353، b/322232828)
- استخدِم
--skip verificationعلى المستوى 30 من واجهة برمجة التطبيقات أو الإصدارات الأحدث عند إعادة تثبيت حزمة على المستوى 30 إلى 33 من واجهة برمجة التطبيقات لمحو ملفات ART الشخصية في إصدارات المستخدمين. يساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تتسبّب في حدوث أعطال على بعض فئات الأجهزة. (Ic9e36) - استخدِم
am force-stopلإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. (I5e028) - تنتظر مكتبة Macrobenchmark الآن
1 secondحتى يمحو التطبيق المستهدف ملف تعريف ART (كانت تنتظر500 msفي السابق). (I85a50، b/316082056) - تحسين الخطأ
FrameTimingMetricعند عدم إنشاء إطارات، وعرض رابط دائمًا لتتبُّع المشكلة عند تعذُّر تحليل المقاييس للمساعدة في تشخيص المشكلة (I956b9) - تم إصلاح عُطل في
FrameTimingMetricبسبب تعذُّر تحليل رقم تعريف الإطار، خاصةً على أجهزة معيّنة تابعة لمصنّع أصلي للجهاز. (Ia24bc، b/303823815، b/306235276) - تم تخفيف مستوى التدقيق في
FrameMetrics، وأضفنا المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
الإصدار 1.2
الإصدار 1.2.4
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.2.4. يتضمّن الإصدار 1.2.4 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة عدم إعداد srcset لملف تعريف خط الأساس في صيغ قياس الأداء يحلّ هذا الإصدار أيضًا المشكلة
automaticGenerationDuringBuildفي المكتبات التي تتسبّب في تبعية دائرية. (I28ab7، b/333024280) - استخدِم
am force-stopلإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. يحلّ هذا الإصلاح مشكلة تعطُّل مقاييسStartupMode.COLDبسبب الخطأ "Package $package must not be running prior to cold start!" (يجب ألا تكون الحزمة $package قيد التشغيل قبل التشغيل على البارد!) لأنّ عملية إيقاف العملية لم تنجح بالكامل. (I5e028)
الإصدار 1.2.3
24 يناير 2024
تم طرح androidx.benchmark:benchmark-*:1.2.3. يتضمّن الإصدار 1.2.3 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة الاستثناء من المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile عندما يكون إصدار المكوّن الإضافي لنظام Gradle المتوافق مع Android هو 8.3.0 أو إصدار أحدث.
- تم إصلاح مشكلة تضمين الملفات الأساسية للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
الإصدار 1.2.2
1 ديسمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.2. يتضمّن الإصدار 1.2.2 هذه التعديلات.
ملفات Baseline Profile
- ستعرض سجلّات التنفيذ مسار ملف بيانات الأداء الأساسية كمعرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).
الإصدار 1.2.1
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
الميزات الجديدة
- تحسين رسالة الخطأ عند إيقاف المستخدم لمتغيرات الاختبار (b/307478189)
- تمت إضافة خصائص لتفعيل دمج عملية تشغيل اختبار Android Studio (b/309805233)، (b/309116324)
الإصدار 1.2.0
18 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.1.0
ملفات Baseline Profile
- تعمل إضافة Baseline Profile Gradle الجديدة على التشغيل الآلي لعملية التقاط الملفات الشخصية للمرجع وتضمينها في سير عمل الاختبار والإصدار.
BaselineProfileRule.collect، وهو الآن إصدار ثابت ومبسّط من واجهة برمجة التطبيقات التجريبية السابقةBaselineProfileRule.collectBaselineProfile- ما عليك سوى تحديد
packageName، والترويج لتطبيقك
- ما عليك سوى تحديد
- بالنسبة إلى المكتبات التي تنشئ ملفات تعريف أساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز البرمجي (الوسيطة
BaselineProfileRule.collect)، أو بشكل أبسط في إضافة Gradle. - الإصلاحات
- تم إصلاح مشكلة جمع بيانات ملفات تعريف خط الأساس على الإصدارات Android U والإصدارات الأحدث (Id1392، b/277645214)
Macrobenchmark
- التحويل البرمجي
- تعمل مكتبة Macrobenchmark الآن على إعادة ضبط حالة التجميع بالكامل بشكل صحيح لكل عملية تجميع. ويتطلّب ذلك إعادة تثبيت حزمة APK قبل الإصدار 14 من نظام التشغيل Android، لذا يُنصح بشدة بإجراء قياس الأداء على الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث إذا كنت تريد الاحتفاظ بالحالة (مثل تسجيل دخول المستخدم) في ما يتم قياسه.
- يمكنك أيضًا حلّ هذه المشكلة من خلال التحكّم في تجميع التطبيق بشكل منفصل، وتخطّي التجميع باستخدام
CompilationMode.Ignore()أو وسيطة القياس.
وسيطات القياس
- إتاحة وسيطة
androidx.benchmark.dryRunMode.enableللأدوات (متوفّرة حاليًا في مكتبة Microbenchmark) لإجراء عمليات التحقّق بشكل أسرع (مثلاً عند إنشاء مقياس الأداء أو في عملية التحقّق قبل إرسال الرمز) - إتاحة استخدام
androidx.benchmark.profiling.mode=StackSamplingوMethodTracing - تمت إضافة
androidx.benchmark.enabledRulesللسماح بإجراء اختبارات على ملفات تعريف خط الأساس مقابل قواعد macrobenchmark أثناء وقت التشغيل - تمت إضافة الوسيطة
androidx.benchmark.perfettoSdkTracing.enableلتفعيل التتبُّع باستخدام tracing-perfetto، مثل تتبُّع إعادة إنشاء Compose. يُرجى العِلم أنّه عند استخدامها معStartupMode.COLD، سيتأثّر التوقيت بشكل كبير لأنّه يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
- إتاحة وسيطة
المتطلبات
- يتطلّب Macrobenchmark الآن الإصدار 1.3.0 أو إصدارًا أحدث من
ProfileInstallerفي التطبيق المستهدَف لتفعيل عملية تسجيل الملف الشخصي أو إعادة ضبطه، ومحو ذاكرة التخزين المؤقت لبرامج التظليل.
- يتطلّب Macrobenchmark الآن الإصدار 1.3.0 أو إصدارًا أحدث من
واجهات برمجة التطبيقات للمقاييس التجريبية الجديدة
- تمت إضافة
TraceSectionMetricالتجريبية، والتي تتيح استخراج توقيت بسيط من حِزمtrace("") {}في تطبيقك، أو TraceMetric للاستفادة من إمكانية طلب البحث الكاملة في PerfettoTraceProcessor. - تمت إضافة
PowerMetricتجريبية لتسجيل معلومات استخدام الطاقة - تمت إضافة
MemoryCountersMetricتجريبي لاحتساب أخطاء الصفحة - تمت إضافة واجهة برمجة التطبيقات التجريبية
PerfettoTraceProcessor، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
- تمت إضافة
الإصلاحات
- تم إصلاح الأعطال التي تحدث عند تثبيت الملفات الشخصية أو استخراجها من تطبيق مثبَّت من حِزم APK متعددة (مثل حِزمة التطبيقات).
- تم إصلاح الخطأ
FrameTimingMetricالذي يتجاهل اللقطات التي تتضمّن معرّفات لقطات غير متسقة (بشكل عام، اللقطات أثناء التموجات على الإصدار 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) (I747d2، b/279088460) - تم إصلاح أخطاء التحليل في عمليات التتبُّع التي تتجاوز 64 ميغابايت (Ief831، b/269949822)
- توضيح الأخطاء التي تحدث عندما لا يتم ضبط صورة نظام التشغيل على الجهاز (خاصةً المحاكي) بشكل صحيح لتتبُّع الأخطاء أو التجميع
- تخطّي التحقّق من مستوى البطارية للأجهزة التي لا تحتوي على بطارية (الصور المقرّبة والبعيدة)
- تحسين إخراج الملفات، مع عرض أخطاء أكثر وضوحًا لأدلة الإخراج غير الصالحة، وإعدادات تلقائية أكثر أمانًا
- تحسين ثبات
StartupMode.COLDمن خلال حذف ذاكرة التخزين المؤقت لبرنامج التظليل باستمرار (يتم عرضها أيضًا من خلالMacrobenchmarkScope.dropShaderCache) - تم إصلاح الإجراء الاحتياطي لواجهة Leanback في
startActivityAndWait.
Microbenchmark
- الميزات
- تم نقل عملية تحديد السمات إلى مرحلة منفصلة بعد المقاييس الأخرى، حتى يتمكّن أحد عمليات الاختبار من عرض نتائج دقيقة للتوقيت ونتائج تحديد السمات.
- واجهات برمجة التطبيقات التجريبية
- تمت إضافة واجهة برمجة التطبيقات التجريبية
MicrobenchmarkConfigلتحديد المقاييس المخصّصة وإعداد التتبُّع وإنشاء الملفات الشخصية. يمكن استخدامها لتسجيل عمليات تتبُّع الطرق أو نقاط التتبُّع (ولكن يجب الانتباه إلى تكلفة التتبُّع). - تمت إضافة واجهات برمجة تطبيقات تجريبية للتحكّم في
BenchmarkStateبشكل منفصل عنBenchmarkRule، بدون JUnit - تمت إضافة سجلّ
PerfettoTraceتجريبي لتفعيل تسجيل عمليات تتبُّع Perfetto، مع إعدادات مخصّصة، بشكل منفصل عن واجهات برمجة التطبيقات الخاصة باختبار الأداء.
- تمت إضافة واجهة برمجة التطبيقات التجريبية
- الإصلاحات
- حلّ بديل لمشكلة عدم توفّر مساحات بيضاء بادئة في نتائج قياس الأداء في "استوديو Android"
- تم إصلاح مشكلة تعذّر عرض التحذيرات في نتائج قياس الأداء في استوديو Android.
- تم إصلاح عُطل
SampledProfilingعلى الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث. - تحسين أداء
dryRunModeبشكل كبير من خلال تخطّيIsolationActivityوتتبُّع Perfetto (سرعة أكبر تصل إلى 10 أضعاف في وضع التشغيل التجريبي على إصدارات نظام التشغيل القديمة)
الإصدار 1.2.0-rc02
6 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة إخراج ملف Benchmark لكي لا يؤدي إلى إيقاف
BaselineProfileنسخ ملفات المكوّن الإضافي. تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بطريقة لا يراها مكوّن Gradle الإضافي. (I8dbcc، b/303034735، b/296453339) - تم توضيح رسائل الخطأ في التحميل
tracing-perfettoعند إدخال البيانات من وحدة macrobenchmark إلى التطبيق المستهدف.
الإصدار 1.2.0-rc01
20 سبتمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن طرح استثناء (مع تعليمات الإصلاح) عندما يتعذّر إعداد تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في أحد مقاييس الأداء. (I6c878، b/286228781)
- إصلاح عُطل نفاد الذاكرة (OOM) عند تحويل سجلّ الإجراءات في ART إلى تنسيق perfetto (I106bd، b/296905344)
- (Macrobenchmark) تم توضيح تصنيف تتبُّع الطريقة عند الربط في نتائج اختبار Studio، وتم إصلاح أسماء ملفات تتبُّع الطريقة لتكون فريدة على الجهاز/المضيف، وبالتالي لن تتم الكتابة فوقها عند تنفيذ أكثر من مقياس أداء واحد. (I08e65، b/285912360)
- يضمن هذا الخيار أن يكون الجهاز نشطًا عند تسجيل ملف تعريف أساسي. (I503fc)
الإصدار 1.2.0-beta05
30 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta05. يتضمّن الإصدار 1.2.0-beta05 هذه التعديلات.
الميزات الجديدة
- يتوافق المكوّن الإضافي للملف الشخصي للمرجع في Gradle الآن مع الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
الإصدار 1.2.0-beta04
23 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta04. يتضمّن الإصدار 1.2.0-beta04 هذه التعديلات.
الميزات الجديدة
- يتوافق المكوّن الإضافي لنظام Gradle الخاص بـ "ملفات Baseline" الآن مع الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
إصلاح الأخطاء
- إصلاح حالات تعذُّر كتابة الملفات أو نقلها أو سحبها (خاصةً تلك التي يتم إنشاؤها من الاختبارات ذات المَعلمات) من خلال تنظيف أسماء ملفات الإخراج بشكل أكبر، وتجنُّب استخدام الرمزين "=" و":" في أسماء ملفات الإخراج (I759d8)
الإصدار 1.2.0-beta03
9 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وسيطة لفلترة
TraceSectionMetricإلى الحزمة المستهدَفة فقط، ويتم تفعيلها تلقائيًا (Ia219b، b/292208786)
إصلاح الأخطاء
- تمت إعادة تسمية وسيطة قياس حالة التطبيق
fullTracing.enableإلىperfettoSdkTracing.enableلضمان الاتساق مع اسم العنصر المصدَّق عليه والمراجع الأخرى. سيظلّfullTracing.enableيعمل كخيار احتياطي. (I7cc00) - ستظهر الآن نقاط التتبُّع الداخلية لمكتبة القياس (بما في ذلك تتبُّع الحلقات/المراحل الدقيقة) في عارض تتبُّع نظام Studio، وسيتم تضمينها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
- تمت إزالة خطأ macrobenchmark NOT-PROFILEABLE على الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث، وتم تخطّي عملية التحقّق من إمكانية إنشاء الملف الشخصي على أجهزة eng/userdebug التي تم الوصول إلى جذرها. (I2abac، b/291722507)
- عند استخدام ميزة "تحسينات تخطيط Dex"، يتم الآن أيضًا اعتبار قواعد ملف بدء التشغيل كقواعد ملف أساسي. (aosp/2684246 وb/293889189)
الإصدار 1.2.0-beta02
26 تموز (يوليو) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات تجريبية للمقاييس والإعدادات المخصّصة للاختبارات الدقيقة (مثل أداة تحليل الأداء والتتبُّع). (I86101، b/291820856)
إصلاح الأخطاء
- الإبلاغ عن خطأ في اختبار الأداء الشامل عند ضبط نظام التشغيل بشكل غير صحيح لتتبُّع الأخطاء، كما تم إصلاحه مؤخرًا في محاكيات ARM64 التي تعمل بالإصدار 26/28 من واجهة برمجة التطبيقات (I0a328، b/282191686)
- تمت إضافة تفاصيل حول تعذُّر إعادة ضبط التجميع لاقتراح تحديث المحاكي، لأنّ بعض المحاكيات حلّت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
- اجعل
androidx.test.uiautomator:uiautomator:2.2.0apiبدلاً منimplementation. (I1981e)
الإصدار 1.2.0-beta01
18 يوليو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح المشاكل التالية: عدم ظهور التحذيرات أحيانًا في نتائج "مقياس الأداء" في "استوديو Android"، وعدم ظهور المسافات البيضاء في بداية السطر في نتائج "مقياس الأداء" في "استوديو Android" (Ia61d0 وb/227205461 وb/286306579 وb/285912360).
- تم إصلاح التعليق الخاص بـ
FrameTimingMetric. اسم المقياس الفرعي هوframeDurationCpuMs. (Ib097f، b/288830934).
الإصدار 1.2.0-alpha16
21 حزيران (يونيو) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha16. يتضمّن الإصدار 1.2.0-alpha16 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تغيير اسم واجهة برمجة التطبيقات
BaselineProfileRule.collectBaselineProfile()إلىBaselineProfileRule.collect(). (I4b665)
إصلاح الأخطاء
- توفير إمكانية استخدام Macrobenchmark مع
androidx.benchmark.profiling.mode = MethodTracing(I7ad37، b/285912360) - تم نقل عملية إنشاء ملفات تعريف Microbenchmark إلى مرحلة منفصلة، لذا تحدث بالتسلسل بعد القياس، بدلاً من استبداله. يتم الآن أيضًا تضمين أقسام تتبُّع
MethodTracingفي عملية تتبُّع Perfetto التي تم تسجيلها، إذا كانت متوفّرة. (I9f657، b/285014599) - أضِف مقياس العدد إلى
TraceSectionMetricباستخدامMode.Sum. (Ic121a، b/264398606)
الإصدار 1.2.0-alpha15
7 يونيو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha15. يتضمّن الإصدار 1.2.0-alpha15 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
MemoryUsageMetricتجريبية لتتبُّع استخدام الذاكرة في تطبيق مستهدَف. (I56453، b/133147125، b/281749311) - إتاحة استخدام إعدادات Perfetto المخصّصة بالكامل مع
PerfettoTrace.record(If9d75 وb/280460183) - تمت إضافة سمة لتخطّي إنشاء ملفات تعريف خط الأساس. الاستخدام:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration(I37fda، b/283447020)
تغييرات واجهة برمجة التطبيقات
- تنشئ واجهة برمجة التطبيقات
collectBaselineProfileدائمًا ملفات تعريف أساسية ثابتة. تمت إزالة واجهة برمجة التطبيقاتcollectStableBaselineProfile، ويجب استخدامcollectBaselineProfileبدلاً منها. (I17262، b/281078707) - تم تغيير وسيطة
filterPredicateفيBaselineProfileRuleإلى قيمة غير فارغة، مع قيمة تلقائية مكافئة حتى يكون سلوك الفلتر التلقائي أكثر وضوحًا في المستندات. (I3816e)
إصلاح الأخطاء
- يمكنك إيقاف
IsolationActivityوPerfetto tracing فيdryRunModeلتحسين الأداء بشكل كبير، لأنّ هاتين الميزتين كانتا تستغرقان معظم وقت التشغيل. (Ie4f7d) - إتاحة أخذ عيّنات من حزمة التنفيذ في Macrobenchmarks باستخدام وسيطتَي اختبار لقياس حالة التطبيق
androidx.benchmark.profiling.mode=StackSamplingوandroidx.benchmark.profiling.sampleFrequency(I1d13b، b/282188489) - تم إصلاح عُطل يحدث عند إسقاط برامج تظليل على نظام التشغيل Android U (الإصدار 34 من واجهة برمجة التطبيقات)، وكذلك على المحاكيات. (I031ca، b/274314544)
الإصدار 1.2.0-alpha14
3 مايو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha14. يتضمّن الإصدار 1.2.0-alpha14 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة
FrameTimingMetricتجاهل الإطارات التي تتضمّن أرقام تعريف غير متسقة. سيؤدي ذلك إلى تجاهل بعض الحركات على أحدث إصدارات النظام الأساسي (المستوى 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) للعديد من اللقطات أثناء تحرُّكRenderThread(على سبيل المثال، أثناء تموّج). (I747d2، b/279088460) - تم إصلاح مشكلة تحليل معالج التتبُّع لعمليات التتبُّع التي يزيد حجمها عن 64 ميغابايت. (Ief831، b/269949822)
- تم إصلاح مشكلة تعذُّر إنشاء ملفات تعريف أساسية على Android U بسبب اختلاف ناتج الأمر
pm dump-profiles. (Id1392، b/277645214) - إصلاح النص البرمجي الخاص بقفل سرعة وحدة معالجة الرسومات لمقارنة السلاسل بشكل صحيح (I53e54، b/213935715)
الإصدار 1.2.0-alpha13
5 أبريل 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha13. يتضمّن الإصدار 1.2.0-alpha13 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مَعلمة نوع الملف الشخصي عند إنشاء ملفات تعريف أساسية لدعم ميزة ملف تعريف بدء التشغيل القادمة (Ie20d7، b/275093123)
- تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة
TraceMetricلتحديد مقاييس مخصّصة بالكامل استنادًا إلى محتوى تتبُّع Perfetto. (I4ce31، b/219851406) - أضِف مقياسًا تجريبيًا لتحديد عدد أخطاء الصفحات أثناء قياس الأداء. (I48db0)
الإصدار 1.2.0-alpha12
22 مارس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha12. يتضمّن الإصدار 1.2.0-alpha12 هذه التعديلات.
الميزات الجديدة
- تم إصدار الإصدار الأولي من مكوّن Gradle الإضافي الجديد لملف تعريف الأداء الأساسي، ما يسهّل إنشاء ملف تعريف أداء أساسي ويبسّط عملية سير عمل المطوّر.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية تتبُّع Perfetto على الإصدارَين 21 و22 من واجهة برمجة التطبيقات، ويشمل ذلك كلاً من Microbenchmarks وواجهات برمجة التطبيقات التجريبية
PerfettoTrace. قبل هذا الإصدار، كانت اتصالاتUiAutomationغير موثوقة على بعض الأجهزة. (I78e8c) - تمت إضافة واجهة برمجة تطبيقات تجريبية عامة إلى
PerfettoTraceProcessorلتفعيل تحليل محتوى التتبُّع. هذه خطوة نحو مقاييس مخصّصة بالكامل استنادًا إلى بيانات تتبُّع Perfetto. (I2659e، b/219851406)
الإصدار 1.2.0-alpha11
8 مارس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha11. يتضمّن الإصدار 1.2.0-alpha11 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الأعطال في
MacrobenchmarkRuleوBaselineProfileRuleعند إعادة تثبيت الملفات الشخصية أو استخراجها من حِزمة تطبيق تتضمّن حِزم APK متعددة. (I0d8c8، b/270587281)
الإصدار 1.2.0-alpha10
22 فبراير 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha10. يتضمّن الإصدار 1.2.0-alpha10 هذه التعديلات.
الميزات الجديدة
- في نظام التشغيل Android 14 والإصدارات الأحدث، لم يعُد اختبار Macrobenchmark يعيد تثبيت التطبيقات المستهدَفة لإعادة ضبط حالة التجميع، وذلك بفضل ميزة جديدة في النظام الأساسي. في السابق، كان من الضروري توفُّر جهاز تم الوصول إلى جذوره، أو التعامل مع جميع حالات التطبيق (مثل تسجيل دخول المستخدم) التي تتم إزالتها قبل تشغيل كل مقياس أداء. (I9b08c، b/249143766)
إصلاح الأخطاء
- إصلاح الخطأ الذي يؤدي إلى توقّف
DryRunModeعن العمل عند استخدام ملف شخصي فارغ، وذلك من خلال تخطّي عملية التجميع. بدلاً من ذلك، يتم تنفيذ تكرار واحد واستخراج الملف الشخصي لضمان تسجيل بعض البيانات. (I2f05d، b/266403227) - إصلاح عُطل
PowerMetricعند التحقّق من توفّر powerstats على مستويات واجهة برمجة التطبيقات القديمة (5faaf9، b/268253898)
الإصدار 1.2.0-alpha09
11 يناير 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha09. يتضمّن الإصدار 1.2.0-alpha09 هذه التعديلات.
إصلاح الأخطاء
- تم تفعيل تمرير
Noneإلى وسيطة أداةandroidx.benchmark.enabledRulesلإيقاف جميع مقاييس الأداء / إنشاء ملفات تعريف خط الأساس. (I3d7fd، b/258671856) - إصلاح عملية تسجيل
PerfettoTraceفي وحدات التطبيق (أي حِزم APK للاختبار غير المزوّدة بأدوات القياس الذاتي) (I12cfc) - تم إصلاح ترتيب وسيطة سحب ملف تعريف خط الأساس الثابت في ناتج Studio (I958d1، b/261781624)
- يتم الآن التعرّف على واجهة برمجة التطبيقات 33 لمحاكي ARM بشكل صحيح عند محاولة تشغيل اختبار Macrobenchmark، وسيتم عرض التحذير بشكل صحيح. (69133b،b/262209591)
- تخطّي التحقّق من مستوى البطارية على الأجهزة التي لا تحتوي على بطارية في Macrobenchmark (fe4114 وb/232448937)
الإصدار 1.2.0-alpha08
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهتَي برمجة تطبيقات تجريبيتين جديدتين،
PerfettoTrace.record {}وPerfettoTraceRule، لتسجيل بيانات تتبُّع Perfetto (المعروفة أيضًا باسم "بيانات تتبُّع النظام") كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16) - يقبل
BaselineProfileRuleالآن دالة منطقية للفلترة بدلاً من قائمة ببادئات الحِزم. يمنح ذلك الاختبار التحكّم الكامل في الفلترة. (I93240) - أضِف واجهة برمجة تطبيقات تجريبية
BaselineProfileRule.collectStableBaselineProfileتنتظر إلى أن يصبح ملف تعريف خط الأساس ثابتًا لعدد N من التكرارات. (I923f3) - إضافة إمكانية تحديد بادئة اسم ملف الإخراج عند إنشاء ملفات تعريف أساسية باستخدام
BaselineProfileRule(I7b59f، b/260318655)
إصلاح الأخطاء
- تحسين أمان كتابة ملفات الإخراج، ما من شأنه أن يمنع عدم كتابة ملفات الإخراج أو إلحاقها بدون إشعار، خاصةً على الإصدارين 21 و22 من واجهة برمجة التطبيقات (If8c44، b/227510293)
- أصلِح ناتج تتبُّع
simpleperfلإنشاء الملف ووضعه بشكل صحيح. من المفترض أن يحلّ ذلك أيضًا المشاكل التي يتعذّر فيها استرداد ملف باستخدام Gradle. (I12a1c، b/259424099) - تحسين رسالة الخطأ التي يتم عرضها عند استخدام إصدار قديم جدًا من profileinstaller يطلب منك هذا الخطأ الآن تعديل إصدار profileinstaller (الإصدار 1.2.1) لقياس "ملفات تعريف الخط الأساس" على مستويات واجهة برمجة التطبيقات من 31 إلى 33، بدلاً من الإشارة إلى أنّ هذه العملية غير متاحة. (Ia517f، b/253519888)
- إصلاح العديد من حالات تعذُّر تنفيذ أوامر shell بسبب رسالة الخطأ Print needed API <=23، بما في ذلك حالات تعذُّر إعداد ملف perfetto الثنائي وحالات تعذُّر تسجيل التتبُّع (Ib6b87 وb/258863685)
- ترتيب قواعد الملف الشخصي التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات عند تغيُّرها بمرور الوقت (عند تسجيل قواعد الملف الشخصي في نظام التحكّم بالمصادر) (Ie2509)
- تم إصلاح عُطل في الإصدارات غير المجذَّرة التي تعمل بإصدار أقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) مع ظهور الرسالة
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches(I6c245، b/259508183)
المشاكل المعروفة
- قد يتعطّل تطبيق MacrobenchmarkScope.dropShaderCache() بسبب عدم توفّر سجلّ بث في بيان profileinstaller لم يتم إصداره بعد. (I5c728، b/258619948) لحلّ المشكلة في profileinstaller:1.3.0-alpha02، أضِف ما يلي إلى ملف AndroidManifest.xml الخاص بتطبيقك (وليس ملف AndroidManifest.xml الخاص بأداة القياس):
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
الإصدار 1.2.0-alpha07
9 نوفمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha07. يتضمّن الإصدار 1.2.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة واجهة برمجة التطبيقات
PowerMetricلقياس الطاقة واستهلاكها في Macrobenchmarks. (Ife601، b/220183779) - تم إصلاح
MacrobenchmarkScope.dropShaderCache()لإزالة ذاكرة التخزين المؤقت لبرنامج تظليل الرسومات. يؤدي ذلك إلى إزالة حوالي 20 ملي ثانية من التشويش من مقاييسStartupMode.COLD، لأنّه يتم الآن محو برامج التظليل باستمرار في كل تكرار. في السابق، كانت عملية تجميعPartialباستخدام تكرارات الإحماء تعرض أرقامًا سريعة بشكل غير صحيح، لأنّ التخزين المؤقت لأداة التظليل كان من المرجّح أن يحدث أثناء الإحماء. يتطلّب هذا الإصلاح إما جهازًا تم عمل روت له أو استخدامprofileinstaller:1.3.0-alpha02في التطبيق المستهدف. للاطّلاع على تغييرات واجهة برمجة التطبيقات في مكتبةProfileInstaller، يُرجى الرجوع إلى صفحة ProfileInstaller 1.30-alpha02. (Ia5171، b/231455742) - تمت إضافة
TraceSectionMode("label", Mode.Sum)، ما يتيح قياس إجمالي الوقت المستغرَق في أقسام تتبُّع متعددة تحمل التصنيف نفسه. على سبيل المثال، سيسجّلTraceSectionMetric("inflate", Mode.Sum)مقياسًاinflateMsلإجمالي الوقت الذي تمّ استخدامه في اختبار الأداء الشامل لتضخيم البيانات. تم أيضًا إزالة شرط المستوى 29 من واجهة برمجة التطبيقات، لأنّTraceSectionMetricيعمل معandroidx.tracing.Traceعلى مستويات واجهة برمجة التطبيقات الأقل، وذلك باستخدامforceEnableAppTracingداخل التطبيق المستهدف. (Id7b68، b/231455742)
إصلاح الأخطاء
- تحسين أمان جميع أوامر shell الداخلية من خلال التحقّق من صحة جميع المخرجات/الأخطاء (I5984d، b/255402908، b/253094958)
- حدِّد الجهاز في الأمر
adb pullالخاص بالملف الأساسي، حتى يمكن نسخ أمر السحب ببساطة في حال ربط أجهزة متعددة (ما يصل إلى محاكي واحد) (I6ac6c، b/223359380) - إضافة خطأ إذا لم يتم إعداد حزمة APK لاختبار Macrobenchmark على أنّها ذاتية القياس يمنع هذا الخطأ إجراء قياس الأداء على مستوى النظام من داخل عملية التطبيق المستهدف. في هذه الحالة، لن يتمكّن Macrobenchmark من تجميع التطبيق أو إيقافه أو بدء تشغيله على البارد، أو التحكّم في أذوناته (I4279b).
- تم إصلاح مشكلة في
measureRepeated()حيث لا يؤديStartupMode.COLDإلى إيقاف العملية المستهدَفة بعدsetupBlock. الآن، لن يؤديsetupBlockالتفاعل مع التطبيق إلى استمرار تشغيل عملية التطبيق، ولن يتم قياس وقت بدء التشغيل على البارد بشكل غير صالح. (I8ebb7)
الإصدار 1.2.0-alpha06
24 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
BaselineProfileRuleلم يعُد يتطلّب الوصول إلى الجذر على Android 13 (المستوى 33 لواجهة برمجة التطبيقات)، ولم يعُد في مرحلة تجريبية. (Ie0a7d، b/250083467، b/253094958)- يحلّ هذا التغيير أيضًا مشكلة كيفية نقل الملفات الشخصية من أحد التطبيقات إلى القرص على الأجهزة غير المتجذّرة، ولكنّه يتطلّب تعديل الاعتمادية profileinstaller للتطبيق المستهدَف.
- لاستخدام
BaselineProfileRuleأوCompilationMode.Partial(warmupIterations)على جهاز غير مجذَّر، عليك أيضًا تحديث التطبيق المستهدَف لاستخدامandroidx.profileinstaller.profileinstaller:1.3.0-alpha01. يتيح ذلك نقل الملف الشخصي إلى القرص بشكل صحيح، حتى يمكن تجميعه/استخراجه.
إصلاح الأخطاء
- إصلاح عُطل
SampledProfilingعلى الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث (I40743، b/236109374)
الإصدار 1.2.0-alpha05
5 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- إصلاح تقسيم اللقطات في أداة "عرض تتبُّع النظام" في "استوديو Android" للعمليات التي تم تسجيلها في مقياس الأداء (I3f3ae، b/239677443)
- تعديل
FrameTimingMetricلإدراجFrameOverrunعلى أنّه يتطلّب استخدام الإصدار 31 من واجهة برمجة التطبيقات بدلاً من الإصدار 29 (I716dd، b/220702554) - اضبط عدد التكرارات على
BaselineProfileRule، واعرض خطأً بوضوح في حال عدم تثبيت الحزمة المستهدَفة (تمّ ذلك من قبل في MacrobenchmarkRule). (Ic09a3، b/227991471)
الإصدار 1.2.0-alpha04
21 سبتمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.
الميزات الجديدة
إضافة دعم لوسيطة
dryRunMode.enableفي أداة macrobenchmark (متوفّرة حاليًا في أداة micro) لتسريع عملية التطوير المحلية والتحقّق من صحة الأتمتة داخل التطبيقات (مثل عملية التحقّق قبل إرسال الرمز). يؤدي ذلك إلى إلغاء التكرارات إلى 1، وتخطّي عملية التجميع، وإخفاء جميع أخطاء الإعداد، وإيقاف إخراج ملف .json الخاص بالقياس. (Ib51b4، b/175149857)في سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=trueفي ملف build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
إصلاح الأخطاء
- تم إصلاح المشكلة
StartupTimingMetricلكي لا يتطلّب إطلاق "الأنشطة المقاسة" من خلالMacrobenchmarkScope.startActivityAndWait(). وهذا يعني أنّ المقياس يمكنه رصد عمليات التشغيل من الإشعارات مثلاً، أوContext.startActivity()، أو التنقّل المستند إلى نشاط في التطبيق، أو أوامر shell. (Ia2de6، b/245414235) - تم إصلاح الخطأ الذي كان يؤدي إلى انتهاء المهلة في
startActivityAndWaitعند محاولة انتظار اكتمال التشغيل على المحاكيات من خلال تقليل صرامة رصد اللقطات. (Ibe2c6، b/244594339، b/228946895)
الإصدار 1.2.0-alpha03
7 أيلول (سبتمبر) 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha03. يتضمّن الإصدار 1.2.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهات برمجة تطبيقات تجريبية لاستخدام
BenchmarkStateبشكل مستقل، أي بشكل منفصل عنBenchmarkRule/JUnit4. (Id478f، b/228489614)
إصلاح الأخطاء
- تمت إضافة خيار احتياطي لتقنية Leanback في
startActivityAndWait. (01ed77، b/242899915)
الإصدار 1.2.0-alpha02
24 أغسطس 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- استخدام
am force stopتلقائيًا فيMacrobenchmarkScope.killProcess()، حتى عند تزويده بإذن الوصول إلى الجذر، باستثناء أثناء إنشاء "الملف الشخصي للمرجع". يمكن إلغاء ذلك باستخدام وسيط منطقي اختياري. (02cce9، b/241214097)
إصلاح الأخطاء
- إتاحة إنشاء ملفات تعريف أساسية لتطبيقات النظام (I900b8، b/241214097)
- إتاحة التحقّق من مقاييس الطاقة في ODPM على الأجهزة غير المزودة بحق الوصول إلى الجذر (a38c78، b/229623230)
الإصدار 1.2.0-alpha01
27 يوليو 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
الميزات الجديدة
- مكوّن tracing-perfetto-common جديد يتيح للأدوات تفعيل تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في تطبيق يعرضه (I2cc7f)
تمت إضافة وسيطة
androidx.benchmark.enabledRulesللأدوات من أجل تفعيل فلترة عمليات تشغيل اختبارات macrobenchmark لتشمل المقاييس فقط أو إنشاء ملفات تعريف أساسية فقط. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfilesعلى محاكي فقط. يمكن أيضًا استخدام قائمة مفصولة بفواصل. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
PowerMetricجديد لقياس مهام الطاقة والطاقة في مقاييس الأداء. (I9f39b، b/220183779) - تمت إضافة وضع تجميع جديد
CompilationMode.Ignoreلتخطّي إعادة ضبط الملف الشخصي والتجميع. (Ibbcf8، b/230453509) - تمت إضافة مَعلمة جديدة إلى
BaselineProfileRule#collectBaselineProfileلفلترة ملف الإخراج حسب أسماء الحِزم (If7338، b/220146561) - يسمح هذا الخيار للمطوّر بتفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
- تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لبرامج التظليل في
MacrobenchmarkScope. (I32122) - تتيح للمطوّر إعداد عرض نوع المقياس وفئات الأنظمة الفرعية المطلوبة. (I810c9)
- في السابق، كان يتم عرض
UnsupportedOperationExceptionفي مقياس الأداء إذا تم تشغيله على جهاز غير متوافق. لا يحدث خطأ UOE الآن إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثلPowerMetric.configure). (I5cf20، b/227229375) - تمت إضافة
TotalPowerMetricوTotalEnergyMetricلقياس إجمالي الطاقة واستهلاكها في كل فئة من فئات الأنظمة في اختبارات الأداء الشاملة. (I3b26b، b/224557371)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة ضبط الطرق البرمجية المترجمة بشكل صحيح بين كل اختبار macrobenchmark على الإصدارات غير المجذَّرة. يتطلّب ذلك للأسف إعادة تثبيت حزمة APK في كل تكرار، ما سيؤدي إلى محو بيانات التطبيق لكل اختبار Macrobenchmark. (I31c74، b/230665435)
- إصلاح عُطل تسجيل التتبُّع على الإصدارَين 21 و22 من واجهة برمجة التطبيقات (If7fd6، b/227509388، b/227510293، b/227512788)
- إصلاح آلية رصد اكتمال تشغيل الأنشطة لتصحيح الاستثناء "تعذّر قراءة أي مقاييس" في اختبارات الأداء الكبيرة عند بدء التشغيل (Ia517c)
الإصدار 1.1.1
الإصدار 1.1.1
9 نوفمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.1.1. يتضمّن الإصدار 1.1.1 هذه التعديلات.
إصلاح الأخطاء
- إصلاح المشكلة
android.system.ErrnoException: open failed: EACCESالتي كانت تحدث على بعض أجهزة Android 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأحدث هذا اختيار دقيق لإصلاح من1.2.0-alpha01. (aosp/2072249)
الإصدار 1.1.0
الإصدار 1.1.0
15 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
- هذا الإصدار مطابق للإصدار
androidx.benchmark:benchmark-*:1.1.0-rc03.
التغييرات المهمة منذ الإصدار 1.0.0
يتيح لك التوافق مع Jetpack Macrobenchmarks، الذي يتيح لك قياس تفاعلات التطبيق الكامل مثل بدء التشغيل والتمرير، إمكانية تسجيل عمليات التتبُّع وقياس أقسام عمليات التتبُّع.
إتاحة ملفات Baseline Profiles
CompilationMode.Partialلقياس فعالية "ملفات تعريف المرجع".@BaselineProfileRuleلإنشاء ملفات تعريف أساسية تلقائيًا لرحلة المستخدم الأساسية.
إتاحة مقاييس التخصيص وإنشاء الملفات الشخصية أثناء عمليات تشغيل الاختبارات المصغّرة
الإصدار 1.1.0-rc03
1 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
تجنَّب إعادة تثبيت الحزمة المستهدَفة في كل تكرار من اختبار الأداء. ( aosp/2093027 وb/231976084)
إزالة التأخير
300msمنpressHome()(aosp/2086030 وb/231322975)تحسين سرعة التكرار في Macrobenchmark من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023 وb/231323582)
إتاحة استخدام الأجهزة المُدارة من Gradle عند إنشاء "ملفات تعريف Baseline" باستخدام Macrobenchmarks (aosp/2062228 وb/228926421)
الإصدار 1.1.0-rc02
11 مايو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc02. يتضمّن الإصدار 1.1.0-rc02 هذه التعديلات.
- يُرجى العِلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، إذ يتم الآن إعادة تثبيت التطبيقات بالكامل بين كل مقياس أداء لضمان دقة القياسات.
إصلاح الأخطاء/التغييرات في السلوك
تم إصلاح مشكلة عدم إعادة ضبط تجميع التطبيق بشكل صحيح بين اختبارات الأداء الشاملة، وعدم إعادة ضبطه على الإطلاق في الإصدارات غير المجذَّرة. يحلّ هذا الإجراء العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationModeفي القياسات أو تأثيره بشكل طفيف. لحلّ هذه المشكلة، يعيد التطبيق المستهدَف الآن تثبيت كل طريقة اختبار بالكامل، ما يؤدي إلى محو بيانات التطبيق بين كل اختبار Macrobenchmark. (I31c74، b/230665435)بما أنّ هذا الإجراء يمنع التطبيقات من إعداد الحالة قبل الاختبارات، أصبح من الممكن الآن تخطّي عملية التجميع أو إعادة التثبيت لتجنُّب هذه المشكلة. يمكنك مثلاً تجميع الهدف بالكامل باستخدام أمر shell
cmd package compile -f -m speed <package>، ثم تجاوز خطوة التجميع في Macrobenchmark.على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseأتحنا إمكانية مشاركة وحدة بين اختبارات إنشاء "ملف تعريف المرجع" واختبارات macrobenchmark من خلال إضافة وسيطة أداة
androidx.benchmark.enabledRules. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfilesعلى محاكي. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
الإصدار 1.1.0-rc01
20 أبريل 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تستخدم روابط إخراج ملفات "الملف الأساسي" في "استوديو Android" الآن اسم ملف فريدًا. بهذه الطريقة، تعكس النتائج دائمًا أحدث نتائج استخدام
BaselineProfileRule. ( aosp/2057008 وb/228203086 )
الإصدار 1.1.0-beta06
6 أبريل 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta06. يتضمّن الإصدار 1.1.0-beta06 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل تسجيل التتبُّع على الإصدار 21 أو 22 من واجهة برمجة التطبيقات (If7fd6، b/227509388)
- إصلاح آلية رصد اكتمال تشغيل الأنشطة لتصحيح الاستثناء "تعذّر قراءة أي مقاييس" في اختبارات الأداء الكبيرة عند بدء التشغيل (Ia517c)
- إصلاح مقاييس بدء التشغيل في Macrobenchmarks عند استخدام
CompilationMode.None()قبل هذا التغيير، كان يبدو أنّCompilationMode.Partial()أبطأ منCompilation.None(). (611ac9).
الإصدار 1.1.0-beta05
23 مارس 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta05. يتضمّن الإصدار 1.1.0-beta05 هذه التعديلات.
إصلاح الأخطاء
- إيقاف الحزمة بعد تخطّي تثبيت الملف الشخصي عند استخدام
CompilationMode.None(aosp/1991373) - تم إصلاح المشكلة المتمثّلة في عدم قدرة Macrobenchmarks على جمع مقاييس بدء التشغيل عند استخدام
StartupMode.COLD. (aosp/2012227 b/218668335)
الإصدار 1.1.0-beta04
23 فبراير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta04. يتضمّن الإصدار 1.1.0-beta04 هذه التعديلات.
إصلاح الأخطاء
إصلاح المقاييس غير المتوفّرة على نظام التشغيل Android 10،
NoSuchElementExceptionالناتجة عن عدم تسجيل أسماء العمليات بشكل صحيح في عمليات التتبُّع (Ib4c17، b/218668335)استخدِم
PowerManagerلرصد الحدّ من سرعة المعالجة بسبب ارتفاع درجة الحرارة على الإصدار Q (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأحدث. يؤدي ذلك إلى تقليل عدد النتائج الإيجابية الخاطئة بشكل كبير في رصد الحدّ من سرعة المعالج بسبب الحرارة (إعادة تجربة مقياس الأداء بعد فترة استراحة مدتها 90 ثانية)، كما يؤدي إلى تسريع مقاييس الأداء بشكل كبير على إصدارات المستخدمين. وتوفّر أيضًا ميزة رصد التقييد حتى عندما تكون سرعات المعالجة مقفلة (إذا كانت مقفلة على سرعة عالية جدًا بالنسبة إلى البيئة المادية للجهاز). (I9c027، b/217497678، b/131755853)فلترة ملفات تعريف الأداء التي تم أخذ عيّنات منها في simpleperf لعرض
measureRepeatedسلسلة محادثات فقط لتسهيل الفحص (Ic3e12، b/217501939)إتاحة مقاييس من العمليات الفرعية المسماة لواجهة المستخدم في التطبيقات المتعددة العمليات (Ice6c0، b/215988434)
فلترة قواعد "الملف الشخصي للمرجع" لاستهداف الإصدار 9 من نظام التشغيل Android (حزمة تطوير البرامج (SDK) 28) aosp/1980331 b/216508418
تخطّي تثبيت الملف الشخصي عند استخدام
Compilation.None()بالإضافة إلى ذلك، يتم عرض تحذيرات في التقرير عندما يستخدم التطبيق إصدارًا قديمًا منandroidx.profileinstallerو"المكوّن الإضافي لنظام Gradle المتوافق مع Android". aosp/1977029
الإصدار 1.1.0-beta03
9 فبراير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
AudioUnderrunMetricإلى مكتبة Macrobenchmark ضمن علامة تجريبية للسماح برصد نقص البيانات الصوتية (Ib5972) لم يعُد
BaselineProfileRuleيقبل حظرsetupلأنّ هذه الوظيفة كانت مماثلة لوظيفةprofileBlock. (Ic7dfe، b/215536447)على سبيل المثال
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى عدم تعديل عمليات تتبُّع أداة تحليل الأداء المصغّرة في عمليات التشغيل اللاحقة عند ربطها في ناتج Studio (I5ae4d، b/214917025)
- منع أوامر shell الخاصة بالتجميع على الإصدار 23 من واجهة برمجة التطبيقات (Ice380)
- تمت إعادة تسمية
FrameCpuTimeإلىFrameDurationCpu، وFrameUiTimeإلىFrameDurationUiلتوضيح أنّ هذه القيم هي مدة وليس طوابع زمنية، ولتتطابق مع البادئات. (I0eba3، b/216337830)
الإصدار 1.1.0-beta02
26 يناير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن ربط نتائج "أخذ عيّنات من سلسلة استدعاء الدوال البرمجية" / "تتبُّع أسلوب" القياسات الصغيرة في ناتج "استوديو Android"، على غرار نواتج القياس الأخرى، ولا يتم إخفاء مقياس التخصيص. (Idcb65، b/214440748، b/214253245)
- تعرض BaselineProfileRule الآن الأمر
adb pullفي logcat وفي ناتج "استوديو Android" لسحب ملف نصي BaselineProfile تم إنشاؤه. (f08811)
الإصدار 1.1.0-beta01
12 يناير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة تجاهل تفعيل وسيط أداة تحليل الأداء (I37373، b/210619998)
- إزالة
CompliationModesالمتوقّفة نهائيًا (I98186، b/213467659) - تم تغيير وسيطة ملف تعريف خط الأساس
CompilationMode.Partialإلى تعداد لتوضيحها. (Id67ea)
الإصدار 1.1.0-alpha13
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha13. يتضمّن الإصدار 1.1.0-alpha13 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة ميزة "تتبُّع نشاط النظام" ذات الحمل المنخفض إلى ناتج اختبار الأداء المصغّر على Android Q (المستوى 29 من واجهة برمجة التطبيقات أو أعلى)، مع العلم أنّ هذه الميزة لا تسجّل حاليًا عمليات التتبُّع المخصّصة (عبر واجهات برمجة التطبيقات
android.os.Traceأوandroidx.tracingمن Jetpack) لتجنُّب التأثير في النتائج. يجب أن يكون هذا التتبُّع مفيدًا في تشخيص حالات عدم الاستقرار، خاصةً من المصادر خارج مقياس الأداء. (I298be، b/205636583، b/145598917) - توضيح
CompilationModesإلى ثلاث فئات: "كامل" و"بلا" و"جزئي" في السابق، كانت تتم تسميتها بشكل غير متسق استنادًا إلى وسيطات التجميع (التي نتعامل معها الآن على أنّها تفاصيل التنفيذ) والميزات. ويجعل ذلك المقايضات والمجموعات المحتملة والسلوك على مستوى إصدارات المنصة أكثر وضوحًا. (I3d7bf، b/207132597) - يتم الآن إعداد مقياس وقياسه دائمًا في أزواج وبالترتيب. يمكنك الآن طلب اسم الحزمة والتكرار (على الرغم من أنّ التكرار قد يكون
nullفي سيناريوهات الإحماء معيّنة). (Id3b68، b/208357448، b/208369635)
إصلاح الأخطاء
- تم التعامل مع القيمة الثابتة
CompilationMode.Speedبشكل غير صحيح على أنّهاNone(I01137)
الإصدار 1.1.0-alpha12
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha12. يتضمّن الإصدار 1.1.0-alpha12 هذه التعديلات.
الميزات الجديدة
- إضافة TraceSectionMetric تجريبية لقياسات التوقيت المخصّصة المستندة إلى التتبُّع (I99db1، b/204572664)
إصلاح الأخطاء
- تنشيط الجهاز في كل تكرار لضمان إمكانية اختبار واجهة المستخدم، ويتطلّب ذلك إيقاف شاشة القفل. (Ibfa28، b/180963442)
- إصلاح أعطال متعدّدة في وضع تحليل الأداء StackSampling على المحاكيات والأجهزة غير المجذَّرة (Icdbda، b/202719335)
- تمت إزالة فترة النوم التي تبلغ 0.5 ثانية في نهاية كل تكرار. إذا لاحظت فقدان مقاييس مع هذا التغيير، يُرجى الإبلاغ عن خطأ. (Iff6aa)
- تقليل فرص فقدان البيانات وخفض الحمل الزائد للذاكرة الناتج عن التتبُّع (Id2544 وb/199324831 وb/204448861)
- تقليل حجم التتبُّع بنسبة% 40 تقريبًا من خلال التبديل إلى تنسيق تخزين sched المضغوط (Id5fb6، b/199324831)
- تم تعديل عمليات تنفيذ مقاييس بدء التشغيل لتنتهي دائمًا في نهاية renderthread. سيكون هذا السلوك أكثر اتساقًا على مستوى إصدارات المنصة، كما سيكون أكثر تطابقًا مع مقاييس الإحالات الناجحة داخل التطبيق. (Ic6b55)
الإصدار 1.1.0-alpha11
3 نوفمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha11. يتضمّن الإصدار 1.1.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- أصبح لدى Macrobenchmark الآن
minSdkVersionبقيمة23. (If2655) - تضيف هذه السمة
BaselineProfileRuleتجريبية جديدة يمكنها إنشاء ملفات تعريف أساسية لرحلة المستخدم الأساسية في التطبيق. سنقدّم مستندات تفصيلية في وقت لاحق. (Ibbefa، b/203692160) - تزيل هذه السمة نوع واجهة measureRepeated الذي تمت إضافته للمتصلين بلغة Java، لأنّه تسبّب في غموض عند إكمال/حلّ الطريقة. على مستخدمي Java إعادة Unit.Instance من measureRepeated. إذا كان هذا الأمر يسبّب لك إزعاجًا، يُرجى تقديم تقرير بالخلل، وسنعيد النظر في هذه المشكلة في إصدار مستقبلي. (Ifb23e، b/204331495)
الإصدار 1.1.0-alpha10
27 أكتوبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha10. يتضمّن الإصدار 1.1.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إتاحة StartupTimingMetric على الإصدارات السابقة من المستوى 23 من واجهة برمجة التطبيقات تتيح هذه الطريقة الجديدة أيضًا التعامل بشكل أفضل مع الدالة reportFullyDrawn() لانتظار عرض المحتوى ذي الصلة. (If3ac9، b/183129298)
- تمت إضافة JvmOverloads إلى طرق MacrobenchmarkScope المتعددة للمتصلين بلغة Java. (I644fe، b/184546459)
- توفير دالة MacrobenchmarkRule.measureRepeated بديلة تستخدم
Consumer<MacrobenchmarkScope>للاستخدام الاصطلاحي في لغة Java (If74ab، b/184546459)
إصلاح الأخطاء
- إصلاح مشكلة عدم بدء عمليات التتبُّع في وقت مبكر بما يكفي، ومشكلة عدم توفّر بيانات المقاييس من المتوقّع أن يؤدي ذلك إلى إصلاح استثناءات "تعذُّر قراءة أي مقاييس أثناء قياس الأداء" التي تسبّبت فيها المكتبة نفسها. (I6dfcb، b/193827052، b/200302931)
- تمت إعادة تسمية FrameNegativeSlack إلى FrameOverrun لتوضيح معناها، أي مقدار تجاوز الإطار الزمني المخصّص له. (I6c2aa، b/203008701)
الإصدار 1.1.0-alpha09
13 أكتوبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha09. يتضمّن الإصدار 1.1.0-alpha09 هذه التعديلات.
إصلاح الأخطاء
- إتاحة إيقاف ذاكرة التخزين المؤقت لصفحة Kernel بدون إذن الوصول إلى الجذر على الإصدار 31 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، ما سيؤدي إلى زيادة دقة عمليات التشغيل StartupMode.COLD (Iecfdb، b/200160030)
الإصدار 1.1.0-alpha08
29 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha08. يتضمّن الإصدار 1.1.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تفعيل مقاييس الأداء الكبيرة التي تتضمّن التمرير السريع لتتوافق مع الإصدار 23 من واجهة برمجة التطبيقات (If39c2، b/183129298)
- إضافة نوع جديد من المقاييس المستندة إلى عيّنات إلى واجهة المستخدم وإخراج JSON، مع التركيز على النسب المئوية لعدّة عيّنات لكل تكرار (I56247، b/199940612)
- التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو Android"). (I69249، b/197008210)
الإصدار 1.1.0-alpha07
1 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha07. يتضمّن الإصدار 1.1.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم رفع الحد الأدنى لمستوى واجهة برمجة التطبيقات إلى 21 ليعكس أدنى مستوى لواجهة برمجة التطبيقات من المفترض أن يكون متوافقًا في المستقبل. سيستمر عرض الحد الأدنى الحالي من مستوى واجهة برمجة التطبيقات المتوافق من خلال RequiredApi()، وهو حاليًا 29 (I440d6، b/183129298).
إصلاح الأخطاء
- إصلاحات
ProfileInstallerلتسهيل تشغيل تطبيقات تستخدم ملفات تعريف أساسية لاختبارات MacroBenchmark باستخدامCompilationMode.BaselineProfile(I42657، b/196074999) ملاحظة: يجب أيضًا التحديث إلى الإصدارandroidx.profileinstaller:profileinstaller:1.1.0-alpha04أو إصدار أحدث. - أصبحت مقاييس الأداء
StartupMode.COLDوCompilationMode.Noneأكثر ثباتًا الآن. (I770cd، b/196074999)
الإصدار 1.1.0-alpha06
18 أغسطس 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha06. يتضمّن الإصدار 1.1.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وسيط
androidx.benchmark.iterationsللأدوات من أجل السماح بتجاوز عدد التكرارات يدويًا عند الاختبار أو إنشاء الملفات الشخصية محليًا. (6188be، b/194137879)
إصلاح الأخطاء
- تم التبديل إلى Simpleperf كأداة تلقائية لإنشاء ملفات تعريف العيّنات في الإصدار 29 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ic4b34، b/158303822)
المشاكل المعروفة
- لا يزال "
CompilationMode.BaselineProfile" قيد التطوير. تجنَّب استخدامها لتحديد مدى ملاءمة الملف الشخصي في الوقت الحالي.
الإصدار 1.1.0-alpha05
4 أغسطس 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
تم إلغاء الإصدار 1.1.0-alpha04 قبل إصداره بسبب حدوث عُطل متقطع. b/193827052
تغييرات واجهة برمجة التطبيقات
- تم التبديل إلى startActivityAndWait لتفعيل التشغيل من خلال
am start، ما يقلّل وقت كل تكرار للقياس بمقدار 5 ثوانٍ تقريبًا، ولكن لن يكون بإمكانك استخدام حِزم الأهداف. (I5a6f5، b/192009149
إصلاح الأخطاء
- تقليل حساسية رصد الحد الأقصى للتردد الحراري، وإعادة احتساب خط الأساس إذا تم رصد الحدود القصوى بشكل متكرر (I7327b)
- إصلاح FrameTimingMetric لتعمل على الإصدار التجريبي من Android S (Ib60cc وb/193260119)
- استخدِم
EmptyActivityلإخراج التطبيق المستهدَف من حالة الإيقاف الإجباري من أجل توفير دعم أفضل لميزةCompilationMode.BaselineProfile. (Id7cac، b/192084204) - تم تغيير امتداد ملف التتبُّع إلى
.perfetto-traceليتوافق مع معيار النظام الأساسي. (I4c236، b/174663039) - تعرض StartupTimingMetric الآن المقياس "fullyDrawnMs" لقياس الوقت المستغرَق حتى يكتمل عرض تطبيقك. لتحديد هذا المقياس لتطبيقك، استدعِ الدالة Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، مثلاً عند تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات تحقّق من إصدار التصميم على ComponentActivity). يُرجى العِلم أنّه يجب تشغيل الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر الدالة startActivityAndWait اكتمال عرض الصفحة). (If1141، b/179176560)
- تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم بعمليات التتبُّع بمقدار 50 ملي ثانية أو أكثر (Ic8390، b/193923003)
- زيادة كبيرة في معدّل تكرار الاستطلاع عند إيقاف التتبُّع، ما يمكن أن يقلّل من وقت تشغيل مقياس الأداء عند بدء التشغيل بنسبة %30 أو أكثر (Idfbc1، b/193723768)
الإصدار 1.1.0-alpha03
16 حزيران (يونيو) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
CompilationMode.BaselineProfileجديد لدعم الملفات الشخصية المثبَّتة باستخدام مكتبة Jetpack ProfileInstaller. (aosp/1720930)
إصلاح الأخطاء
تم تعديل نموذج رمز Gradle لإيقاف أخطاء قياس الأداء من أجل استخدام واجهة برمجة تطبيقات غير متوقّفة نهائيًا مع صيغة تتوافق أيضًا مع مستخدمي .gradle.kts.
مثلاً:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
الإصدار 1.1.0-alpha02
18 أيار (مايو) 2021
يوفّر الإصدار 1.1.0-alpha02 من أداة القياس أداة Macrobenchmark التي تُعدّ من المكوّنات المهمة في عملية القياس. بالإضافة إلى أنّ benchmark يتيح لك قياس حلقات وحدة المعالجة المركزية، يتيح لك macrobenchmark قياس تفاعلات التطبيق بأكمله، مثل بدء التشغيل والتمرير، وتسجيل عمليات التتبُّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
الميزات الجديدة
تمت إضافة عناصر Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro)
- تسجيل مقاييس أداء بدء التشغيل والتمرير/الصور المتحركة من تطبيقك، سواء على الجهاز أو في عملية الدمج المتواصل
- تسجيل عمليات التتبُّع وفحصها من داخل "استوديو Android"
إصلاح الأخطاء
- حلّ مشكلة أذونات shell في دليل الإخراج على نظام التشغيل Android 12 (ملاحظة: قد يتطلّب ذلك تحديث المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار التجريبي 7.0.0 وتحديث استوديو Android إلى الإصدار Arctic Fox (2020.3.1) لمواصلة تسجيل ملفات الإخراج على الأجهزة المتأثرة). (Icb039)
- تفعيل التخزين المؤقت لإعدادات الدعم في BenchmarkPlugin (6be1c1 وb/159804788)
- إخراج الملفات بشكل مبسط - مفعّل تلقائيًا، في دليل لا يتطلّب
requestLegacyExternalStorage=true(8b5a4d، b/172376362) - إصلاح تحذيرات logcat في مكتبة الإصلاحات بشأن عدم العثور على سلسلة JIT في إصدارات النظام الأساسي التي لا تتوفّر فيها (I9cc63، b/161847393)
- إصلاح الحد الأقصى لمعدّل تكرار جهاز القراءة (I55c7a)
الإصدار 1.1.0-alpha01
10 يونيو 2020
تم إصدار androidx.benchmark:benchmark-common:1.1.0-alpha01 وandroidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 وandroidx.benchmark:benchmark-junit4:1.1.0-alpha01. يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.
الميزات الجديدة في الإصدار 1.1
- مقياس التخصيص: يتم الآن تشغيل مرحلة إضافية في مقاييس الأداء بعد مرحلة الإعداد والوقت، ما يؤدي إلى تسجيل أعداد التخصيص. يمكن أن تتسبّب عمليات التخصيص في حدوث مشاكل في الأداء على الإصدارات القديمة من النظام الأساسي (أصبح 140ns في الإصدار O هو 8ns في الإصدار M - تم قياسه على Nexus5X، مع ساعات مغلقة). يتم عرض هذا المقياس في ناتج وحدة تحكّم "استوديو Android"، بالإضافة إلى
- إتاحة إنشاء ملفات تعريف: يمكنك الآن تسجيل بيانات إنشاء ملفات التعريف لتنفيذ اختبار الأداء، وذلك لمعرفة سبب بطء تشغيل الرموز البرمجية. يتيح تطبيق Benchmark تسجيل تتبُّع الطريقة أو أخذ عيّنات من الطريقة من ART. يمكن فحص هذه الملفات باستخدام "أداة تحليل الأداء" داخل "استوديو Android" من خلال النقر على ملف > فتح.
- يوفّر المكوّن الإضافي لنظام Gradle الخاص بأداة القياس الآن إعدادات تلقائية لتسهيل عملية الإعداد:
- يتم ضبط
testBuildTypeعلى الإصدار تلقائيًا، وذلك لتجنُّب استخدام التبعيات التي تتضمّن تغطية التعليمات البرمجية. يتم أيضًا ضبط release buildType كنوع الإصدار التلقائي، ما يتيح لـ "استوديو Android" اختيار تنويعة التصميم الصحيحة تلقائيًا عند فتح مشروع للمرة الأولى. (b/138808399) - يتم استخدام
signingConfig.debugكإعداد توقيع تلقائي (b/153583269)
- يتم ضبط
** إصلاح الأخطاء **
- تم تقليل الحمل الزائد للانتقال إلى وضع الاستعداد بشكل كبير، حيث كان القياس الأول لكل معيار أداء أعلى بشكل مصطنع من غيره. كانت هذه المشكلة أكثر وضوحًا في مقاييس الأداء الصغيرة جدًا (جزء من مليون من الثانية أو أقل). (b/142058671)
- تم إصلاح الخطأ
InstrumentationResultParserالذي يظهر لكل مقياس أداء عند التشغيل من سطر الأوامر. (I64988، b/154248456)
المشاكل المعروفة
- لا تعرض استدعاءات Gradle لـ Benchmark من سطر الأوامر النتائج مباشرةً. يمكنك حلّ هذه المشكلة من خلال تنفيذ العملية في Studio أو تحليل ملف إخراج JSON للحصول على النتائج.
- يتعذّر على ميزة "إعداد التقارير عن الأداء" استرداد التقرير من الأجهزة التي تم تثبيت تطبيق عليها باستخدام applicationId ينتهي بـ "android" أو "download" (غير حساسة لحالة الأحرف). على المستخدمين الذين يواجهون هذه المشكلة ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 4.2-alpha01 أو إصدار أحدث.
الإصدار 1.0.0
الإصدار 1.0.0 من Benchmark
20 نوفمبر 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0 وandroidx.benchmark:benchmark-junit4:1.0.0 بدون أي تغييرات منذ الإصدار 1.0.0-rc01. يتضمّن الإصدار 1.0.0 هذه التعديلات.
الميزات الرئيسية في الإصدار 1.0.0
تتيح لك مكتبة Benchmark كتابة مقاييس أداء لرموز التطبيق والحصول على النتائج بسرعة.
ويمنع حدوث مشاكل في إعدادات الإصدار ووقت التشغيل، كما يثبّت أداء الجهاز لضمان دقة القياسات واتّساقها. يمكنك تشغيل اختبارات الأداء مباشرةً في "استوديو Android" أو في عملية الدمج المتواصل لمراقبة أداء الرمز البرمجي بمرور الوقت ومنع حدوث تراجع.
تشمل الميزات الرئيسية ما يلي:
- تثبيت الساعة
- تحديد أولوية سلاسل المحادثات تلقائيًا
- إتاحة اختبار أداء واجهة المستخدم، مثل نموذج RecyclerView
- التسخين والتكرار المتوافقان مع التجميع أثناء التنفيذ
- ناتج مقياس الأداء بتنسيق JSON للمعالجة اللاحقة
الإصدار 1.0.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-rc01 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 وandroidx.benchmark:benchmark-junit4:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة تتبُّع systrace إلى مقاييس الأداء
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استقرار المقاييس حيث لا تنتهي عملية JIT قبل الإحماء بسبب خفض الأولوية (b/140773023)
- دليل موحّد لإخراج ملفات JSON في الإصدارَين 3.5 و3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
الإصدار 1.0.0-beta01
9 أكتوبر 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-beta01 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 وandroidx.benchmark:benchmark-junit4:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
الميزات الجديدة
- تنفيذ عملية جمع البيانات المُهمَلة قبل كل عملية إعداد مسبق لتقليل الضغط على الذاكرة من أحد مقاييس الأداء إلى المقياس التالي (b/140895105)
إصلاح الأخطاء
- تمت إضافة الاعتمادية
androidx.annotation:android-experimental-lint، حتى يعرض رمز Java أخطاء lint بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما توفّره التعليقات التوضيحية التجريبية في Kotlin لمستخدمي Kotlin. - يرصد الآن بشكل صحيح استخدام وسيطة
additionalTestOutputDirللأدوات من أجل الإخراج في الإصدار 3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك لمعرفة الوقت الذي سيتولّى فيه المكوّن الإضافي لنظام Gradle المتوافق مع Android عملية نسخ البيانات. - تم إصلاح مشكلة عدم رصد تردد الساعة في ملف JSON لعرض
-1بشكل صحيح (b/141945670).
الإصدار 1.0.0-alpha06
18 أيلول (سبتمبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-alpha06 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عملية تحقّق من الاستخدام غير الصحيح للحزمة القديمة لتطبيق Test Runner، والتي تقدّم الآن رسالة خطأ أكثر فائدة
تغييرات واجهة برمجة التطبيقات
- أصبحت التعليقات التوضيحية التجريبية
ExperimentalAnnotationReportمتاحة للجميع بشكل صحيح. يتطلّب استخدام واجهة برمجة التطبيقات التجريبية BenchmarkState#report الآن هذا التعليق التوضيحي
الإصدار 1.0.0-alpha05
5 أيلول (سبتمبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-alpha05 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha05. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تم الآن تصنيف واجهة برمجة التطبيقات
BenchmarkState.reportDataعلى أنّها تجريبية
إصلاح الأخطاء
- تم إصلاح البرنامج النصي لقفل الساعة الذي كان يتعذّر تنفيذه على الأجهزة التي لا تتضمّن أدوات سطر الأوامر
cutأوexpr. - تم إصلاح مشكلة في مهمة
./gradlew lockClocksكانت تتوقف على الأجهزة التي تم الوصول إلى جذرها باستخدام إصدار قديم من أداة su، والذي لم يكن متوافقًا مع العلامة-c.
الإصدار 1.0.0-alpha04
7 آب (أغسطس) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-alpha04 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تمت أيضًا إضافة مستندات جديدة حول كيفية استخدام مكتبة Benchmark بدون Gradle، وذلك للاستخدام مع أنظمة تصميم مختلفة (مثل Bazel أو Buck)، وعند التشغيل في بيئة التكامل المستمر. لمزيد من المعلومات، اطّلِع على إنشاء مقاييس أداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المتواصل.
الميزات الجديدة
- المكوّن الإضافي لنظام Gradle
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
AndroidBenchmarkRunnerتلقائيًا (b/138374050) - تمت إضافة إمكانية نسخ البيانات الجديدة المستندة إلى Android Gradle Plugin عند تنفيذ اختبارات الأداء وعند استخدام الإصدار 3.6 أو الإصدارات الأحدث من Android Gradle Plugin
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
- إضافات بتنسيق JSON
- إجمالي مدة تشغيل اختبار الأداء المعياري للناتج (b/133147694)
- إنّ مقاييس
@Parameterizedالتي تستخدم سلسلة اسم (مثل@Parameters(name = "size={0},depth={1}")) تعرض الآن أسماء المَعلمات وقيمها لكل مقياس في الناتج بتنسيق JSON (b/132578772)
- وضع التشغيل التجريبي (b/138785848)
- تمت إضافة وضع "التشغيل التجريبي" لتشغيل كل حلقة من حلقات قياس الأداء مرة واحدة فقط، وذلك للتحقّق من الأخطاء/الأعطال بدون تسجيل القياسات. يمكن أن يكون ذلك مفيدًا، على سبيل المثال، لتشغيل مقاييس الأداء بسرعة في مرحلة ما قبل الإرسال للتأكّد من أنّها لا تتضمّن أخطاء.
تغييرات واجهة برمجة التطبيقات
- تم تغيير بنية الوحدة، ما أدّى إلى تقسيم المكتبة (b/138451391)
- يحتوي
benchmark:benchmark-junit4على فئات تعتمد على JUnit:AndroidBenchmarkRunnerوBenchmarkRule، وقد تم نقل كلتيهما إلى حزمةandroidx.benchmark.junit4 - يحتوي
benchmark:benchmark-commonعلى بقية المنطق، بما في ذلك واجهة برمجة التطبيقات BenchmarkState - سيسمح هذا التقسيم للمكتبة بتوفير إمكانية قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
- يحتوي
- يتم الآن التعامل مع تحذيرات الإعداد على أنّها أخطاء، وسيؤدي ذلك إلى تعطُّل الاختبار (b/137653596)
- ويتم ذلك لتشجيع إجراء قياسات دقيقة، خاصةً في CI
- يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام وسيط أداة القياس. على سبيل المثال:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
إصلاح الأخطاء
- عند حدوث أخطاء أثناء الكتابة إلى وحدة التخزين الخارجية على أجهزة Q، يتم عرض رسائل أكثر تفصيلاً مع اقتراحات حول كيفية حلّ المشكلة
- يتم تشغيل الشاشات تلقائيًا أثناء عمليات قياس الأداء، بدلاً من حدوث خطأ عند إيقاف الشاشة
المساهمات الخارجية
- نشكر "سيرغي زاخاروف" على المساهمة في تحسين إخراج JSON وإصلاح المشاكل المتعلقة بإيقاف الشاشة.
الإصدار 1.0.0-alpha03
2 تموز (يوليو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha03 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- عرض مدة النوم بسبب الحدّ من سرعة المعالجة الحرارية لكل مقياس أداء في تقرير JSON الكامل
إصلاح الأخطاء
- لن يكون من الضروري تطبيق المكوّن الإضافي لنظام Gradle بعد المكوّنات الإضافية لنظام Android وكتلة Android
- إتاحة تقارير مقاييس الأداء على أجهزة Android 10 التي تستخدم التخزين الفرعي
الإصدار 1.0.0-alpha02
6 يونيو 2019
تم طرح androidx.benchmark:1.0.0-alpha02 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
يُرجى العِلم أنّنا نتعامل مع مخطّط JSON على أنّه واجهة برمجة تطبيقات. ونخطّط لاتباع قيود الثبات نفسها التي تفرضها واجهات برمجة التطبيقات الأخرى: أن تكون ثابتة (باستثناءات نادرة جدًا) عند طرحها في الإصدار التجريبي، وثابتة في الإصدار النهائي، مع إضافة ميزات فقط في الإصدارات الثانوية وإجراء تغييرات أو عمليات إزالة في الإصدارات الرئيسية.
تغييرات واجهة برمجة التطبيقات
تمت إعادة تصميم مخطّط JSON. من المرجّح أن تقتصر التغييرات الإضافية على مخطط JSON على عمليات الإضافة:
- تمت إعادة تنظيم بنية عنصر النتيجة لتوفير مجموعات مقاييس إضافية في المستقبل (b/132713021)
- تمت إضافة معلومات سياقية عن التشغيل التجريبي، مثل معلومات الجهاز والإصدار وما إذا كانت الساعات مضبوطة، إلى العنصر ذي المستوى الأعلى (b/132711920)
- أصبحت أسماء مقاييس الوقت تتضمّن الآن "ns" (b/132714527)
- تمت إضافة إحصاءات إضافية لكل مقياس تم تسجيله (الحد الأقصى والمتوسط والحد الأدنى)، وتمت إزالة الإحصاءات الموجزة المبسّطة "بالنانو ثانية" (b/132713851)
تمت إزالة مخرجات XML (b/132714414)
إزالة ميزة رصد الحدّ الأقصى للحرارة من واجهة برمجة التطبيقات
BenchmarkState.reportData(b/132887006)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ثبات
./gradlew lockClocksعلى بعض الأجهزة التي تعمل بأحدث إصدارات نظام التشغيل (b/133424037) - تم إيقاف رصد التقييد للمحاكي (b/132880807)
الإصدار 1.0.0-alpha01
7 أيار (مايو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.