مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
| آخر تحديث | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 7 أكتوبر 2026 | 1.5.0 | - | - | 1.6.0-alpha01 |
تحديد الاعتماديات
لإضافة اعتمادية على Benchmark، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle الخاص بوحدة Macrobenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
اختبار الأداء الدقيق
لاستخدام Microbenchmark في مشروعك، أضِف الاعتماديات التالية إلى ملف build.gradle الخاص بوحدة اختبار الأداء الدقيق:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
توفّر مكتبة Microbenchmark أيضًا مكوّنًا إضافيًا لـ Gradle لاستخدامه مع وحدة اختبار الأداء الصغير.
يضبط هذا المكوّن الإضافي الإعدادات التلقائية لإعدادات الإنشاء للوحدة، ويُعدّ نسخة من نتائج الاختبار إلى المضيف، ويقدّم
مهمة ./gradlew lockClocks.
لاستخدام المكوّن الإضافي، أدرِج السطر التالي في مجموعة plugins في ملف
build.gradle من المستوى الأعلى:
رائع
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
بعد ذلك، طبِّق المكوّن الإضافي على ملف build.gradle الخاص بوحدة الأداء المرجعي.
رائع
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker لمزيد من المعلومات.
الإصدار 1.6
الإصدار 1.6.0-alpha01
7 أكتوبر 2026
تم طرح androidx.benchmark:benchmark-*:1.6.0-alpha01. يتضمّن الإصدار 1.6.0-alpha01 هذه التعديلات.
الميزات الجديدة
- تستخدم مهمة
:lockClocksقياس الأداء الآن وضع الأداء الثابت عند توفّره، بدلاً من التنفيذ السابق الذي كان متاحًا فقط على الأجهزة التي تم الوصول إلى جذرها. وهذا يعني أنّه يمكنك قفل الساعات على المزيد من الأجهزة المادية للحصول على نتائج ثابتة، وهو أمر مفيد بشكل خاص في اختبارات الأداء الدقيقة الثابتة. يُرجى الإبلاغ عن المشاكل المتعلّقة بخفض سرعة المعالج بسبب الحرارة إذا لاحظت السلوك الجديد. (I0d032)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
MemoryProfilingConfigإلىExperimentalConfigللسماح بتفعيل ميزة "إنشاء ملفات تعريف الذاكرة" في Perfetto عند تنفيذ اختبارات Macrobenchmark. (Ibc931)
إصلاح الأخطاء
- تم إصلاح خلل في أداة microbenchmark كان يؤدي أحيانًا إلى تخطّي التقاط سجلّ الإجراءات بحذر شديد لتجنُّب أخطاء ANR. (Ifc307)
- تم إصلاح مشكلة التقاط الملف الشخصي للمرجع للعمليات التي لا تستخدم نمط تسمية
:<suffix>. (I512ab) - يتم الآن الإبلاغ عن روابط تتبُّع المحلِّل ضمن قسم منفصل باسم "تتبُّعات التحليل" في ملخّصات IDE. (Id639f)
- تم إصلاح خطأ في إفراغ الملفات الافتراضية كان يؤدي إلى ظهور
Unable to flush profiles for <packagename>. (I48ccc) - تم إصلاح مشكلة المزامنة في سجلّات الإجراءات المضمّنة في تتبُّع النظام. Ifd2e33 b/537688349
- المكوّن الإضافي Baseline Profile Gradle Plugin: تم تحسين
CollectBaselineProfileTaskلإتاحة العثور على ملفاتtest-result.pbفي الأدلة الفرعية، ما يتيح التوافق مع منصة الاختبار المدمجة الجديدة. Id9c488 b/543799367
الإصدار 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
1 يوليو 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 هذه التعديلات.
- تم تعديلها لتعتمد على الإصدار التجريبي من UiAutomator 2.4.
الإصدار 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**extension. (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(). - لمزيد من المعلومات حول الإصدار 2.4 من
UiAutomator، يُرجى الاطّلاع على المستندات.
الميزات الجديدة
- لم يعُد المكوّن الإضافي Baseline Profile Gradle يتطلّب
newDsl=falseفي الإصدار 9.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (Iaaac7، b/443311090) - يمكنك توسيع نطاق إعدادات التتبُّع لتشمل حجم النواة (مثل صغير/كبير) في عمليات تتبُّع النظام/Perfetto التي تم تسجيلها في مقياس الأداء. (I8e397، b/457469959)
التغييرات في واجهة برمجة التطبيقات
- (في UiAutomator) تم تغيير انتظار
startActivityإلى انتظار نافذة جديدة. (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 أثناء عمليات قياس الأداء، خاصةً عمليات CI الطويلة. ملاحظة: يجب تشغيل مقاييس أداء واجهة المستخدم باستخدامmeasureRepeatedOnMainThread
Macrobenchmark
- تمت إضافة حل بديل في واجهة برمجة التطبيقات 34 والإصدارات الأحدث لأنّ
CompilationMode.None()سيؤدي إلى أداء غير متّسق بسبب تجميع التطبيقات جزئيًا الآن من خلال ميزة "التحقّق" في وقت تشغيل Android بعد التشغيل الأول. - ميزة تجريبية: يمكن أن يسلّط Startup Insights الضوء على بعض المشاكل الشائعة في Macrobenchmark لبدء التشغيل من خلال تمرير
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))). - تمت إضافة ArtMetric التي يمكن استخدامها لرصد عملية تجميع أثناء التنفيذ وتحميل الفئات غير المحسَّن، وكلاهما مفيد للتحقّق من صحة تحسينات الملف الشخصي للمرجع.
ملفات تعريف المرجع
- يجمع
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 long لسهولة استخدام المتصل بلغة 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 API. تم الآن وضع علامة "تجريبية" على دوال الإضافة إلىTraceProcessor.runServer {}، لأنّه من المرجّح أن يتم نقلها وجعلها غير تجريبية في المستقبل. (I358b4)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل ميزة "القياس" و"التقاط بيانات ملف Baseline Profile" مع الإصدار 36 من واجهة برمجة التطبيقات بسبب تغيير في
pgreptoybox يتطلّب الآن-aلطباعة سطر الأوامر الكامل. (Idc991) - فلترة الإعدادات التلقائية للتتبُّع من أجل تقليل خطر فقدان البيانات في عمليات التتبُّع على مستويات واجهة برمجة التطبيقات الأحدث (I54e8a)
- تمت إضافة وسيطة قياس تجريبية
androidx.benchmark.killExistingPerfettoRecordings، والتي يمكن ضبطها علىfalseللسماح بمواصلة التقاط تتبُّع Perfetto الحالي. يتم تلقائيًا إيقاف عمليات تتبُّع Perfetto الحالية على الجهاز لمنع حدوث تداخل. (I02a3c) - سيصبح حقل JSON
context.osCodenameAbbreviatedالآن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) - أصبحت معظم عمليات تنفيذ Startup Insights الآن علنية/تجريبية، وتم نقلها إلى العنصر
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 مضمّن في أداة قياس الأداء الكلي. يمكن استخدام العنصر الجديد على جهاز 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()، لأنّ ميزة تمييز/تحليل الاستوديو معطّلة. (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()غير متّسق ولا يمثّل الأداء الأولي في أسوأ الحالات. يساعد هذا في حلّ مشكلة تغيير في النظام الأساسي يسمح لحالة تجميعverifyفي ART بتجميع التطبيقات جزئيًا (يؤثر فقط في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (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 Profile وقياس الأداء في التطبيقات المثبَّتة على مستخدم ثانوي، مثل أي تطبيق على أجهزة 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 العام. يتم تسجيل عدد ومدة تجميع JIT، وبدء الفئة (حيثما كان متاحًا)، والتحقّق من الفئة. بالإضافة إلى ذلك، تم إجراء تغييرات علىCaptureInfoلتضمين إصدار ART الرئيسي الاختياري مع الإصدار التلقائي. (I930f7) - أضِف
coefficientOfVariationإلى ناتج JSON الخاص باختبار الأداء لعرض الثبات ضمن عملية اختبار أداء معيّنة. (Ib14ea)
إصلاح الأخطاء
- تم إصلاح
CollectBaselineProfileTaskعندما يحتوي جهاز AVD على مسافات. (Ia0225، b/371642809) - Speculative fix for errors from
StartupMode.COLDexceptions: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وbenchmark موجودَين، كان سيتم إنشاؤهما من جديد. (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) على استرداد ملفات نتائج الملف الشخصي للمرجع أو اختبار الأداء الكبير من 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 على هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة سمة gradle
androidx.baselineprofile.suppressWarningsلإخفاء جميع تحذيرات ملفات التعريف الأساسية (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على "خطأ" لإيقاف هذا السلوك (لا يُنصح بذلك لعمليات تشغيل CI، لأنّ أخطاء ANR يمكن أن تسبّب مشاكل في عمليات تشغيل CI الطويلة).
- تمت إضافة
- التصغير
- قواعد ProGuard مضمّنة لتحسين قياس الأداء المصغّر مع تفعيل ميزة إزالة البيانات غير الضرورية
- يتطلّب تصغير الرموز/R8 في وحدة مكتبة الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، ويمكن تفعيله من خلال
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
- إضافة اقتراحات لتصحيح الأخطاء إلى رسالة الخطأ في بث برنامج 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 / عملية تسجيل "ملف Baseline Profile"
- تمت زيادة الحد الأقصى المقترَح لإصدار AGP إلى 9.0.0-alpha01.
- تأكَّد من أنّ مهمتَي
mergeArtProfileوmergeStartupProfileتنتظران دائمًا إنشاء الملف الشخصي للمرجع. (I623d6، b/343086054) - سيؤدي إنشاء ملف شخصي للمرجع بنجاح إلى عرض ملخّص للتغييرات (I824c8، b/269484510)
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- تم إصلاح مشكلة لضمان استخدام مقاييس الأداء للملفات الشخصية للمرجع التي تم إنشاؤها عندما يكون
automaticGenerationDuringBuildغير مفعَّل (Ic144f، b/333024280) - تم إصلاح عمليات إلغاء سمات المكوّن الإضافي Gradle في "
BaselineProfile" لتفعيل إنشاء الملف الشخصي للمرجع وقياس الأداء عند تخصيص نوع تصميم "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)
- تفعيل تتبُّع علامات porter تلقائيًا في مقاييس الأداء ويؤدي ذلك إلى تسجيل نقاط تتبُّع قفل التنشيط، على سبيل المثال. (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.ID context.build.version.codename- يساوي android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار التجريبي (بما في ذلك بنية الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutputإلى مخرجات JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع الملفات الشخصية (مثل Perfetto وسجلّات الإجراءات) (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لقيم تالفة للأحداث غير المرتبطة بالتعليمات (I7386a، b/286306579) - تم إصلاح
resumeTiming/runWithTimingDisabledليتوافق مع ترتيب أولوية المقاييس، وتقليل تأثير إيقاف/استئناف المقاييس ذات الأولوية المنخفضة بشكل كبير على نتائج المقاييس ذات الأولوية الأعلى. على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطة قياس الأداءcpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند حدوث إيقاف مؤقت أو استئناف. (I39c2e، b/286306579، b/307445225) - تم تقليل احتمال تسبُّب تجميع عيّنات من تسلسل استدعاء الدوال في حدوث خطأ
measureRepeatedOnMainThreadمن خلال نقل عملية تحويل تجميع عيّنات من تسلسل استدعاء الدوال خارج سلسلة التعليمات الرئيسية، وذلك لتجنُّب تجاوز المهلة المحدّدة لسلسلة التعليمات الرئيسية. (I487a8، b/342237318) - تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للنظام الأساسي لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 من AGP أو الإصدارات الأحدث (مثل الإصدار 3.3 من R8) ولجميع الإصدارات عند استخدام الإصدار 8.1 من AGP أو الإصدارات الأحدث (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android بالترقية إلى الإصدار 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 هذه التعديلات.
إصلاح الأخطاء
- يتم التعامل مع رمز الخروج
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 mainline (إذا كانت متوفّرة على الجهاز، وإلا ستكون القيمة -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)
- تسهيل عملية تسجيل سجلّ الإجراءات التي يتم تنفيذها في نطاق مدة
measureBlock()الفعلية باستخدام Macrobenchmark في السابق، كان يبدأ عند تشغيل العملية المستهدَفة وكان يتيح فقط عمليات التشغيل على البارد (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 لقياس الأداء. تسجّل هذه الأداة، على سبيل المثال، نقاط تتبُّع wakelock. (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) - تم إصلاح عمليات إلغاء سمات المكوّن الإضافي Gradle في "
BaselineProfile" لتفعيل إنشاء الملف الشخصي للمرجع وقياس الأداء عند تخصيص نوع تصميم "nonMinified" أو قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تفريغ سجلّات الإجراءات في اختبار الأداء الكلي، لذا من المفترض أن يتم تسجيل سجلّات الإجراءات بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- يمكنك تفعيل ميزة حظر بدء تسجيل تتبُّع Perfetto للحدّ من خطر فقدان البيانات في بداية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- تمت إضافة تحذير عند استخدام "منسّق الاختبارات من Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON الناتجة لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
- فرض استخدام الفاصلة (،) كفاصل للآلاف لضمان الاتساق في مخرجات "استوديو Android"، مع تجاهل لغة الجهاز (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 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" لإزالة البيانات غير الضرورية من اختبارات وحدات المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين R8 في
build.gradleلوحدة قياس الأداء، ما سيؤدي إلى زيادة كبيرة في الأداء، حسب عبء العمل. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
إصلاح الأخطاء
- تم إصلاح تحذير سجلّ الإجراءات ليكون في سطر منفصل عن مخرجات microbench. (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لتجنُّب ظهور أخطاء ANR في مقاييس الأداء لسلسلة التعليمات الرئيسية (مثل تلك التي تتفاعل مع واجهات مستخدم Views أو Compose)، خاصةً أثناء تشغيل مجموعات كبيرة من الاختبارات في بيئة التكامل المستمر (CI). (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) - تمت إضافة وسيطتَي قياس لتجاوز سلوك إسقاط تظليل الألوان من أجل حلّ مشكلة الأعطال عند قياس أداء التطبيقات بدون الإصدار 1.3 من
ProfileInstaller:-
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 الشخصية في إصدارات المستخدمين. يساعد ذلك في تجاوز تحذيرات "Google 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 قبل التشغيل على البارد" بسبب عدم نجاح عملية الإيقاف بالكامل. (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 هذه التعديلات.
ملفات تعريف المرجع
- ستعرض سجلّات التنفيذ مسار ملف الإخراج للملف الشخصي للمرجع كمعرّف موارد منتظم (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
الملفات الشخصية للمرجع
- يؤدي المكوّن الإضافي الجديد لنظام 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للسماح باختبارات قواعد الملف الشخصي للمرجع مقابل اختبارات قياس الأداء الكلي لفلترة وقت التشغيل - تمت إضافة الوسيطة
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عند الإدخال من وحدة قياس الأداء الكلي إلى التطبيق المستهدَف.
الإصدار 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) تم توضيح تصنيف سجلّ الإجراءات عند ربطه في نتائج اختبارات "استوديو Android"، وتم إصلاح أسماء ملفات سجلّ الإجراءات لتكون فريدة على الجهاز/المضيف، وبذلك لن يتم استبدالها عند تشغيل أكثر من مقياس أداء واحد. (I08e65، b/285912360)
- يضمن هذا الخيار أنّ الجهاز يكون نشطًا عند تسجيل ملف تعريف أساسي. (I503fc)
الإصدار 1.2.0-beta05
30 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta05. يتضمّن الإصدار 1.2.0-beta05 هذه التعديلات.
الميزات الجديدة
- يتوافق المكوّن الإضافي Baseline Profile Gradle الآن مع الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
الإصدار 1.2.0-beta04
23 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta04. يتضمّن الإصدار 1.2.0-beta04 هذه التعديلات.
الميزات الجديدة
- أصبح المكوّن الإضافي Baseline Profiles Gradle متوافقًا الآن مع الإصدار 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)
- تمت إزالة خطأ NOT-PROFILEABLE في اختبارات macrobenchmark على الإصدار 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)
إصلاح الأخطاء
- الإبلاغ عن خطأ في اختبار macrobench عند إعداد نظام التشغيل بشكل غير صحيح لتتبُّع الأخطاء، كما تم إصلاحه مؤخرًا في محاكيات ARM64 لإصدارَي واجهة برمجة التطبيقات 26 و28 (I0a328، b/282191686)
- تمت إضافة تفاصيل إلى خطأ إعادة ضبط عملية التجميع لاقتراح تحديث المحاكي، لأنّ بعض المحاكيات قد حلّت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
- اجعل
androidx.test.uiautomator:uiautomator:2.2.0تبعيةapiبدلاً منimplementation. (I1981e)
الإصدار 1.2.0-beta01
18 يوليو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ظهور التحذيرات أحيانًا في مخرجات Benchmark في Studio، وتم حلّ مشكلة عدم ظهور المسافات البيضاء البادئة من مخرجات Benchmark في Studio (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 في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 الجديدة لملف Baseline، ما يسهّل إنشاء ملف Baseline ويبسّط عملية سير عمل المطوّرين.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية تتبُّع 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" عند التحقّق من توفّر إحصاءات الطاقة في مستويات واجهة برمجة التطبيقات القديمة. (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) - تم إصلاح ترتيب وسيطة سحب adb للملف الشخصي للمرجع الثابت في مخرجات 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)
- تم إصلاح العديد من حالات تعذُّر تنفيذ أوامر واجهة الأوامر، ورسالة الخطأ onerror، وواجهة برمجة التطبيقات 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لقياس الطاقة واستهلاكها في اختبارات Macrobenchmark. (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 على أنّها ذاتية القياس. يمنع هذا الخطأ إجراء قياس الأداء الشامل من داخل عملية التطبيق المستهدَف. أثناء العملية، لن يتمكّن macrobench من تجميع التطبيق أو إيقافه أو تشغيله على البارد أو التحكّم في أذوناته (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 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عطل في تقسيم اللقطات في أداة "عارض تتبُّع نظام Studio" لعمليات التتبُّع التي تم تسجيلها في مقياس الأداء (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 (المتوفّرة حاليًا في Microbenchmark) لتسريع عملية التطوير على الجهاز والتحقّق من صحة الأتمتة داخل التطبيقات (على سبيل المثال، في مرحلة ما قبل الإرسال) يؤدي ذلك إلى إلغاء التكرارات إلى 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)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة ضبط الطرق المجمّعة بشكل صحيح بين كل اختبار أداء شامل على الإصدارات التي لا تتضمّن صلاحيات الوصول إلى الجذر. يتطلّب ذلك للأسف إعادة تثبيت حزمة 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 Profile
CompilationMode.Partialلقياس مدى فعالية "الملفات الشخصية للمرجع".@BaselineProfileRuleلإنشاء ملفات شخصية للمرجع تلقائيًا لرحلة مستخدم أساسية معيّنة
إتاحة مقاييس التخصيص وإنشاء الملفات الشخصية أثناء عمليات تشغيل Microbenchmark
الإصدار 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" عند إنشاء "ملفات شخصية للمرجع" باستخدام Macrobenchmarks (aosp/2062228، b/228926421)
الإصدار 1.1.0-rc02
11 مايو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc02. يتضمّن الإصدار 1.1.0-rc02 هذه التعديلات.
- يُرجى العِلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، حيث تتم الآن إعادة تثبيت التطبيقات بالكامل بين كل اختبار أداء لضمان دقة القياسات.
إصلاح الأخطاء/تغييرات في السلوك
تم إصلاح مشكلة عدم إعادة ضبط تجميع التطبيق بشكلٍ صحيح بين اختبارات الأداء الكبيرة، وعدم إعادة ضبطه على الإطلاق في الإصدارات غير المجذّرة. يؤدي ذلك إلى حلّ العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationModeفي القياسات أو تأثيره بشكل طفيف. لحلّ هذه المشكلة، يعيد التطبيق المستهدَف الآن تثبيت كل طريقة اختبار بالكامل، ما يؤدي إلى محو بيانات التطبيق بين كل اختبار أداء شامل. (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 واختبارات إنشاء ملفات Baseline Profile من خلال إضافة وسيطة أداة
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)
تمت فلترة قواعد "الملف الشخصي للمرجع" لاستهداف الإصدار Android 9 (حزمة تطوير البرامج 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() // ... } ) }
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر تحديث عمليات تتبُّع محلّل الأداء microbench في عمليات التشغيل اللاحقة عند ربطها في مخرجات "استوديو Android" (I5ae4d، b/214917025)
- منع أوامر واجهة الأوامر الخاصة بالتجميع في المستوى 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 هذه التعديلات.
إصلاح الأخطاء
- أصبحت نتائج Microbenchmark Stack Sampling / سجلّ الإجراءات Profile مرتبطة الآن بمخرجات "استوديو Android"، على غرار مخرجات جمع البيانات الأخرى، ولا تمنع مقياس التخصيص. (Idcb65، b/214440748، b/214253245)
- تطبع BaselineProfileRule الآن الأمر
adb pullفي logcat ومخرجات Studio لسحب ملف نصي تم إنشاؤه من 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 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تمت إضافة ميزة "تتبُّع النظام" (System Tracing) المنخفضة التكلفة إلى مخرجات microbench على Android Q (المستوى 29 من واجهة برمجة التطبيقات أو الإصدارات الأحدث). يُرجى العِلم أنّ هذه الميزة لا تلتقط حاليًا عمليات التتبُّع المخصّصة (من خلال واجهات برمجة التطبيقات
android.os.Traceأوandroidx.tracingJetpack) لتجنُّب التأثير في النتائج. من المفترض أن يكون هذا التتبّع مفيدًا في تشخيص عدم الاستقرار، خاصةً من المصادر خارج مقياس الأداء. (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)
- تم تعديل عمليات تنفيذ مقاييس بدء التشغيل لتنتهي دائمًا في نهاية سلسلة عرض الصور. سيكون هذا السلوك أكثر اتساقًا على مستوى إصدارات المنصة، كما أنّه سيتم ربطه بشكل أوثق بعمليات قياس بيانات التطبيق. (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/S+، ما سيؤدي إلى زيادة دقة عمليات تشغيل 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لتسهيل تشغيل MacroBenchmarks باستخدام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 حتى يتم تنفيذ reportFullyDrawn). (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 من Benchmark مكوّنًا كبيرًا لقياس الأداء، وهو Macrobenchmark. بالإضافة إلى معيار الأداء الذي يتيح لك قياس حلقات وحدة المعالجة المركزية، يتيح لك Macrobenchmark قياس تفاعلات التطبيق بأكمله، مثل بدء التشغيل والتمرير، وتسجيل عمليات التتبُّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
الميزات الجديدة
تمت إضافة عناصر Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro)
- التقاط مقاييس أداء بدء التشغيل والتمرير/الصور المتحركة من تطبيقك، محليًا أو في CI
- تسجيل عمليات التتبُّع وفحصها من داخل "استوديو 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
- مقياس التخصيص: يتم الآن تشغيل مرحلة إضافية من مقاييس الأداء بعد الإحماء والتوقيت، ما يؤدي إلى تسجيل أعداد التخصيص. يمكن أن تتسبب عمليات التخصيص في حدوث مشاكل في الأداء على الإصدارات القديمة من المنصة (أصبحت 140 نانو ثانية في O 8 نانو ثانية في M - تم قياسها على Nexus5X، مع ساعات مقفلة). يتم عرض هذا المقياس في مخرجات وحدة تحكّم "استوديو Android"، وكذلك في
- دعم جمع بيانات الأداء: يمكنك الآن جمع بيانات الأداء لعملية قياس أداء من أجل فحص سبب بطء تشغيل الرموز البرمجية. يتيح Benchmark تسجيل تتبُّع الطرق أو أخذ عينات الطرق من ART. يمكن فحص هذه الملفات باستخدام أداة Profiler داخل "استوديو Android" من خلال الانتقال إلى ملف > فتح.
- يوفّر المكوّن الإضافي Benchmark 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 من معيار الأمان
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 أخطاء في أداة التحقّق من الأخطاء بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما يوفّره تعليق Kotlin التوضيحي التجريبي لمتصلي Kotlin. - يرصد الآن بشكل صحيح استخدام وسيطة
additionalTestOutputDirللأدوات من أجل الإخراج في الإصدار 3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك لمعرفة الوقت الذي سيتولّى فيه المكوّن الإضافي لنظام Android Gradle عملية نسخ البيانات. - تم إصلاح مشكلة عدم رصد تردد الساعة في 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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عملية تحقّق من الاستخدام غير الصحيح للحزمة القديمة لأداة تشغيل الاختبار، والتي توفّر الآن رسالة خطأ أكثر فائدة
تغييرات واجهة برمجة التطبيقات
- أصبح التعليق التوضيحي التجريبي
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) أو عند التشغيل في CI. لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء مقاييس الأداء بدون Gradle وتشغيل مقاييس الأداء في ميزة "الدمج المتواصل".
الميزات الجديدة
- مكوّن Gradle الإضافي
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
AndroidBenchmarkRunnerتلقائيًا (b/138374050) - تمت إضافة إمكانية نسخ البيانات الجديدة المستندة إلى Android Gradle Plugin عند تنفيذ اختبارات الأداء وعند استخدام الإصدار 3.6 أو الإصدارات الأحدث من Android Gradle Plugin
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
- إضافات إلى تنسيق JSON
- إخراج إجمالي وقت تشغيل اختبار قياس الأداء (b/133147694)
@Parameterizedbenchmarks that use a name string (for example@Parameters(name = "size={0},depth={1}")) now output parameter names and values per benchmark in the JSON output (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)
- تمت إضافة إحصاءات إضافية لكل مقياس تتبُّع تم الإبلاغ عنه (الحد الأقصى والمتوسط والحد الأدنى)، وتمت إزالة الإحصاءات الموجزة المبسّطة "nanos" (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. يمكنك الاطّلاع على التعديلات
في هذا الإصدار
هنا.