مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
---|---|---|---|---|
30 يوليو 2025 | 1.4.0 | - | - | - |
تعريف التبعيات
لإضافة تبعية إلى Benchmark، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
الخاص بوحدة macrobenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.0") }
اختبار الأداء الدقيق
لاستخدام Microbenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
الخاص بوحدة اختبار الأداء الدقيق:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
The Microbenchmark library also provides a Gradle plugin to use with your microbenchmark module.
This plugin sets build configuration defaults for the module, sets up
benchmark output copy to the host,
and provides the
./gradlew lockClocks
task.
To use the plugin, include the following line in the `plugins` block in your top-level
build.gradle
file:
Groovy
plugins { id 'androidx.benchmark' version '1.4.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.4.0" apply false }
Then apply the plugin to your benchmark module's build.gradle
file
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.4
الإصدار 1.4.0
30 يوليو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0
. يحتوي الإصدار 1.4.0 على عمليات الدمج هذه.
التغييرات المهمة منذ الإصدار 1.3.0
اختبار الأداء المصغّر
- تم نقل مهام Gradle
lockClocks
وunlockClocks
إلى مشاريع قياس الأداء، بدلاً من المستوى الأعلى، وذلك لضمان عزل مشاريع Gradle. - تمت إعادة تصميم
BenchmarkRule
ليتم إنشاؤه استنادًا إلى الروتينات الفرعية، وليتيح إمكانية تحسين سلوكyield()
. من المفترض أن يحدّ ذلك بشكل كبير من خطر حدوث أخطاء ANR أثناء عمليات تشغيل مقاييس الأداء، لا سيما عمليات التشغيل الطويلة في نظام التكامل المستمر. ملاحظة: يجب تشغيل مقاييس أداء واجهة المستخدم باستخدامmeasureRepeatedOnMainThread
.
Macrobenchmark
- تمت إضافة حلّ بديل على الإصدار 34 من واجهة برمجة التطبيقات والإصدارات الأحدث، حيث كان أداء
CompilationMode.None()
غير متسق بسبب قيام ART بالتحقّق من التطبيقات وتجميعها جزئيًا بعد التشغيل الأول. - ميزة تجريبية: يمكن أن توضّح ميزة "إحصاءات بدء التشغيل" بعض المشاكل الشائعة في اختبار Macrobenchmark لبدء التشغيل من خلال تمرير
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))
. - تمت إضافة ArtMetric التي يمكن استخدامها لرصد عملية "الترجمة في الوقت المناسب" (JIT Compilation) وتحميل الفئات غير المحسَّنة، وكلاهما مفيد للتحقّق من صحة تحسينات "ملف Baseline Profile".
ملفات Baseline Profile
- تجمع أداة
BaselineProfileRule
الآن الملفات الشخصية للتطبيقات المتعددة العمليات.
التغييرات الأخرى
- تم نقل TraceProcessor إلى مكتبة منفصلة (
androidx.benchmark:benchmark-traceprocessor
) ليتم استخدامه خارج مقاييسMacrobenchmark
في حالات أخرى. يمكن أيضًا تشغيله على Desktop JVM من خلال تحديد ServerLifecycleManager الخاص بك.
الإصدار 1.4.0-rc01
18 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-rc01
. يحتوي الإصدار 1.4.0-rc01 على عمليات الدمج هذه.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للمشاكل التي تتسبّب فيها صور وقت التشغيل والتي تؤدي إلى عدم قياس
CompilationMode.None()
أسوأ أداء بعد التكرار الأول. لسوء الحظ، يتطلّب هذا الحلّ البديل تأخيرًا لمدة 5 ثوانٍ لإتلاف صورة وقت التشغيل عمدًا في بداية كل مجموعة اختبارات macrobenchmark (I4a4f1).
الإصدار 1.4.0-beta02
4 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta02
. يحتوي الإصدار 1.4.0-beta02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
BaselineProfileConfig.Builder
لتسهيل استدعاءBaselineProfileRule.collectWithResults()
لمطوّري Java. (I94905)
الإصدار 1.4.0-beta01
7 مايو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta01
. يحتوي الإصدار 1.4.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة الدالة الإنشائية
PerfettoTraceRule
التي تقبلPerfettoConfig
(Ie53ba)
إصلاح الأخطاء
- تم تعديل تنسيق رابط إحصاءات بدء التشغيل
TraceProcessor
لاستخدام المكوّن الإضافي الصحيح، بالإضافة إلى استخدام فاصل أوضح (:
أقصر من%3A
، وكلاهما متوافق) (Ie18ef) - استخدِم دائمًا خيار "إيقاف إجباري" لإيقاف العمليات، حتى عند الوصول إلى الجذر وإيقاف تطبيقات النظام. إصلاح الاستثناءات من النموذج:
Expected no stdout/stderr from killall ... No such process
(Idca2c)
المساهمة الخارجية
- تمت إضافة معالج استثناءات الخادم الوكيل لـ
TraceProcessorHttpServer
(I480f5)
الإصدار 1.4.0-alpha11
9 أبريل 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha11
. يحتوي الإصدار 1.4.0-alpha11 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تم تغيير مهلة وسيطة
TraceProcessor
: المدة إلى timeoutMs طويلة لتسهيل استخدامها من قِبل برنامج Java. (I9fbb5) - ضع علامة على الدالة الإنشائية
TraceProcessor
باعتبارها دالة داخلية. يجب أن يستخدم مقدّمو الطلباتTraceProcessor.startServer
أوTraceProcessor.runServer
. (Ia8c5b)
إصلاح الأخطاء
- عند إيقاف التطبيق باستخدام
MacrobenchmarkScope.killProcess
، تحقَّق من نتائج أمر الإيقاف لمنع حدوث خطأ بدون إشعار أو خطأ انتهاء المهلة. (I84555)
تحديثات التبعيات
- تستهدف هذه المكتبة الآن مستوى لغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (Idb6b5)
الإصدار 1.4.0-alpha10
26 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha10
. يحتوي الإصدار 1.4.0-alpha10 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تمت زيادة المهلة التلقائية لتحميل الخادم
TraceProcessor
والاستعلام إلى 120 ثانية (بدلاً من 60/30 ثانية سابقًا)، وأصبح من الممكن ضبط كليهما باستخدام مَعلمة مهلة واحدة. (Ifec87)
إصلاح الأخطاء
- تم إصلاح بعض المشاكل التي كانت تحدث عند قياس أداء تطبيق أو تسجيل ملفات شخصية له بدون
profileinstaller
، وتم تضمينBroadcastReciever
. يؤثر ذلك فقط في عمليات التشغيل على الأجهزة التي تم الوصول إلى جذرها. (Ied308)
الإصدار 1.4.0-alpha09
12 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha09
. يحتوي الإصدار 1.4.0-alpha09 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
TraceProcessor
وSession API مع مقابض قابلة للإغلاق، وذلك لتسهيل الاستخدام مع دورات الحياة المخصّصة. هذه الخطوة هي أيضًا خطوة نحو تسهيل استخدام Coroutine وJava API. تم الآن وضع علامة "تجريبية" على وظائف الإضافة التي تعمل علىTraceProcessor.runServer {}
، لأنّه من المحتمل أن يتم نقلها وإزالة العلامة "تجريبية" عنها في المستقبل. (I358b4)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل ميزة "القياس" و"التقاط بيانات الملف الأساسي" مع واجهة برمجة التطبيقات 36 بسبب تغيير في
pgrep
toybox يتطلّب الآن-a
لطباعة سطر الأوامر الكامل. (Idc991) - فلترة إعدادات التتبُّع التلقائية للحدّ من مخاطر فقدان البيانات في عمليات التتبُّع على مستويات واجهة برمجة التطبيقات الأحدث (I54e8a)
- تمت إضافة وسيط
androidx.benchmark.killExistingPerfettoRecordings
تجريبي لتسجيل البيانات، ويمكن ضبطه علىfalse
للسماح بمواصلة تسجيل بيانات التتبُّع الحالية في Perfetto. يتم تلقائيًا إيقاف عمليات تسجيل التتبُّع الحالية في Perfetto على الجهاز لمنع حدوث تداخل. (I02a3c) - سيصبح الحقل
context.osCodenameAbbreviated
في JSON الآنREL
لإصدارات نظام التشغيل التي تم طرحها بالمستوى 35 لواجهة برمجة التطبيقات والإصدارات الأحدث، لأنّ المنصة الأساسية لم تعُد تتوافق مع أسماء الرموز غير الرقمية. (Ib17fd) - تم إصلاح عُطل في
FrameTimingMetric
عند حدوث إطارات تمت إعادة مزامنتها. (I7c6f4، b/394610806) - لم يعُد يُفترض أنّ
Choreographer#doFrame
هو أعلى إطار تسلسل استدعاء الدوال البرمجية في سلسلة التعليمات الرئيسية لـFrameTimingQuery
. (Iee0e0، b/340206285)
الإصدار 1.4.0-alpha08
12 فبراير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha08
. يحتوي الإصدار 1.4.0-alpha08 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تم نقل واجهات برمجة التطبيقات الخاصة بالإضافات
TraceProcessor.runSession()
إلى الوضع التجريبي، لأنّه من المحتمل أن يتم نقلها لتصبح أدوات إنشاء ملموسة في النهاية على Android. (Ib0528، b/393640753) - أصبحت معظم عمليات تنفيذ "إحصاءات بدء التشغيل" متاحة الآن للجميع أو تجريبية، ويتم نقلها إلى العنصر
TraceProcessor
. راجِعStartupInsights
. (I0aa00) - إيقاف
BenchmarkRule.runWithTimingDisabled {}
نهائيًا واستخدامBenchmarkRule.runWithMeasurementDisabled {}
بدلاً منه، لأنّه يصف السلوك بشكلٍ أوضح، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScope
لأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabled
لفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تم نقل مكتبات قياس الأداء إلى Kotlin 2.0. (I9d1e0)
- تمت إزالة وسيطة
androidx.benchmark.startupProfiles.enable
لأدوات القياس. لم يعُد هذا الخيار مفيدًا، إذ يمكن التحكّم فيه باستخدام الوسيطةincludeInStartupProfile
فيBaselineProfileRule.collect()
. (I39eb4)
إصلاح الأخطاء
- تم تقليل عدد الدوال الداخلية التي يتم استدعاؤها في Microbenchmark أثناء إنشاء الملفات الشخصية لتوضيح "عمليات تتبُّع الطرق" مثلاً (Ifaed8)
- إصلاح تجريبي للأعطال: "تعذّر إيقاف [
ProcessPid(processName=perfetto, pid=...)
]". سيسجّل تطبيق Benchmark الآن رسالة بدلاً من تعطُّله عندما يتعذّر إيقاف عملية Perfetto في الخلفية قبل تشغيل مقياس الأداء. (I37d3e، b/323601788) - إصلاح أخطاء
IllegalStateExceptions
التي تحمل التصنيف "Expectedpm dump-profiles
stdout" والتي نتجت عن التدقيق المفرط في تنسيق الإخراج (I358dc)
الإصدار 1.4.0-alpha07
29 يناير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha07
. يحتوي الإصدار 1.4.0-alpha07 على عمليات الإيداع هذه.
الميزات الجديدة
- تقدّم
BaselineProfileRule
الآن واجهة برمجة التطبيقاتcollectWithResults(...)
التي تتضمّن قائمة بمسارات الملفات الشخصية المحسوبة. (I056f8) - تمت إضافة وسيط
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline
لقياس حالة التطبيق، ويمكن ضبطه على "خطأ" لإيقاف سلوكmeasureRepeatedOnMainThread
عند انتهاء الموعد النهائي للاختبار المحلي. لا يُنصح بذلك في الحالات الأخرى، لأنّ ذلك يزيد من احتمالية حدوث أخطاء ANR أثناء الاختبارات. (Idbeec، b/353226476)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
@JvmOverloads
إلى الدالة الإنشائيةMicrobenchmarkConfig
. (I13fd3) - تمت إعادة تصميم
BenchmarkRule
ليتم إنشاؤه استنادًا إلى الروتينات الفرعية، وليتيح إمكانية تحسين سلوكyield()
. أدت عملية إعادة البناء هذه إلى إزالة العديد من واجهات برمجة التطبيقات التجريبيةBenchmarkState
، ولكن سيتم استبدالها حسب الحاجة. بالإضافة إلى ذلك، أضفناrunWithMeasurementDisabled
لتوضيح السلوك (يتم إيقاف جميع عمليات القياس مؤقتًا). في المستقبل، سيتم إيقاف سياسةrunWithTimingDisabled
نهائيًا. (I19837 وb/389149423 وb/311242861) - انقل
PerfettoTraceProcessor
إلىTraceProcessor
في عنصرandroidx.benchmark:benchmark-traceprocessor
جديد، واجعل معظم واجهة برمجة التطبيقات غير تجريبية. يجب تعديل أيTraceMetric
مخصّص أو أي شيء يقرأ من عمليات التتبُّع لاستخدام عملية الاستيراد الجديدةTraceProcessor
. تعمل واجهة برمجة التطبيقاتTraceProcessor
الجديدة تمامًا مثل واجهة برمجة التطبيقات القديمة، ولكنّها مكتبة واجهة مستقلة (تشبه إلى حد ما طبقةandroidx.sqlite
من Room) مع تنفيذ خاص بنظام التشغيل Android مدمج في Macrobenchmark. يمكن استخدام العنصر الجديد على JVM أيضًا، ولكن عليك حاليًا بدء نسختك الخاصة من ملفTraceProcessor
الثنائي وتوفير منفذ للاتصال به. (I3a767 وI62563 وb/381134564)
إصلاح الأخطاء
- عرض رسالة خطأ أوضح عند تعذُّر تشغيل العملية المستهدَفة في
MacrobenchmarkScope.startActivityAndWait
(ربما بسبب تعطُّل العملية المستهدَفة)، بدلاً من الرسالة الأكثر غموضًا "تعذُّر تأكيد اكتمال تشغيل النشاط" (I3539b) - تم إصلاح العديد من أخطاء البنية في أمثلة Kotlin، وتم تحسين تمييز البنية في العديد من أمثلة Java / build.gradle. (Ib3808)
- تم توضيح مستندات المَعلمتَين
ArtMetric
وCaptureInfo
. (I96e60)
الإصدار 1.4.0-alpha06
11 ديسمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha06
. يحتوي الإصدار 1.4.0-alpha06 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة استخدام
@Language("sql")
فيPerfettoTraceProcessor.Session.query()
، لأنّ ميزة التمييز/التحليل في "استوديو Android" لا تعمل. (Idc2fa، b/377733398)
إصلاح الأخطاء
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict
(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من المترجم البرمجي للغة Kotlin). (I46810، b/326456246) - تم تصحيح
ArtMetric
للإبلاغ عن تحميل الفئة (وليس تهيئتها)، وتم تحسين المستندات لتوضيح سلوك وقت التشغيل. (I9915c) - في ميزة "المستخدمون المتعدّدون" على Android، نفِّذ الأوامر بصفتك مستخدمًا لديه امتيازات الجذر على الأجهزة التي تم منحها هذه الامتيازات فقط. (I88b44)
الإصدار 1.4.0-alpha05
13 نوفمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha05
. يحتوي الإصدار 1.4.0-alpha05 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في الإصدار 34 من واجهة برمجة التطبيقات (API) والإصدارات الأحدث، حيث كان أداء
CompilationMode.None()
غير متسق ولا يمثّل الأداء الأولي في أسوأ الحالات. يحلّ هذا الإجراء مشكلة تغيير في النظام الأساسي يسمح لحالة تجميع ARTverify
بتجميع التطبيقات جزئيًا (يؤثر فقط في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (Ie48d0) - تم إصلاح المشكلة التي كان يمكن فيها تسجيل عمليات تتبُّع (قصيرة بشكل خاص) لا تعرض قياسات من مقاييس Macrobenchmark المضمّنة، وذلك بسبب اقتطاع اسم العملية في عملية تتبُّع Perfetto. تعمل مكتبة Macrobenchmark الآن على حلّ هذه المشكلة من خلال البحث عن اسم الحزمة المختصَر في جميع طلبات البحث المضمّنة، بالإضافة إلى اسم الحزمة المتوقّع. يُرجى العِلم أنّ عمليات التنفيذ المخصّصة
TraceMetric
أو أدوات الاتصال المباشر الأخرى بـPerfettoSession.query
يمكنها تنفيذ السلوك نفسه من خلال تغييرprocess.name LIKE "$packageName"
في طلب بحث Perfetto إلى(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")
بدلاً من ذلك. (I5bf01، b/377565760)
الإصدار 1.4.0-alpha04
30 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha04
. يحتوي الإصدار 1.4.0-alpha04 على عمليات الدمج هذه.
الميزات الجديدة
- (تجريبي) تفعيل إنشاء "ملف تعريف الأداء الأساسي" وقياس الأداء في التطبيقات المثبَّتة على مستخدم ثانوي، مثل أي تطبيق على أجهزة Android Auto غير المزودة بشاشة تم اختبار هذه الميزة في بعض السيناريوهات، ولكن يُرجى إعلامنا إذا لم تنجح معك. (I9fcbe، b/356684617، b/373641155)
إصلاح الأخطاء
- يتم الآن دائمًا تجاهل قيمة
isProfileable
في إصدارات قياس الأداء، كما يتم الآن دائمًا تجاهل قيمةisDebuggable
في كل من إصدارات قياس الأداء وإصداراتnonMinified
(التقاط بيانات ملفات تعريف خط الأساس). (I487fa، b/369213505) - إصلاح مشكلة رصد تجميع الأخطاء على بعض الأجهزة الفعلية التي تعمل بإصدارات أقدم من المستوى 28 لواجهة برمجة التطبيقات، ما يؤثر في json
context.compilationMode
، بالإضافة إلى سلوكandroidx.benchmark.requireAot=true
(الذي لم يعُد يعرض خطأ بشكل غير صحيح) (Ic3e08، b/374362482) - في مقاييس
CpuEventCounter
، يتم عرض خطأ في حال رصد قياسات غير صالحة (مثل instructions/cpucycles==0) (I8c503)
الإصدار 1.4.0-alpha03
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha03
. يحتوي الإصدار 1.4.0-alpha03 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- Macrobenchmark: إضافة
ArtMetric
، التي يمكن استخدامها لفحص تغطية الملف الشخصي أو أداء Android RunTime العام. تسجّل هذه السمة عدد عمليات JIT ومدتها الإجمالية، وعمليات تهيئة الفئات (حيثما كان ذلك متاحًا)، وعمليات التحقّق من الفئات. بالإضافة إلى ذلك، تم إجراء تغييرات علىCaptureInfo
لتضمين إصدار ART الرئيسي الاختياري مع الإعداد التلقائي. (I930f7) - أضِف
coefficientOfVariation
إلى ناتج JSON الخاص بمقياس الأداء لعرض الثبات ضمن عملية تنفيذ مقياس أداء معيّن. (Ib14ea)
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTask
عندما يتضمّن جهاز AVD مسافات. (Ia0225، b/371642809) - إصلاح تخميني للأخطاء الناتجة عن استثناءات
StartupMode.COLD
:Package <packagename> must not be running prior to cold start!
. الآن، ستنتظرMacrobenchmarkScope.killProcess()
(بما في ذلك تلك التي يتم تنفيذها قبل كل تكرار، والتي تُستخدَم لتنفيذ سلوكStartupMode.COLD
) للتأكّد من توقّف جميع عمليات التطبيق عن التنفيذ. (I60aa6، b/351582215) - تم إصلاح المشكلة التي كانت تتسبب في ظهور الخطأ UNLOCKED_ على بعض المحاكيات التي تم الوصول إلى جذرها. (Ic5117)
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict
(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من المترجم البرمجي للغة Kotlin). (I7104f، b/326456246)
الإصدار 1.4.0-alpha02
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha02
. يحتوي الإصدار 1.4.0-alpha02 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تم نقل مهام Gradle
lockClocks
وunlockClocks
لتكون في مشاريع قياس الأداء، بدلاً من توفيرها على المستوى الأعلى. كان هذا التغيير ضروريًا لأنّه لا يمكن تسجيل هذه الإجراءات كإجراءات على أعلى مستوى بدون إيقاف عزل المشاريع. (I02b8f، b/363325823)
إصلاح الأخطاء
- تجمع
BaselineProfileRule
الآن الملفات الشخصية للتطبيقات المتعددة العمليات من خلال إرسال إشارة إلى كل عملية قيد التشغيل في نهاية الحظر لتفريغ الملفات الشخصية. إذا لم يتمكّن تجميع يستند إلى ملف شخصي من العثور على عملية للبث إليها، سيتعذّر التجميع، لأنّه من غير المتوقّع أن يتضمّن بيانات ملف شخصي. بالإضافة إلى ذلك، تمت إضافة وسيطة أدوات لتحديد مدة انتظار التفريغ:androidx.benchmark.saveProfileWaitMillis
(I0f519، b/366231469) - من Benchmark
1.3.2
: تم إصلاح مشكلة عدم قدرة مركز الاختبار الافتراضي لمنصة Firebase (FTL) على استرداد ملفات نتائج Baseline Profile أو 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
لا تزال هذه الميزة قيد التطوير، وسيتم تحسين المستندات وإمكانية التوسيع لاحقًا، ولكن نرحّب بتلقّي الملاحظات.
الميزات الجديدة
- تمت إضافة السمة
androidx.baselineprofile.suppressWarnings
في Gradle لإيقاف جميع تحذيرات ملفات تعريف الخط الأساس. (314153a) - يتم الآن عرض مقاييس الاختبارات المصغّرة في عمليات تتبُّع Perfetto كعدادات. (3214854)
- إضافة نصوص برمجية تجريبية لإيقاف jit (يتطلّب الوصول إلى الجذر أو إعادة تشغيل وقت التشغيل) وإعادة ضبط حالة الأداء/الاختبار للجهاز لا يتم نشرها حاليًا كمهام Gradle. (7c3732b)
- تمت إضافة وسيطة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار
automaticGenerationDuring
، ستؤدي مقاييس الأداء أيضًا إلى إنشاء ملف تعريف أساسي. سيؤدي ذلك إلى حدوث خطأ في حال استخدام المحاكيات. باستخدام الوسيطة الجديدةskipBenchmarksOnEmulator
، يمكننا بدلاً من ذلك تخطّي الاختبار. (0c2ddcd) - تغيير منطق تفعيل أحداث الأداء ليتم تشغيله على الإصدار 23 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (2550048)
تغييرات واجهة برمجة التطبيقات
- تم نقل الوسيطة التجريبية الحالية
PerfettoConfig
إلىMacrobenchmarkRule.measureRepeated()
إلى الكائن الجديدExperimentalConfig
.
إصلاح الأخطاء
- زيادة عدد محاولات إعادة التشغيل
lockClocks.sh
(99e9dac) - لا تُنشئ نوعَي الإصدار
nonMinified
وBenchmark إذا كانا متوفّرَين. بسبب خطأ، حتى إذا كان نوعا الإصدار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" في المكوّن الإضافي Benchmark Baseline Gradle. (b/404523257)
الإصدار 1.3.3
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.3
. يحتوي الإصدار 1.3.3 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTask
عندما يحتوي جهاز AVD على مسافات (Ia0225، b/371642809)
الإصدار 1.3.2
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.2
. يحتوي الإصدار 1.3.2 على عمليات الدمج هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم قدرة "مركز الاختبار الافتراضي لمنصة Firebase" (FTL) على سحب ملفات نتائج "ملف تعريف خط الأساس" أو Macrobenchmark من Baseline Profile Gradle Plugin. (I2f678, b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة ملفات تعريف الأداء الأساسية في حزمة المكوّن الإضافي، مع ما يلي:
plugins {
...
id("com.google.firebase.testlab")
}
ثم اضبط مركز الاختبار الافتراضي لمنصة Firebase باستخدام:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة ملف التعريف الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.3.1
18 سبتمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.1
. يحتوي الإصدار 1.3.1 على عمليات الدمج هذه.
إصلاح الأخطاء
- تمت إضافة السمة
androidx.baselineprofile.suppressWarnings
في Gradle لإيقاف جميع تحذيرات ملفات تعريف الخط الأساس (I7c36e، b/349646646) - تم إصلاح Baseline Profile Gradle Plugin لاستخدام
nonMinified…
وbenchmark…
المتوفّرة مسبقًا إذا أنشأها التطبيق بدلاً من إنشاء برامج تضمين. (Ia8934، b/361370179) - تم إصلاح الخطأ
java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
عند تفعيلautomaticGenerationDuringBuild
على المحاكيات. يتم استخدام وسيطة جديدة بدلاً من ذلك لتخطّي الاختبار. (If3f51، b/355515798) - تصغير الاختبارات المصغّرة - الاحتفاظ بالفئات الفرعية من
org.junit.runner.notification.RunListener
في مكتبة مقاييس الأداء Proguard (Ic8ed5، b/354264743) - تم إصلاح الخطأ
TraceSectionMetric
لتجاهل الشرائح غير المنتهية. في السابق، كان يتم اعتبار أنّ مدة هذه الفيديوهات هي -1، مثلاً أثناء عملية الجمع أو البحث عن الحد الأدنى للمدة. (If74b7) - تم إصلاح مشكلة في
FrameTimingGfxInfoMetric
كانت تتسبّب في تعطُّل بدء المقياس إذا لم تكن العملية قيد التشغيل. (I6e412)
الإصدار 1.3.0
21 أغسطس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0
. يحتوي الإصدار 1.3.0 على عمليات الدمج هذه.
التغييرات في مكتبة Microbenchmark منذ الإصدار 1.2.0
- يكون تتبُّع أسلوب التنفيذ مفعَّلاً تلقائيًا في اختبارات الأداء الدقيق عند تشغيلها على معظم الأجهزة
- يتم تنفيذ تتبُّع الأسلوب كمرحلة منفصلة بعد القياسات، ما يتيح إخراج القياسات الدقيقة وعمليات تتبُّع الأسلوب من عملية قياس أداء واحدة.
- سيؤثّر تتبُّع الطرق في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. وفي هذه الإصدارات، يكون تتبُّع الطرق غير مفعّل تلقائيًا ويتم عرض تحذير في ناتج "استوديو Android".
- مقاييس أداء سلسلة التعليمات الرئيسية وأخطاء ANR
- تمت إضافة
measureRepeatedOnMainThread
لمقاييس أداء سلسلة التعليمات الخاصة بواجهة المستخدم (مثل تلك التي تتفاعل مع واجهات مستخدم Compose/View) لتجنُّب أخطاء ANR عند التشغيل لعدة ثوانٍ. - يتم تخطّي عمليات تتبُّع الطرق إذا كان من المتوقّع أن تتجاوز الموعد النهائي لتجنُّب خطأ ANR. اضبط القيمة
androidx.benchmark.profiling.skipWhenDurationRisksAnr
على "خطأ" لإيقاف هذا السلوك (لا يُنصح بذلك في عمليات التكامل المستمر، لأنّ أخطاء ANR يمكن أن تتسبّب في حدوث مشاكل في عمليات التكامل المستمر الطويلة).
- تمت إضافة
- إزالة البيانات غير الضرورية
- قواعد Proguard المضمّنة لتحسين قياس الأداء الدقيق مع تفعيل التصغير
- يتطلّب التصغير/R8 في وحدة مكتبة الإصدار 8.3 من "مكوّن Android الإضافي في Gradle"، ويمكن تفعيله من خلال
android.buildTypes.release.androidTest.enableMinification
فيbuild.gradle
- تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()
لمنع إزالة الرموز غير المستخدَمة (If6812، b/286091643)
- المقاييس
- ميزة عدّاد أحداث وحدة المعالجة المركزية التجريبية (المقاييس من
perf_event_open
، والتي تتطلّب الوصول إلى الجذر على معظم إصدارات النظام الأساسي)، وإمكانية الوصول من خلالInstrumentationArgument
androidx.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
- إضافة اقتراحات لتصحيح الأخطاء إلى رسالة الخطأ في بث برنامج "تحدي صناعة المحتوى"
- إضافة وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل لتجنُّب الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller
1.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
- تمت زيادة الحد الأقصى للإصدار المقترَح من "مكوّن Android الإضافي لنظام Gradle" إلى 9.0.0-alpha01.
- تأكَّد من أنّ مهمتَي
mergeArtProfile
وmergeStartupProfile
تنتظران دائمًا اكتمال إنشاء ملف تعريف خط الأساس. (I623d6، b/343086054) - سيؤدي إنشاء ملف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8، b/269484510).
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- يجب حلّ المشكلة لضمان استخدام مقاييس الأداء لملفات تعريف أساسية تم إنشاؤها عندما تكون قيمة
automaticGenerationDuringBuild
غير مفعّلة (Ic144f، b/333024280) - إصلاح عمليات إلغاء إعدادات مكوّن Gradle الإضافي لتفعيل إنشاء ملفات تعريف أساسية وقياس الأداء عند تخصيص
nonMinified
أو نوع إصدار قياس الأداءBaselineProfile
(Ib8f05، b/324837887) - إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من "مكوّن Android الإضافي في Gradle" (I1d2af، b/313992099)
- تم إصلاح عنوان URL الأساسي الثابت وعنوان URL لملف بدء التشغيل في نهاية مهمة الإنشاء. (I802e5، b/313976958)
التغييرات المهمة الأخرى منذ الإصدار 1.2.0
- التقاط عمليات التتبُّع
- تم تقليل الخطأ EXITCODE 2 عند بدء Perfetto من خطأ إلى تحذير مسجّل
- تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلّب الإصدار 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
- تفعيل تتبُّع علامة النقل تلقائيًا في مقاييس الأداء تسجّل هذه السمة، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
- زيادة مهلة بدء تسجيل التتبُّع لتجنُّب الأعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841، b/329145808)
- تمّت إضافة واجهات برمجة تطبيقات
PerfettoTraceProcessor.Session.queryMetrics
عامة مع صيغ JSON وtextproto وproto الثنائية (غير مفكّكة). تتيح لك هذه المقاييس طلب البحث عن مقاييس مضمّنة فيTraceProcessor
(I54d7f، b/304038382). - فعِّل حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر فقدان البيانات في بداية عملية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- إخراج JSON
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
-
context.artMainlineVersion
: إصدار عدد صحيح من وحدة Art الرئيسية (إذا كانت متوفّرة على الجهاز،-1
بخلاف ذلك) context.build.id
- يساوي android.os.Build.IDcontext.build.version.codename
- يساوي android.os.Build.VERSION.CODENAME-
context.build.version.abbreviatedCodename
: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار المسبق (بما في ذلك إصدارات الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutput
إلى إخراج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع الملفات الشخصية (مثل Perfetto وMethod traces) (I05ddd وb/332604449) - تمت إضافة تحذير عند استخدام Android Test Orchestrator في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات 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 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "مكوّن Android الإضافي" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
- تمت إضافة عملية التحقّق من إصدار "مكوّن Android الإضافي لبرنامج Gradle" لإرسال اسم الحزمة كمعلَمة instr. قبل الإصدار 8.4.0 من "مكوّن Android الإضافي في Gradle"، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق أدوات القياس من خلال وسيطات أدوات القياس. (0c72a3f)
الإصدار 1.3.0-beta02
10 يوليو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta02
. يحتوي الإصدار 1.3.0-beta02 على عمليات الدمج هذه.
إصلاح الأخطاء
- التعامل بشكل سليم مع EXITCODE
2
عند بدء Perfetto لتسجيل تحذير، ولكن مع المتابعة
الإصدار 1.3.0-beta01
12 يونيو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta01
. يحتوي الإصدار 1.3.0-beta01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
MethodTracing.affectsMeasurementOnThisDevice
إلىAFFECTS_MEASUREMENT_ON_THIS_DEVICE
للحفاظ على الاتساق. (I1bdfa) - تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()
لمنع إزالة الرموز البرمجية غير المستخدَمة في اختبارات الأداء الدقيقة. (If6812، b/286091643) - ستعرض مكتبة Microbenchmark الآن بشكل صحيح رسالة خطأ لمنع تداخل تتبُّع الطرق مع القياسات. يحدث ذلك على أجهزة معيّنة عند فرض تتبُّع الأساليب (من خلال وسيطات الأدوات أو
MicrobenchmarkConfig
)، وفي حال محاولة إجراء قياس بعد تتبُّع الأساليب. تعمل الأجهزة المتأثّرة بالإصدارات 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها في وقت التشغيل من خلالProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. (Iafb92، b/303660864)
إصلاح الأخطاء
- تمت زيادة الحد الأقصى لإصدار "مكوّن Android الإضافي في Gradle" إلى 9.0.0-alpha01. (I5bbb0)
- تمت إضافة وضع التجميع إلى سياق قياس الأداء (If5612، b/325512900)
- تفعيل تتبُّع AIDL تلقائيًا (يتطلّب الإصدار 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
-
context.artMainlineVersion
: إصدار عدد صحيح لوحدة Art الرئيسية (إذا كانت متوفرة على الجهاز، أو -1 في حال عدم توفّرها) -
context.build.id
- يساويandroid.os.Build.ID
-
context.build.version.codename
- يساويandroid.os.Build.VERSION.CODENAME
-
context.build.version.abbreviatedCodename
: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار المسبق (حتى في الإصدارات النهائية) (Ie5020)
-
- إصلاح
StackSampling
ليتوافق معandroidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) - غيِّر التبعية من macro->common إلى
api()
، لتسهيل الاستخدام، مثلاًPerfettoTrace
وPerfettoConfig
. (Icdae3، b/341851833) - تأكَّد من أنّ مهمتَي
mergeArtProfile
وmergeStartupProfile
تنتظران دائمًا اكتمال إنشاء ملف تعريف خط الأساس. (I623d6، b/343086054) - يُرجى مراعاة حالة تفعيل الصيغة عند تحديد ما إذا كان يجب تفعيلها. (I5d19e، b/343249144)
- تمت زيادة مهلة البدء التلقائية لمعالج بيانات تتبُّع Perfetto. (I87e8c، b/329145808)
الإصدار 1.3.0-alpha05
14 مايو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha05
. يحتوي الإصدار 1.3.0-alpha05 على عمليات الدمج هذه.
إصلاح الأخطاء
- عرض استثناء أوضح عندما يعرض مقياس Macrobenchmark قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
- تمت إضافة قواعد حلول بديلة إضافية إلى قواعد Proguard الخاصة باختبارات الأداء المصغّرة، بما في ذلك إتاحة قواعد أدوات معالجة الأحداث والتحذيرات / الأخطاء الأخرى التي تم رصدها. (I14d8f، b/329126308، b/339085669)
- يتم تنفيذ تتبُّع الطرق كمرحلة منفصلة أثناء اختبار Macrobenchmark، ولم يعُد يؤثّر في القياسات. (If9a50، b/285912360، b/336588271)
- تمت إضافة اقتراحات إضافية لتصحيح الأخطاء إلى رسالة تعذُّر بث برنامج التظليل. (I5efa6، b/325502725)
الإصدار 1.3.0-alpha04
1 مايو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha04
. يحتوي الإصدار 1.3.0-alpha04 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة تجريبية
MacrobenchmarkRule#measureRepeated
تستخدمPerfettoConfig
مخصّصًا لتسجيل بيانات تتبُّع Perfetto مخصّصة بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر عمل فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - إعادة تسمية
PowerMetric.deviceSupportsPowerEnergy
إلىPowerMetric.deviceSupportsHighPrecisionTracking
لتوضيح المعنى (I5b82f) - تمت إضافة
PowerMetric.deviceBatteryHasMinimumCharge()
وPowerMetric.deviceSupportsPowerEnergy()
لتفعيل تغيير مقاييس الأداء أو تخطّيها استنادًا إلى إمكانية قياس طاقة الجهاز. (I6a591، b/322121218)
إصلاح الأخطاء
- تمت إضافة مقارنة مع ملف تعريف الأداء الأساسي السابق (I824c8، b/269484510)
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- تم تغيير الاستثناء إلى سجلّ معلومات عند إيقاف صيغ المقارنة (I8a517، b/332772491)
- تسهيل عملية تسجيل عمليات تتبُّع الطرق التي يتم تنفيذها في نطاق مدة
measureBlock()
الفعلية في السابق، كانت تبدأ عند إطلاق العملية المستهدَفة ولا تتوافق إلا مع عمليات التشغيل على البارد (Iee85a وb/300651094). - تجنُّب حدوث أعطال عند تأخُّر بدء معالجة تتبُّع Perfetto (I98841، b/329145808)
الإصدار 1.3.0-alpha03
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تضيف واجهات برمجة التطبيقات العامة
PerfettoTraceProcessor.Session.queryMetrics
مع صيغ JSON وtextproto وproto الثنائية (غير المرمّزة). تتيح لك هذه الحقول طلب البحث عن المقاييس المضمّنة في TraceProcessor (I54d7f، b/304038382). - تمت إضافة
profilerOutput
إلى ناتج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع بيانات تحديد المشاكل (مثل perfetto، وتتبُّع الطرق). (I05ddd، b/332604449) - تمت إضافة علامة الطاقة إلى معيار Perfetto Config. تسجّل هذه السمة، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (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 الإضافي لتفعيل إنشاء ملفات تعريف أساسية وقياس الأداء عند تخصيص
nonMinified
أو نوع إصدار قياس الأداءBaselineProfile
(Ib8f05، b/324837887) - يتم إفراغ عمليات تتبُّع الدوال البرمجية الثابتة في Macrobenchmark، لذا من المفترض أن يتم تسجيل عمليات تتبُّع الدوال البرمجية بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- فعِّل حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر فقدان البيانات في بداية عملية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- تمت إضافة تحذير عند استخدام Android Test Orchestrator في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات JSON الناتجة لكل وحدة. (Ia1af6، b/286899049)
- فرض استخدام الفاصلة كفاصلة آلاف لتحقيق الاتساق في نتائج "استوديو YouTube"، مع تجاهل اللغة المحلية للجهاز (I3e921، b/313496656)
- يتيح
TraceSectionMetric
الآن استخدام الشرائح التي تم إنشاؤها باستخدامTrace.{begin|end}AsyncSection
. (I91b32، b/300434906) - تمت إضافة تصنيفات log.w / exception إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذا سيتم عرض بعض الأخطاء، بينما يتعذّر رصد بدء التشغيل في حالات أخرى)، بل يجعله أكثر وضوحًا. بشكل عام، تلك التي
Log.w()
ولا يمكنها تسجيل مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بإطارات، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت الإطارات (من شرائح واجهة المستخدم/وقت الاستجابة). (Id240f، b/329145809) - ألغِ مهام dexopt في الخلفية قبل تشغيل Macrobenchmark لتقليل التداخل. (I989ed)
- تمت إضافة مقياس
frameCount
إلىFrameTimingMetric
للمساعدة في رصد السيناريوهات التي تتغير فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة، وتم إصلاح مشاكل الإبطال). (I1e5aa) - تم توضيح أنّ
frameOverrunMs
هو المقياس المفضّل للتتبُّع عند توفّره في المستندات، وسبب ذلك. (I18749، b/329478323)
الإصدار 1.3.0-alpha02
20 مارس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha02
. يحتوي الإصدار 1.3.0-alpha02 على عمليات الدمج هذه.
الميزات الجديدة
إتاحة استخدام R8 التجريبي في اختبارات الأداء الدقيقة من خلال قواعد proguard المضمّنة يُرجى العِلم أنّ هذه الميزة تجريبية، وتتطلّب الإصدار 8.3 من "مكوّن Android الإضافي في Gradle" لتصغير اختبارات وحدة المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين R8 في
build.gradle
لوحدة قياس الأداء، ما من شأنه أن يؤدي إلى زيادة كبيرة في الأداء، وذلك حسب عبء العمل. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
إصلاح الأخطاء
- إصلاح تحذير تتبُّع طريقة العرض ليكون في سطر منفصل عن ناتج الاختبار المصغّر (I0455c، b/328308833)
الإصدار 1.3.0-alpha01
21 فبراير 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية المَعلمات المنطقية
MicrobenchmarkConfig
لتجنُّب الكلمة غير الضرورية "يجب" (Ia8f00، b/303387299) - تمت إضافة
BenchmarkRule.measureRepeatedOnMainThread
حتى تتجنّب مقاييس الأداء في سلسلة المحادثات الرئيسية (مثل تلك التي تتضمّن عناصر Views أو Compose لواجهات المستخدم) حدوث أخطاء ANR، خاصةً أثناء المجموعات الكبيرة في عملية التكامل المستمر. (I5c86d) - تمت إضافة
FrameTimingGfxInfoMetric
، وهو تنفيذ تجريبي بديل لـFrameTimingMetric
مع مقاييس واردة مباشرةً من النظام الأساسي، بدلاً من استخراجها من تتبُّع Perfetto. (I457cb، b/322232828) - إضافة إمكانية تفريغ ملف ART أثناء تكرار
warmUp
الفردي (I17923) - أجرينا عدة تغييرات على واجهة برمجة التطبيقات
TraceSectionMetric
:- إضافة
Mode.Min
،Mode.Max
- إضافة وسيطة تصنيف لتجاوز اسم القسم كتصنيف مقياس
- تمت إضافة اسم الوضع إلى الناتج لتوضيح معنى المقياس
- تم تغيير القيمة التلقائية إلى المجموع، لأنّ معظم استخدام هذا المقياس يكون للأحداث المتكرّرة يُرجى الانتباه إلى هذه التغييرات في استخدام CI، لأنّها قد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل. (Ic1e82، b/301892382، b/301955938)
- إضافة
إصلاح الأخطاء
- تحسين رسالة الخطأ في مكوّن Gradle الإضافي لملف تعريف خط الأساس عندما لا يكون الجهاز المُدار المحدّد متوفّرًا (Idea2b، b/313803289)
- إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في AAR قبل الإصدار 8.3.0-alpha15 من "مكوّن Android الإضافي في Gradle" (I1d2af، b/313992099)
- تم إصلاح عنوان URL الناتج عن ملف تعريف خط الأساس وملف تعريف بدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
- تم تعديل مهلات مصادر البيانات في محاولة لإصلاح الخطأ
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d، b/323601788) - إضافة وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل لتجنُّب الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller
1.3:-
androidx.benchmark.dropShaders.enable=true/false
: يمكن استخدامها لتخطّي جميع عمليات حذف التظليل (بما في ذلك عمليات الحذف التي تتم في عمليات إطلاقStartupMode.Cold
)، خاصةً عند قياس أداء التطبيقات التي لم تستخدم بعد الإصدار 1.3 من profileinstaller - يمكن استخدام
androidx.benchmark.dropShaders.throwOnFailure=true/false
لتحمّل حالات الأعطال عند محاولة إيقاف برامج التظليل، مثلاً عند قياس أداء التطبيقات بدون الإصدار 1.3 من profileinstaller (I4f573).
-
- تخطّي تتبُّع الطرق في سلسلة التعليمات الرئيسية لواجهة المستخدم عندما يُتوقّع أن يستغرق ذلك أكثر من بضع ثوانٍ، وتنظيف عمليات تتبُّع الطرق عند حدوث خطأ (I6e768)
- يتم عرض خطأ عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو معالجتها بعد ذلك. (I4a5ab)
- تم إصلاح المشكلة التي يمكن فيها إقران اللقطات غير المنتهية في بداية ونهاية التتبُّع معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح على أنّها لقطة واحدة طويلة جدًا. (I39353، b/322232828)
- استخدِم
--skip verification
على المستوى 30 من واجهة برمجة التطبيقات أو الإصدارات الأحدث عند إعادة تثبيت حزمة على المستوى 30 إلى 33 من واجهة برمجة التطبيقات لمحو ملفات ART الشخصية في إصدارات المستخدمين. يساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تتسبّب في حدوث أعطال على بعض فئات الأجهزة. (Ic9e36) - استخدِم
am force-stop
لإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل "واجهة مستخدم النظام" أو "مشغّل التطبيقات". (I5e028) - تنتظر مكتبة Macrobenchmark الآن
1 second
حتى يمحو التطبيق المستهدف ملف تعريف ART (كانت تنتظر سابقًا500 ms
). (I85a50، b/316082056) - تحسين الخطأ
FrameTimingMetric
عند عدم إنشاء إطارات، وعرض رابط دائمًا لتتبُّع المشكلة عند تعذّر تحليل المقاييس للمساعدة في تشخيص المشكلة (I956b9) - تم إصلاح عُطل في
FrameTimingMetric
بسبب تعذُّر تحليل رقم تعريف الإطار، خاصةً على بعض أجهزة المصنّعين الأصليين للأجهزة. (Ia24bc، b/303823815، b/306235276) - تم تخفيف صرامة عمليات التحقّق في
FrameMetrics
، وأضفنا المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
الإصدار 1.2
الإصدار 1.2.4
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.2.4
. يحتوي الإصدار 1.2.4 على عمليات الدمج هذه.
إصلاح الأخطاء
- إصلاح مشكلة عدم إعداد srcset لملف تعريف خط الأساس في متغيرات قياس الأداء تم أيضًا إصلاح الخطأ
automaticGenerationDuringBuild
في المكتبات الذي يتسبّب في تبعية دائرية. (I28ab7، b/333024280) - استخدِم
am force-stop
لإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل "واجهة مستخدم النظام" أو "مشغّل التطبيقات". يحلّ هذا الخطأ مشكلة تعطُّلStartupMode.COLD
بسبب ظهور الرسالة "يجب ألا يتم تشغيل الحزمة $package قبل التشغيل على البارد!"، وذلك لأنّ عملية إيقاف العملية لم تنجح بالكامل. (I5e028)
الإصدار 1.2.3
24 يناير 2024
تم طرح androidx.benchmark:benchmark-*:1.2.3
. يحتوي الإصدار 1.2.3 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تمت إزالة الاستثناء من المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile عندما يكون إصدار "مكوّن Android الإضافي لنظام Gradle" هو 8.3.0 أو إصدارًا أحدث.
- إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من "مكوّن Android الإضافي في Gradle"
الإصدار 1.2.2
1 ديسمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.2
. يتضمّن الإصدار 1.2.2 عمليات الإيداع هذه.
ملفات Baseline Profile
- ستعرض سجلّات التنفيذ مسار ملف الإخراج الخاص بملف تعريف خط الأساس كمعرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).
الإصدار 1.2.1
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الإيداع هذه.
الميزات الجديدة
- تحسين رسالة الخطأ عند إيقاف المستخدم لمتغيرات الاختبار (b/307478189)
- تمت إضافة خصائص لتفعيل دمج عملية تشغيل اختبار "خدمة التطبيق" (b/309805233)، (b/309116324)
الإصدار 1.2.0
18 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0
. يتضمّن الإصدار 1.2.0 عمليات الإيداع هذه.
التغييرات المهمة منذ الإصدار 1.1.0
ملفات Baseline Profile
- تعمل إضافة Baseline Profile Gradle Plugin الجديدة على أتمتة عملية تسجيل ملفات تعريف الخط الأساس وتضمينها في سير عمل الاختبار والإنشاء.
BaselineProfileRule.collect
، وهو الآن إصدار ثابت ومبسّط من واجهة برمجة التطبيقات التجريبية السابقةBaselineProfileRule.collectBaselineProfile
- ما عليك سوى تحديد
packageName
، وسنساعدك في الترويج لتطبيقك
- ما عليك سوى تحديد
- بالنسبة إلى المكتبات التي تنشئ ملفات تعريف أساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز (الوسيطة
BaselineProfileRule.collect
) أو ببساطة أكبر في إضافة Gradle. - الإصلاحات
- تم إصلاح مشكلة جمع بيانات ملفات تعريف خط الأساس على الإصدارات Android U+ (Id1392، b/277645214)
Macrobenchmark
- التحويل البرمجي
- تعيد مكتبة Macrobenchmark الآن ضبط حالة التجميع بالكامل بشكل صحيح لكل عملية تجميع. ويتطلّب ذلك إعادة تثبيت حزمة APK قبل الإصدار 14 من نظام التشغيل Android، لذا يُنصح بشدة بإجراء قياس الأداء على الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث إذا كنت تريد الاحتفاظ بالحالة (مثل تسجيل دخول المستخدم) في ما يتم قياسه.
- يمكنك أيضًا حلّ هذه المشكلة من خلال التحكّم في تجميع التطبيق بشكل منفصل، وتخطّي عملية التجميع باستخدام
CompilationMode.Ignore()
أو وسيطة القياس.
وسيطات القياس
- إتاحة وسيطة أدوات
androidx.benchmark.dryRunMode.enable
(متوفّرة حاليًا في مكتبة Microbenchmark) لإجراء عمليات التحقّق بشكل أسرع (مثل عند إنشاء مقياس الأداء أو في عملية التحقّق قبل الإرسال) - التوافق مع
androidx.benchmark.profiling.mode=StackSampling
وMethodTracing
- تمت إضافة
androidx.benchmark.enabledRules
للسماح بتصفية ملفات تعريف خط الأساس في وقت التشغيل مقابل اختبارات قواعد Macrobenchmark - تمت إضافة الوسيطة
androidx.benchmark.perfettoSdkTracing.enable
لتفعيل التتبُّع باستخدام tracing-perfetto، مثل تتبُّع إعادة إنشاء Compose. يُرجى العِلم أنّه عند استخدامها معStartupMode.COLD
، سيتأثّر التوقيت بشكل كبير لأنّه يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
- إتاحة وسيطة أدوات
المتطلبات
- يتطلّب Macrobenchmark الآن الإصدار
ProfileInstaller
1.3.0 أو الإصدارات الأحدث في التطبيق المستهدَف، وذلك لتفعيل عملية تسجيل الملف الشخصي أو إعادة ضبطه، ومحو ذاكرة التخزين المؤقت لبرامج التظليل.
- يتطلّب Macrobenchmark الآن الإصدار
واجهات برمجة التطبيقات للمقاييس التجريبية الجديدة
- تمت إضافة
TraceSectionMetric
التجريبي، والذي يتيح استخراج توقيت بسيط من حِزمtrace("") {}
في تطبيقك، أو TraceMetric للاستفادة من إمكانية طلب البحث الكاملة في PerfettoTraceProcessor
. - تمت إضافة
PowerMetric
تجريبي لتسجيل معلومات حول استهلاك الطاقة - تمت إضافة
MemoryCountersMetric
تجريبي لاحتساب أخطاء الصفحة - تمت إضافة واجهة برمجة التطبيقات التجريبية
PerfettoTraceProcessor
، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
- تمت إضافة
الإصلاحات
- تم إصلاح الأعطال التي تحدث عند تثبيت الملفات الشخصية أو استخراجها من تطبيق مثبَّت من حِزم APK متعددة (مثل حزمة التطبيقات).
- تم إصلاح مشكلة
FrameTimingMetric
التي تتجاهل اللقطات التي تتضمّن أرقام تعريف غير متسقة للقطات (بشكل عام، اللقطات أثناء التموجات على الإصدار 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) (I747d2، b/279088460) - تم إصلاح أخطاء التحليل في عمليات التتبُّع التي تتجاوز 64 ميغابايت (Ief831، b/269949822)
- توضيح الأخطاء التي تحدث عندما لا يتم ضبط صورة نظام التشغيل على الجهاز (خاصةً المحاكي) بشكل صحيح لتتبُّع الأخطاء أو التجميع
- تخطّي التحقّق من مستوى البطارية للأجهزة التي لا تحتوي على بطارية (الصور المقرّبة والبعيدة)
- تحسين إخراج الملفات، مع عرض أخطاء أكثر وضوحًا لأدلة الإخراج غير الصالحة، وإعدادات تلقائية أكثر أمانًا
- تحسين ثبات
StartupMode.COLD
من خلال حذف ذاكرة التخزين المؤقت لبرامج التظليل باستمرار (تتوفّر أيضًا من خلالMacrobenchmarkScope.dropShaderCache
) - تم إصلاح الإجراء الاحتياطي في وضع Leanback لتطبيق
startActivityAndWait
.
اختبار الأداء المصغّر
- الميزات
- تم نقل عملية إنشاء الملفات إلى مرحلة منفصلة بعد المقاييس الأخرى، حتى يتمكّن أحد عمليات الاختبار من عرض نتائج التوقيت الدقيق ونتائج إنشاء الملفات.
- واجهات برمجة التطبيقات التجريبية
- تمت إضافة واجهة برمجة التطبيقات التجريبية
MicrobenchmarkConfig
لتحديد المقاييس المخصّصة وإعداد التتبُّع وإنشاء الملفات الشخصية. يمكن استخدامها لتسجيل عمليات تتبُّع الطرق أو نقاط التتبُّع (ولكن يجب الانتباه إلى تكلفة التتبُّع). - تمت إضافة واجهات برمجة تطبيقات تجريبية للتحكّم في
BenchmarkState
بشكل منفصل عنBenchmarkRule
، بدون JUnit - تمت إضافة سجلّ
PerfettoTrace
تجريبي لتفعيل إمكانية تسجيل عمليات تتبُّع Perfetto، مع إعدادات مخصّصة، بشكل منفصل عن واجهات برمجة التطبيقات الخاصة بمقاييس الأداء.
- تمت إضافة واجهة برمجة التطبيقات التجريبية
- الإصلاحات
- حلّ بديل لمشكلة عدم توفّر مساحات بيضاء بادئة في ناتج قياس الأداء في Android Studio
- تم إصلاح مشكلة تعذُّر عرض التحذيرات في نتائج قياس الأداء في Android Studio.
- تم إصلاح عُطل
SampledProfiling
على الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث. - تحسين أداء
dryRunMode
بشكل كبير من خلال تخطّيIsolationActivity
وتتبُّع Perfetto (أسرع 10 مرات في وضع التشغيل التجريبي على إصدارات نظام التشغيل القديمة)
الإصدار 1.2.0-rc02
6 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc02
. يحتوي الإصدار 1.2.0-rc02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح إخراج ملف Benchmark لكي لا يؤدي إلى إيقاف عملية نسخ ملفات
BaselineProfile
المكوّن الإضافي تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بطريقة لا يراها مكوّن Gradle الإضافي. (I8dbcc، b/303034735، b/296453339) - تم توضيح رسائل الخطأ في تحميل
tracing-perfetto
عند إدخال البيانات من وحدة macrobenchmark إلى التطبيق المستهدف.
الإصدار 1.2.0-rc01
20 سبتمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يتم الآن طرح استثناء (مع تعليمات الإصلاح) عندما يتعذّر إعداد تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في أحد مقاييس الأداء. (I6c878، b/286228781)
- إصلاح عُطل OOM عند تحويل تتبُّع طريقة ART إلى تنسيق perfetto (I106bd، b/296905344)
- (Macrobenchmark) تم توضيح تصنيف تتبُّع الطريقة عند ربطه في نتائج اختبار Studio، وتم إصلاح أسماء ملفات تتبُّع الطريقة لتكون فريدة على الجهاز/المضيف، وبالتالي لن تتم الكتابة فوقها عند تنفيذ أكثر من مقياس أداء واحد. (I08e65، b/285912360)
- يضمن هذا الخيار أن يكون الجهاز نشطًا عند التقاط ملف تعريف أساسي. (I503fc)
الإصدار 1.2.0-beta05
30 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta05
. يحتوي الإصدار 1.2.0-beta05 على عمليات الإيداع هذه.
الميزات الجديدة
- يتوافق المكوّن الإضافي 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) - ستظهر الآن نقاط التتبُّع الداخلية لمكتبة مقاييس الأداء (بما في ذلك تتبُّع الحلقات/المراحل الدقيقة) في عارض تتبُّع النظام في "استوديو Android"، وسيتم تضمينها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
- تمت إزالة خطأ macrobenchmark NOT-PROFILEABLE على الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث، وتم تخطّي عملية التحقّق من إمكانية إنشاء الملف الشخصي على الأجهزة التي تم الوصول إلى جذرها في إصدارات eng/userdebug. (I2abac، b/291722507)
- عند استخدام ميزة "تحسينات تخطيط Dex"، يتم الآن أيضًا اعتبار قواعد ملفات بدء التشغيل كقواعد ملفات أساسية. (aosp/2684246، b/293889189)
الإصدار 1.2.0-beta02
26 يوليو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات تجريبية للمقاييس والإعدادات المخصّصة للاختبارات الدقيقة (مثل أداة تحليل الأداء والتتبُّع). (I86101، b/291820856)
إصلاح الأخطاء
- الإبلاغ عن خطأ في اختبار الأداء الشامل عند إعداد نظام التشغيل بشكل غير صحيح لتتبُّع الأخطاء، كما تم إصلاحه مؤخرًا في محاكيات ARM64 التي تعمل بالإصدار 26/28 من واجهة برمجة التطبيقات (I0a328، b/282191686)
- تمت إضافة تفاصيل حول تعذُّر إعادة ضبط التجميع لاقتراح تعديل المحاكي، لأنّ بعض المحاكيات حلّت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
- اجعل
androidx.test.uiautomator:uiautomator:2.2.0
api
بدلاً منimplementation
. (I1981e)
الإصدار 1.2.0-beta01
18 يوليو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta01
. يحتوي الإصدار 1.2.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح مشكلة عدم ظهور بعض التحذيرات في نتائج Benchmark في "استوديو Android"، وإصلاح مشكلة عدم ظهور المسافات البيضاء في بداية السطر في نتائج Benchmark في "استوديو Android" (Ia61d0 وb/227205461 وb/286306579 وb/285912360)
- تمت الاستجابة إلى تعليق
FrameTimingMetric
. اسم المقياس الفرعي هوframeDurationCpuMs
. (Ib097f وb/288830934).
الإصدار 1.2.0-alpha16
21 حزيران (يونيو) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha16
. يحتوي الإصدار 1.2.0-alpha16 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهة برمجة التطبيقات
BaselineProfileRule.collectBaselineProfile()
إلىBaselineProfileRule.collect()
. (I4b665)
إصلاح الأخطاء
- توفير دعم Macrobenchmark لإصدار
androidx.benchmark.profiling.mode = MethodTracing
. (I7ad37، b/285912360) - تم نقل عملية إنشاء الملفات الشخصية للمقياس المصغّر إلى مرحلة منفصلة، لذا تحدث بالتسلسل بعد القياس، بدلاً من استبداله. يتم الآن أيضًا تضمين أقسام تتبُّع
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 الخاص بملف تعريف الأداء الأساسي في إصدار أولي، ما يسهّل إنشاء ملف تعريف أداء أساسي ويبسّط سير عمل المطوّرين.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية تتبُّع Perfetto على الإصدارَين 21 و22 من واجهة برمجة التطبيقات، ويشمل ذلك كلاً من Microbenchmarks وواجهات برمجة التطبيقات التجريبية
PerfettoTrace
. قبل هذا الإصدار، كانت اتصالاتUiAutomation
غير موثوقة على بعض الأجهزة. (I78e8c) - تمت إضافة واجهة برمجة تطبيقات تجريبية عامة لـ
PerfettoTraceProcessor
من أجل إتاحة تحليل محتوى التتبُّع. هذه خطوة نحو توفير مقاييس مخصّصة بالكامل استنادًا إلى بيانات تتبُّع Perfetto. (I2659e، b/219851406)
الإصدار 1.2.0-alpha11
8 مارس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha11
. يحتوي الإصدار 1.2.0-alpha11 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم إصلاح الأعطال في
MacrobenchmarkRule
وBaselineProfileRule
عند إعادة تثبيت الملفات الشخصية أو استخراجها من حِزمة تطبيق تتضمّن حِزم APK متعددة. (I0d8c8، b/270587281)
الإصدار 1.2.0-alpha10
22 فبراير 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha10
. يحتوي الإصدار 1.2.0-alpha10 على عمليات الدمج هذه.
الميزات الجديدة
- في نظام التشغيل Android 14 والإصدارات الأحدث، لم يعُد اختبار Macrobenchmark يعيد تثبيت التطبيقات المستهدَفة لإعادة ضبط حالة التجميع، وذلك بفضل ميزة جديدة في النظام الأساسي. في السابق، كان من الضروري توفُّر جهاز تم عمل روت له، أو التعامل مع إزالة جميع حالات التطبيق (مثل تسجيل دخول المستخدم) قبل تشغيل كل مقياس أداء. (I9b08c، b/249143766)
إصلاح الأخطاء
- إصلاح الخطأ
DryRunMode
لكي لا يتعطّل التطبيق عند استخدام ملف شخصي فارغ، وذلك بسبب تخطّي عملية التجميع بدلاً من ذلك، يتم تنفيذ تكرار واحد واستخراج الملف الشخصي لضمان تسجيل بعض البيانات. (I2f05d، b/266403227) - إصلاح عُطل
PowerMetric
عند التحقّق من توفّر powerstats على مستويات واجهة برمجة التطبيقات القديمة (5faaf9، b/268253898)
الإصدار 1.2.0-alpha09
11 يناير 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha09
. يحتوي الإصدار 1.2.0-alpha09 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تم تفعيل تمرير
None
إلى وسيطةandroidx.benchmark.enabledRules
لأدوات القياس لإيقاف جميع مقاييس الأداء / إنشاء الملف الأساسي. (I3d7fd، b/258671856) - إصلاح عملية تسجيل
PerfettoTrace
في وحدات التطبيق (أي حِزم APK للاختبار غير ذاتية القياس) (I12cfc) - تم إصلاح ترتيب وسيطة سحب ملفات تعريف الخط الأساسي الثابتة باستخدام 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)
- إصلاح العديد من حالات تعذُّر تنفيذ أوامر shell التي تتطلّب واجهة برمجة تطبيقات <=23، بما في ذلك حالات تعذُّر إعداد ملفات perfetto الثنائية وحالات تعذُّر تسجيل عمليات التتبُّع (Ib6b87 وb/258863685)
- ترتيب قواعد الملف الشخصي التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات عند تغيُّرها بمرور الوقت (عند تسجيل قواعد الملف الشخصي في نظام التحكّم بالمصادر) (Ie2509)
- تم إصلاح عُطل في الإصدارات غير المجذَّرة التي تعمل بإصدار أقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) مع ظهور الرسالة
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245، b/259508183)
المشاكل المعروفة
- قد يتعطّل تطبيق MacrobenchmarkScope.dropShaderCache()
بسبب عدم توفّر سجلّ بث في بيان profileinstaller، ولم يتم إصداره بعد. (I5c728 وb/258619948) لحلّ المشكلة في الإصدار profileinstaller:1.3.0-alpha02
، أضِف ما يلي إلى ملف AndroidManifest.xml الخاص بتطبيقك (وليس ملف AndroidManifest.xml الخاص بأداة القياس):
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
الإصدار 1.2.0-alpha07
9 نوفمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha07
. يحتوي الإصدار 1.2.0-alpha07 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة واجهة برمجة التطبيقات
PowerMetric
لقياس الطاقة واستهلاكها في Macrobenchmarks. (Ife601، b/220183779) - تم إصلاح
MacrobenchmarkScope.dropShaderCache()
لإزالة ذاكرة التخزين المؤقت لبرامج التظليل. يؤدي ذلك إلى إزالة حوالي 20 ملي ثانية من الضوضاء من مقاييسStartupMode.COLD
، لأنّه يتم الآن محو برامج التظليل باستمرار في كل تكرار. في السابق، كانت عملية تجميعPartial
باستخدام تكرارات الإحماء تعرض أرقامًا سريعة بشكل غير صحيح، لأنّ التخزين المؤقت لبرامج التظليل كان من المرجّح أن يحدث أثناء الإحماء. يتطلّب هذا الإصلاح إما جهازًا تم عمل روت له أو استخدامprofileinstaller:1.3.0-alpha02
في التطبيق المستهدف. للاطّلاع على تغييرات واجهة برمجة التطبيقات في مكتبةProfileInstaller
، يُرجى الرجوع إلى صفحة ProfileInstaller 1.30-alpha02. (Ia5171، b/231455742) - تمت إضافة
TraceSectionMode("label", Mode.Sum)
، ما يتيح قياس إجمالي الوقت المستغرَق في أقسام تتبُّع متعددة تحمل التصنيف نفسه. على سبيل المثال، سيسجّلTraceSectionMetric("inflate", Mode.Sum)
المقياسinflateMs
لإجمالي الوقت الذي تمّ استخدامه في اختبارات الأداء الشاملة في عملية التحميل. تم أيضًا إزالة شرط المستوى 29 من واجهة برمجة التطبيقات، لأنّTraceSectionMetric
يعمل معandroidx.tracing.Trace
على مستويات واجهة برمجة التطبيقات الأقل، وذلك باستخدامforceEnableAppTracing
داخل التطبيق المستهدف. (Id7b68، b/231455742)
إصلاح الأخطاء
- تحسين أمان جميع أوامر shell الداخلية من خلال التحقّق من صحة جميع المخرجات/الأخطاء (I5984d، b/255402908، b/253094958)
- تحديد الجهاز في الأمر
adb pull
الخاص بالملف الأساسي، حتى يمكن نسخ أمر السحب ببساطة في حال ربط أجهزة متعددة (ما يصل إلى محاكي واحد) (I6ac6c، b/223359380) - إضافة خطأ إذا لم يتم إعداد حزمة APK لاختبار Macrobenchmark على أنّها ذاتية القياس. يمنع هذا الخطأ إجراء اختبارات قياس الأداء الشامل من داخل عملية التطبيق المستهدَف. أثناء المعالجة، لن يتمكّن Macrobenchmark من تجميع التطبيق أو إيقافه أو بدء تشغيله على البارد، أو التحكّم في أذوناته (I4279b).
- تم إصلاح مشكلة في
measureRepeated()
حيث لا يؤديStartupMode.COLD
إلى إيقاف العملية المستهدَفة بعدsetupBlock
. الآن، لن يؤديsetupBlock
التفاعل مع التطبيق إلى استمرار تشغيل عملية التطبيق، ولن يتم تسجيل قياس غير صالح للتشغيل على البارد. (I8ebb7)
الإصدار 1.2.0-alpha06
24 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha06
. يحتوي الإصدار 1.2.0-alpha06 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- لم يعُد يتطلّب
BaselineProfileRule
الوصول إلى الجذر على Android 13 (المستوى 33 لواجهة برمجة التطبيقات)، ولم يعُد تجريبيًا. (Ie0a7d وb/250083467 وb/253094958)- يحلّ هذا التغيير أيضًا مشكلة كيفية نقل الملفات الشخصية من تطبيق إلى القرص على الأجهزة غير المجذَّرة، ولكنّه يتطلّب تعديل تبعية profileinstaller للتطبيق المستهدَف.
- لاستخدام
BaselineProfileRule
أوCompilationMode.Partial(warmupIterations)
على جهاز غير مجذَّر، يجب أيضًا تحديث التطبيق المستهدَف لاستخدامandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
. يتيح ذلك نقل الملف الشخصي إلى القرص بشكل صحيح، حتى يمكن تجميعه/استخراجه.
إصلاح الأخطاء
- تم إصلاح عُطل
SampledProfiling
على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (I40743، b/236109374)
الإصدار 1.2.0-alpha05
5 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha05
. يحتوي الإصدار 1.2.0-alpha05 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح تقسيم اللقطات في أداة "عارض تتبُّع النظام" في "استوديو Android" لعمليات التتبُّع التي تم تسجيلها في مقياس الأداء (I3f3ae، b/239677443)
- تم تصحيح
FrameTimingMetric
لعرضFrameOverrun
على أنّه يتطلّب استخدام الإصدار 31 من واجهة برمجة التطبيقات بدلاً من الإصدار 29 (I716dd، b/220702554) - اضبط عدد التكرارات على
BaselineProfileRule
، واعرض خطأً بوضوح في حال عدم تثبيت الحزمة المستهدَفة (تمّ ذلك من قبل في MacrobenchmarkRule). (Ic09a3، b/227991471)
الإصدار 1.2.0-alpha04
21 سبتمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha04
. يحتوي الإصدار 1.2.0-alpha04 على عمليات الإيداع هذه.
الميزات الجديدة
إضافة دعم لوسيطة
dryRunMode.enable
في Macrobenchmark (متوفّرة حاليًا في 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' } }
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تتطلّب إطلاق "الأنشطة المقاسة" من خلال
MacrobenchmarkScope.startActivityAndWait()
.StartupTimingMetric
وهذا يعني أنّ المقياس يمكنه رصد عمليات التشغيل من الإشعارات مثلاً، أو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 يتيح للأدوات تفعيل تتبُّع حزمة تطوير البرامج Perfetto في تطبيق يعرضها (I2cc7f)
تمت إضافة وسيطة
androidx.benchmark.enabledRules
للأدوات من أجل تفعيل فلترة عمليات تشغيل اختبارات macrobenchmark لتشمل المقاييس فقط أو إنشاء ملفات تعريف أساسية فقط. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfiles
على محاكي فقط. يمكن أيضًا استخدام قائمة مفصولة بفواصل. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
PowerMetric
جديد لقياس مهام الطاقة والأداء في مقاييس الأداء. (I9f39b، b/220183779) - تمت إضافة وضع تجميع جديد
CompilationMode.Ignore
لتخطّي إعادة ضبط الملف الشخصي والتجميع. (Ibbcf8، b/230453509) - تمت إضافة مَعلمة جديدة إلى
BaselineProfileRule#collectBaselineProfile
لفلترة ملف الإخراج حسب أسماء الحِزم (If7338، b/220146561) - يسمح هذا الإعداد للمطوّر بتفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
- تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لبرامج التظليل في
MacrobenchmarkScope
. (I32122) - تتيح للمطوّر إعداد عرض نوع المقياس وفئات النظام الفرعي المطلوبة. (I810c9)
- في السابق، كان يتم عرض
UnsupportedOperationException
في مقياس الأداء إذا تم تشغيله على جهاز غير متوافق. لا يحدث خطأ UOE الآن إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثلPowerMetric.configure
). (I5cf20، b/227229375) - تمت إضافة
TotalPowerMetric
وTotalEnergyMetric
لقياس إجمالي الطاقة واستهلاك الطاقة في كل فئة من فئات الأنظمة في اختبارات الأداء الشاملة. (I3b26b، b/224557371)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة ضبط الطرق المجمَّعة بشكل صحيح بين كل اختبار macrobenchmark على الإصدارات غير الجذرية. يتطلّب ذلك للأسف إعادة تثبيت حزمة APK في كل تكرار، ما سيؤدي إلى محو بيانات التطبيق لكل اختبار Macrobenchmark. (I31c74، b/230665435)
- إصلاح عُطل تسجيل عمليات التتبُّع على الإصدارين 21 و22 من واجهة برمجة التطبيقات (If7fd6 وb/227509388 وb/227510293 وb/227512788)
- إصلاح عملية رصد اكتمال تشغيل النشاط لتصحيح الاستثناء "تعذّر قراءة أي مقاييس" في اختبارات الأداء الكبيرة عند بدء التشغيل (Ia517c)
الإصدار 1.1.1
الإصدار 1.1.1
9 نوفمبر 2022
تم طرح androidx.benchmark:benchmark-*:1.1.1
. يحتوي الإصدار 1.1.1 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح المشكلة
android.system.ErrnoException: open failed: EACCES
التي كانت تحدث على بعض أجهزة Android 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأحدث هذا إصلاح من1.2.0-alpha01
. (aosp/2072249)
الإصدار 1.1.0
الإصدار 1.1.0
15 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0
. يحتوي الإصدار 1.1.0 على عمليات الإيداع هذه.
- هذا الإصدار مطابق للإصدار
androidx.benchmark:benchmark-*:1.1.0-rc03
.
التغييرات المهمة منذ الإصدار 1.0.0
يتيح لك دعم Jetpack Macrobenchmarks، الذي يتيح لك قياس تفاعلات التطبيق بالكامل مثل بدء التشغيل والتمرير، إمكانية تسجيل عمليات التتبُّع وقياس أقسام عمليات التتبُّع.
إتاحة ملفات Baseline Profile
CompilationMode.Partial
لقياس فعالية "ملفات تعريف الخط الأساسي".@BaselineProfileRule
لإنشاء ملفات تعريف أساسية تلقائيًا لرحلة مستخدم مُحدّدة ومهمة.
إتاحة مقاييس التخصيص وإنشاء الملفات الشخصية أثناء عمليات تشغيل الاختبارات المصغّرة
الإصدار 1.1.0-rc03
1 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc03
. يتضمّن الإصدار 1.1.0-rc03 عمليات الإيداع هذه.
إصلاح الأخطاء
تجنَّب إعادة تثبيت الحزمة المستهدَفة في كل تكرار من اختبار الأداء. ( aosp/2093027، b/231976084)
إزالة التأخير
300ms
منpressHome()
(aosp/2086030، b/231322975)تحسين سرعة تكرار Macrobenchmark من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023، b/231323582)
إتاحة استخدام الأجهزة المُدارة من Gradle عند إنشاء "ملفات تعريف Baseline" باستخدام Macrobenchmark (aosp/2062228، b/228926421)
الإصدار 1.1.0-rc02
11 مايو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc02
. يتضمّن الإصدار 1.1.0-rc02 عمليات الإيداع هذه.
- يُرجى العِلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، إذ يتم الآن إعادة تثبيت التطبيقات بالكامل بين كل مقياس أداء لضمان دقة القياسات.
إصلاح الأخطاء/التغييرات في السلوك
تم إصلاح مشكلة عدم إعادة ضبط تجميع التطبيق بشكلٍ صحيح بين اختبارات macrobenchmark، وعدم إعادة ضبطه على الإطلاق في الإصدارات غير المجذَّرة. يحلّ هذا الإجراء العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationMode
أو تأثيره بشكل طفيف في القياسات. لحلّ هذه المشكلة، يعيد التطبيق المستهدَف الآن تثبيت كل طريقة اختبار بالكامل، ما يؤدي إلى محو بيانات التطبيق بين كل اختبار Macrobenchmark. (I31c74، b/230665435)بما أنّ هذا الإجراء يمنع التطبيقات من إعداد الحالة قبل الاختبارات، أصبح من الممكن الآن تخطّي عملية التجميع أو إعادة التثبيت لتجنُّب هذه المشكلة. يمكنك مثلاً تجميع الهدف بالكامل باستخدام أمر shell
cmd package compile -f -m speed <package>
، ثم تجاوز خطوة التجميع في Macrobenchmark.على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
أتحنا إمكانية مشاركة وحدة بين اختبارات مقاييس الأداء الكلية واختبارات إنشاء ملفات تعريف الخط الأساسي من خلال إضافة وسيطة أدوات
androidx.benchmark.enabledRules
. يمكنك إدخال Macrobenchmark أو BaselineProfile لتنفيذ نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfiles
على محاكي. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
الإصدار 1.1.0-rc01
20 أبريل 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc01
. يحتوي الإصدار 1.1.0-rc01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- تستخدم روابط إخراج ملفات تعريف خط الأساس في "استوديو Android" الآن اسم ملف فريدًا. بهذه الطريقة، تعكس النتائج دائمًا أحدث نتائج استخدام
BaselineProfileRule
. ( aosp/2057008, b/228203086 )
الإصدار 1.1.0-beta06
6 أبريل 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta06
. يتضمّن الإصدار 1.1.0-beta06 عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح عُطل تسجيل التتبُّع على الإصدار 21/22 من واجهة برمجة التطبيقات (If7fd6، b/227509388)
- إصلاح عملية رصد اكتمال تشغيل النشاط لتصحيح الاستثناء "تعذّر قراءة أي مقاييس" في اختبارات الأداء الكبيرة عند بدء التشغيل (Ia517c)
- إصلاح مقاييس بدء التشغيل في Macrobenchmarks عند استخدام
CompilationMode.None()
قبل هذا التغيير، كان يبدو أنّCompilationMode.Partial()
أبطأ منCompilation.None()
. (611ac9).
الإصدار 1.1.0-beta05
23 مارس 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta05
. يحتوي الإصدار 1.1.0-beta05 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إيقاف الحزمة بعد تخطّي تثبيت الملف الشخصي عند استخدام
CompilationMode.None
(aosp/1991373) - تم إصلاح المشكلة المتمثّلة في عدم قدرة Macrobenchmarks على جمع مقاييس بدء التشغيل عند استخدام
StartupMode.COLD
. (aosp/2012227 b/218668335)
الإصدار 1.1.0-beta04
23 فبراير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta04
. يحتوي الإصدار 1.1.0-beta04 على عمليات الإيداع هذه.
إصلاح الأخطاء
إصلاح المقاييس غير المتوفّرة على نظام التشغيل Android 10 و
NoSuchElementException
بسبب عدم تسجيل أسماء العمليات بشكل صحيح في عمليات التتبُّع (Ib4c17، b/218668335)استخدِم
PowerManager
لرصد الحدّ من سرعة المعالجة بسبب ارتفاع درجة الحرارة على الإصدار Q (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأحدث. يؤدي ذلك إلى تقليل عدد النتائج الإيجابية الخاطئة بشكل كبير في رصد الحدّ من سرعة المعالج بسبب الحرارة الزائدة (إعادة محاولة قياس الأداء بعد فترة تهدئة مدتها 90 ثانية)، كما يؤدي إلى تسريع عمليات قياس الأداء بشكل كبير في إصدارات المستخدمين. وتوفّر أيضًا ميزة رصد الحد الأقصى للسرعة حتى عندما تكون السرعات مضبوطة (إذا كانت مضبوطة على سرعة عالية جدًا بالنسبة إلى البيئة المادية للجهاز). (I9c027، b/217497678، b/131755853)فلترة ملفات تعريف الأداء التي تم أخذ عيّنات منها في simpleperf لتشمل
measureRepeated
سلسلة محادثات فقط لتسهيل الفحص (Ic3e12، b/217501939)إتاحة مقاييس من العمليات الفرعية المسماة لواجهة المستخدم في التطبيقات المتعددة العمليات (Ice6c0، b/215988434)
فلترة قواعد "الملف الأساسي" لاستهداف الإصدار 9 من نظام التشغيل Android (حزمة تطوير البرامج (SDK) 28) aosp/1980331 b/216508418
تخطّي تثبيت الملف الشخصي عند استخدام
Compilation.None()
بالإضافة إلى ذلك، يتم عرض تحذيرات عند استخدام التطبيق لإصدار قديم منandroidx.profileinstaller
و"المكوّن الإضافي لنظام Gradle المتوافق مع Android". aosp/1977029
الإصدار 1.1.0-beta03
9 فبراير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta03
. يحتوي الإصدار 1.1.0-beta03 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
AudioUnderrunMetric
إلى مكتبة Macrobenchmark ضمن علامة تجريبية للسماح برصد نقص الصوت (Ib5972) لم يعُد
BaselineProfileRule
يقبل حظرsetup
لأنّ هذه الوظيفة كانت مماثلة لوظيفةprofileBlock
. (Ic7dfe، b/215536447)على سبيل المثال
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى عدم تعديل عمليات تتبُّع أداة تحليل الأداء المصغّرة في عمليات التشغيل اللاحقة عند ربطها في ناتج Studio (I5ae4d، b/214917025)
- منع أوامر shell الخاصة بالتجميع على الإصدار 23 من واجهة برمجة التطبيقات (Ice380)
- تمت إعادة تسمية
FrameCpuTime
إلىFrameDurationCpu
، وFrameUiTime
إلىFrameDurationUi
لتوضيح أنّ هذه القيم هي مدة وليس طوابع زمنية، ولتتطابق مع البادئات. (I0eba3، b/216337830)
الإصدار 1.1.0-beta02
26 يناير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta02
. يحتوي الإصدار 1.1.0-beta02 على عمليات الإيداع هذه.
إصلاح الأخطاء
- يتم الآن ربط نتائج "أخذ عيّنات من سلسلة استدعاء الدوال البرمجية" / "تتبُّع طريقة التنفيذ" في Microbenchmark ببيانات Studio، على غرار نتائج تحليل الأداء الأخرى، ولا يتم إخفاء مقياس التخصيص. (Idcb65 وb/214440748 وb/214253245)
- تعرض BaselineProfileRule الآن الأمر
adb pull
في logcat وفي ناتج "استوديو Android" لسحب ملف نصي BaselineProfile تم إنشاؤه. (f08811)
الإصدار 1.1.0-beta01
12 يناير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta01
. يحتوي الإصدار 1.1.0-beta01 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إصلاح مشكلة تجاهل تفعيل وسيطة أداة تحليل الأداء (I37373، b/210619998)
- إزالة
CompliationModes
المتوقّفة نهائيًا (I98186، b/213467659) - تم تغيير وسيطة ملف تعريف خط الأساس في
CompilationMode.Partial
إلى تعداد لتوضيحها. (Id67ea)
الإصدار 1.1.0-alpha13
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha13
. يحتوي الإصدار 1.1.0-alpha13 على عمليات الدمج هذه.
تغييرات واجهة برمجة التطبيقات
- إضافة ميزة "تتبُّع نشاط النظام" ذات الحمل المنخفض إلى ناتج اختبار الأداء الدقيق على Android Q (المستوى 29 من واجهة برمجة التطبيقات أو أعلى). يُرجى العِلم أنّ هذه الميزة لا تسجّل حاليًا عمليات التتبُّع المخصّصة (عبر واجهات برمجة التطبيقات
android.os.Trace
أوandroidx.tracing
Jetpack) لتجنُّب التأثير في النتائج. يجب أن يكون هذا التتبُّع مفيدًا في تشخيص حالات عدم الاستقرار، خاصةً من المصادر خارج مقياس الأداء. (I298be، b/205636583، b/145598917) - توضيح
CompilationModes
إلى ثلاث فئات: "كامل" و"بلا" و"جزئي" في السابق، كانت تتم تسميتها بشكل غير متسق استنادًا إلى وسيطات التجميع (التي نتعامل معها الآن على أنّها تفاصيل التنفيذ) والميزات. ويجعل ذلك المقايضات والمجموعات المحتملة والسلوك على مستوى إصدارات المنصة أكثر وضوحًا. (I3d7bf، b/207132597) - يتم الآن إعداد المقاييس وقياسها دائمًا في أزواج وبالترتيب. يمكنك الآن طلب اسم الحزمة والتكرار (على الرغم من أنّ التكرار قد يكون
null
في سيناريوهات الإحماء معيّنة). (Id3b68، b/208357448، b/208369635)
إصلاح الأخطاء
- تم التعامل مع القيمة الثابتة
CompilationMode.Speed
بشكل غير صحيح على أنّهاNone
(I01137)
الإصدار 1.1.0-alpha12
17 نوفمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha12
. يحتوي الإصدار 1.1.0-alpha12 على عمليات الإيداع هذه.
الميزات الجديدة
- إضافة TraceSectionMetric تجريبية لقياسات التوقيت المخصّصة المستندة إلى عمليات التتبُّع (I99db1، b/204572664)
إصلاح الأخطاء
- تنشيط الجهاز في كل تكرار لضمان إمكانية اختبار واجهة المستخدم - يتطلّب إيقاف شاشة القفل. (Ibfa28، b/180963442)
- إصلاح أعطال متعدّدة في وضع تتبُّع الأداء StackSampling على المحاكيات والأجهزة غير المجذَّرة (Icdbda، b/202719335)
- تمت إزالة فترة النوم التي تبلغ 0.5 ثانية في نهاية كل تكرار. إذا لاحظت فقدان مقاييس بسبب هذا التغيير، يُرجى الإبلاغ عن خطأ. (Iff6aa)
- تقليل فرص فقدان البيانات، وتقليل الحمل الزائد على الذاكرة الناتج عن التتبُّع (Id2544 وb/199324831 وb/204448861)
- تقليل حجم التتبُّع بنسبة% 40 تقريبًا من خلال التبديل إلى تنسيق تخزين sched المضغوط (Id5fb6، b/199324831)
- تم تعديل عمليات تنفيذ مقاييس بدء التشغيل لتنتهي دائمًا في نهاية سلسلة العرض. سيكون هذا الإعداد أكثر اتساقًا على مستوى إصدارات المنصة، كما أنّه سيتم ربطه بشكل أوثق بعمليات القياس داخل التطبيق. (Ic6b55)
الإصدار 1.1.0-alpha11
3 نوفمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha11
. يحتوي الإصدار 1.1.0-alpha11 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- يتضمّن Macrobenchmark الآن
minSdkVersion
بقيمة23
. (If2655) - تضيف هذه السمة
BaselineProfileRule
تجريبية جديدة يمكنها إنشاء ملفات تعريف أساسية لرحلة المستخدم المهمة في التطبيق. سنقدّم مستندات تفصيلية في وقت لاحق. (Ibbefa، b/203692160) - تتم إزالة صيغة واجهة measureRepeated التي تمت إضافتها للمتصلين بلغة Java، لأنّها تسبّبت في غموض عند إكمال/حلّ الطريقة. على مستخدمي Java إعادة Unit.Instance من measureRepeated. إذا كان هذا الأمر يسبّب لك إزعاجًا، يُرجى تقديم تقرير بالخلل، ويمكننا إعادة النظر في هذه المشكلة في إصدار مستقبلي. (Ifb23e، b/204331495)
الإصدار 1.1.0-alpha10
27 أكتوبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha10
. يحتوي الإصدار 1.1.0-alpha10 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- إتاحة استخدام StartupTimingMetric مع الإصدارات القديمة حتى المستوى 23 من واجهة برمجة التطبيقات تتيح هذه الطريقة الجديدة أيضًا التعامل بشكل أفضل مع الدالة reportFullyDrawn() من أجل الانتظار إلى أن يتم عرض المحتوى ذي الصلة. (If3ac9، b/183129298)
- تمت إضافة JvmOverloads إلى طرق MacrobenchmarkScope المتعددة للمتصلين بلغة Java. (I644fe، b/184546459)
- توفير دالة MacrobenchmarkRule.measureRepeated بديلة تستخدم
Consumer<MacrobenchmarkScope>
للاستخدام الاصطلاحي في لغة Java (If74ab, b/184546459)
إصلاح الأخطاء
- إصلاح مشكلة عدم بدء عمليات التتبُّع في وقت مبكر بما يكفي، وعدم توفّر بيانات المقاييس من المتوقّع أن يؤدي ذلك إلى إصلاح استثناءات "تعذُّر قراءة أي مقاييس أثناء قياس الأداء" التي تسبّبت فيها المكتبة نفسها. (I6dfcb، b/193827052، b/200302931)
- تمت إعادة تسمية FrameNegativeSlack إلى FrameOverrun لتوضيح معناها، أي مقدار تجاوز الإطار الزمني المخصّص له. (I6c2aa، b/203008701)
الإصدار 1.1.0-alpha09
13 أكتوبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha09
. يحتوي الإصدار 1.1.0-alpha09 على عمليات الإيداع هذه.
إصلاح الأخطاء
- إتاحة إيقاف ذاكرة التخزين المؤقت لصفحة Kernel بدون إذن الوصول إلى الجذر على الإصدار 31 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، ما سيؤدي إلى زيادة دقة عمليات التشغيل StartupMode.COLD (Iecfdb، b/200160030)
الإصدار 1.1.0-alpha08
29 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha08
. يحتوي الإصدار 1.1.0-alpha08 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تفعيل مقاييس الأداء الكلية الخاصة بالتمرير لتتوافق مع الإصدار 23 من واجهة برمجة التطبيقات (If39c2، b/183129298)
- إضافة نوع جديد من المقاييس المستندة إلى عيّنات إلى واجهة المستخدم وإخراج JSON، مع التركيز على النسب المئوية لعدّة عيّنات لكل تكرار (I56247، b/199940612)
- التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو Android"). (I69249، b/197008210)
الإصدار 1.1.0-alpha07
1 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha07
. يحتوي الإصدار 1.1.0-alpha07 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تم رفع الحد الأدنى لمستوى واجهة برمجة التطبيقات إلى 21 ليعكس أدنى مستوى لواجهة برمجة التطبيقات سيتم توفيره في المستقبل. يستمرّ عرض الحدّ الأدنى الحالي من مستوى واجهة برمجة التطبيقات المتوافق من خلال RequiredApi()، وهو حاليًا 29 (I440d6، b/183129298).
إصلاح الأخطاء
- إصلاحات
ProfileInstaller
لتسهيل تشغيل تطبيقات تستخدم ملفات تعريف أساسية لاختبارات Macrobenchmark باستخدامCompilationMode.BaselineProfile
(I42657، b/196074999) ملاحظة: يجب أيضًا التحديث إلى الإصدارandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
أو إصدار أحدث. - أصبحت مقاييس الأداء
StartupMode.COLD
وCompilationMode.None
أكثر ثباتًا الآن. (I770cd، b/196074999)
الإصدار 1.1.0-alpha06
18 أغسطس 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha06
. يحتوي الإصدار 1.1.0-alpha06 على عمليات الإيداع هذه.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وسيط
androidx.benchmark.iterations
للأدوات من أجل السماح بتجاوز عدد التكرارات يدويًا عند الاختبار/إنشاء الملفات الشخصية محليًا. (6188be، b/194137879)
إصلاح الأخطاء
- تم التبديل إلى Simpleperf كأداة تلقائية لإنشاء ملفات تعريف العيّنات في الإصدار 29 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ic4b34، b/158303822)
المشاكل المعروفة
- لا يزال "
CompilationMode.BaselineProfile
" قيد التطوير. تجنَّب استخدامها لتحديد مدى ملاءمة الملف الشخصي في الوقت الحالي.
الإصدار 1.1.0-alpha05
4 أغسطس 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha05
. يحتوي الإصدار 1.1.0-alpha05 على عمليات الإيداع هذه.
تم إلغاء 1.1.0-alpha04
قبل إصداره بسبب حدوث أعطال متفرقة. b/193827052
تغييرات واجهة برمجة التطبيقات
- تم التبديل إلى startActivityAndWait لتفعيل التشغيل من خلال
am start
، ما يقلّل وقت كل تكرار للقياس بمقدار 5 ثوانٍ تقريبًا، ولكن لن يكون بإمكانك استخدام حِزم الأهداف. (I5a6f5، b/192009149
إصلاح الأخطاء
- تقليل حساسية رصد الحد الأقصى للتردد الحراري، وإعادة احتساب خط الأساس إذا تم رصد الحدود القصوى بشكل متكرر (I7327b)
- إصلاح FrameTimingMetric لتعمل على الإصدار التجريبي من Android S (Ib60cc وb/193260119)
- استخدِم
EmptyActivity
لإخراج التطبيق المستهدَف من حالة الإيقاف الإجباري من أجل توفير دعم أفضل لميزةCompilationMode.BaselineProfile
. (Id7cac, b/192084204) - تم تغيير امتداد ملف التتبُّع إلى
.perfetto-trace
ليتوافق مع معيار النظام الأساسي. (I4c236، b/174663039) - تعرض السمة StartupTimingMetric الآن المقياس "fullyDrawnMs" لقياس الوقت المستغرَق حتى يكتمل عرض تطبيقك. لتحديد هذا المقياس لتطبيقك، استدعِ الدالة Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، مثلاً عند تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات تحقّق من إصدار التصميم في ComponentActivity). يُرجى العِلم أنّه يجب أن يستمر الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر الدالة startActivityAndWait اكتمال عرض التقارير). (If1141، b/179176560)
- تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم بعمليات التتبُّع بمقدار 50 ملي ثانية أو أكثر (Ic8390، b/193923003)
- زيادة كبيرة في معدّل تكرار الاستطلاع عند إيقاف التتبُّع، ما يمكن أن يقلّل من وقت تشغيل مقياس الأداء عند بدء التشغيل بنسبة %30 أو أكثر (Idfbc1، b/193723768)
الإصدار 1.1.0-alpha03
16 حزيران (يونيو) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha03
. يحتوي الإصدار 1.1.0-alpha03 على عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة
CompilationMode.BaselineProfile
جديد لتوفير الدعم للملفات الشخصية المثبَّتة باستخدام مكتبة Jetpack ProfileInstaller. (aosp/1720930)
إصلاح الأخطاء
تم تعديل نموذج رمز Gradle لإيقاف أخطاء قياس الأداء لاستخدام واجهة برمجة تطبيقات غير متوقّفة نهائيًا مع صيغة تتوافق أيضًا مع مستخدمي .gradle.kts.
على سبيل المثال،
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
الإصدار 1.1.0-alpha02
18 أيار (مايو) 2021
يقدّم الإصدار 1.1.0-alpha02 من أداة القياس معيارًا جديدًا مهمًا، وهو Macrobenchmark. بالإضافة إلى معيار الأداء الذي يتيح لك قياس حلقات وحدة المعالجة المركزية، يتيح لك Macrobenchmark قياس تفاعلات التطبيق بأكمله، مثل بدء التشغيل والتمرير، وتسجيل عمليات التتبُّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على عمليات الإيداع هذه.
الميزات الجديدة
تمت إضافة عناصر Macrobenchmark (androidx.benchmark:benchmark-macro-junit4
وandroidx.benchmark:benchmark-macro
)
- تسجيل مقاييس أداء بدء التشغيل والتمرير/الرسوم المتحركة من تطبيقك، سواء على الجهاز أو في عملية الدمج المتواصل
- تسجيل عمليات التتبُّع وفحصها من داخل "استوديو Android"
إصلاح الأخطاء
- حلّ مشكلة أذونات shell مع دليل الإخراج على Android 12 (ملاحظة: قد يتطلّب ذلك تحديث الإصدار التجريبي من Android Gradle Plugin إلى 7.0.0 وتحديث Android Studio إلى 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
- مقياس التخصيص: يتم الآن تشغيل مرحلة إضافية في مقاييس الأداء بعد مرحلة الإعداد والوقت، ما يؤدي إلى تسجيل أعداد التخصيص. يمكن أن تتسبّب عمليات التخصيص في حدوث مشاكل في الأداء على الإصدارات القديمة من النظام الأساسي (أصبح وقت التنفيذ 8 نانو ثانية في الإصدار M بعد أن كان 140 نانو ثانية في الإصدار O، وتم قياس ذلك على جهاز Nexus5X، مع إيقاف التزامن). يتم عرض هذا المقياس في ناتج وحدة تحكّم "استوديو Android"، بالإضافة إلى
- إتاحة إنشاء ملفات تعريف: يمكنك الآن تسجيل بيانات إنشاء ملفات التعريف لتنفيذ اختبار الأداء، وذلك لمعرفة سبب بطء تشغيل الرموز البرمجية. يتيح تطبيق Benchmark تسجيل تتبُّع الطريقة أو أخذ عيّنات من الطريقة من ART. يمكن فحص هذه الملفات باستخدام "أداة تحليل الأداء" داخل "استوديو 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 من Benchmark
20 تشرين الثاني (نوفمبر) 2019
تم إصدار الإصدارات androidx.benchmark:benchmark-common:1.0.0
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0
وandroidx.benchmark:benchmark-junit4:1.0.0
بدون أي تغييرات عن الإصدار 1.0.0-rc01. يتضمّن الإصدار 1.0.0 عمليات الدمج التالية.
الميزات الرئيسية في الإصدار 1.0.0
تتيح لك مكتبة Benchmark كتابة مقاييس أداء لرموز التطبيق البرمجية والحصول على النتائج بسرعة.
ويمنع حدوث مشاكل في إعدادات الإصدار ووقت التشغيل، كما يثبّت أداء الجهاز لضمان دقة القياسات واتّساقها. يمكنك تشغيل مقاييس الأداء مباشرةً في "استوديو Android" أو في عملية الدمج المتواصل لمراقبة أداء الرمز البرمجي بمرور الوقت ومنع حدوث تراجعات.
تشمل الميزات الرئيسية ما يلي:
- تثبيت الساعة
- تحديد أولوية سلاسل المحادثات تلقائيًا
- إتاحة اختبار أداء واجهة المستخدم، مثل نموذج RecyclerView
- التسخين والتكرار المتوافقان مع التجميع أثناء التنفيذ
- ناتج مقياس الأداء بتنسيق JSON للمعالجة اللاحقة
الإصدار 1.0.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-rc01
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01
وandroidx.benchmark:benchmark-junit4:1.0.0-rc01
. يتضمّن الإصدار 1.0.0-rc01 عمليات الإيداع هذه.
الميزات الجديدة
- تمت إضافة تتبُّع systrace إلى مقاييس الأداء
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استقرار المقاييس حيث لا تنتهي عملية JIT قبل الإحماء بسبب خفض الأولوية (b/140773023)
- دليل موحّد لإخراج ملفات JSON في الإصدارَين 3.5 و3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
الإصدار 1.0.0-beta01
9 أكتوبر 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-beta01
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
وandroidx.benchmark:benchmark-junit4:1.0.0-beta01
. يحتوي الإصدار 1.0.0-beta01 على عمليات الإيداع هذه.
الميزات الجديدة
- تنفيذ عملية جمع البيانات غير الضرورية قبل كل عملية إعداد مسبق لتقليل الضغط على الذاكرة من أحد مقاييس الأداء إلى المقياس التالي (b/140895105)
إصلاح الأخطاء
- تمت إضافة تبعية
androidx.annotation:android-experimental-lint
، حتى يعرض رمز Java أخطاء Lint بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما توفّره التعليقات التوضيحية التجريبية في Kotlin لمستدعي Kotlin. - يرصد الآن بشكل صحيح استخدام وسيط
additionalTestOutputDir
للأدوات في الإصدار 3.6 من "مكوّن 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)، وعند التشغيل في بيئة التكامل المستمر. لمزيد من المعلومات، اطّلِع على إنشاء مقاييس أداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المتواصل.
الميزات الجديدة
- مكوّن Gradle الإضافي
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
AndroidBenchmarkRunner
تلقائيًا (b/138374050) - تمت إضافة إمكانية نسخ البيانات الجديدة المستندة إلى AGP، وذلك عند تنفيذ مقاييس الأداء وعند استخدام AGP 3.6 أو إصدار أحدث
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
- إضافات بتنسيق JSON
- إجمالي مدة تشغيل اختبار الأداء المعياري للناتج (b/133147694)
- إنّ مقاييس
@Parameterized
التي تستخدم سلسلة اسم (مثل@Parameters(name = "size={0},depth={1}")
) تعرض الآن أسماء المَعلمات وقيمها لكل مقياس في ناتج JSON (b/132578772)
- وضع التشغيل التجريبي (b/138785848)
- تمت إضافة وضع "التشغيل التجريبي" لتشغيل كل حلقة من حلقات قياس الأداء مرة واحدة فقط، وذلك للتحقّق من الأخطاء/الأعطال بدون تسجيل القياسات. يمكن أن يكون ذلك مفيدًا، على سبيل المثال، لتشغيل مقاييس الأداء بسرعة في مرحلة ما قبل الإرسال للتأكّد من أنّها لا تتضمّن أخطاء.
تغييرات واجهة برمجة التطبيقات
- تم تغيير بنية الوحدة، ما أدّى إلى تقسيم المكتبة (b/138451391)
- يحتوي
benchmark:benchmark-junit4
على فئات تعتمد على JUnit:AndroidBenchmarkRunner
وBenchmarkRule
، وقد تم نقل كلتيهما إلى حزمةandroidx.benchmark.junit4
- يحتوي
benchmark:benchmark-common
على بقية المنطق، بما في ذلك واجهة برمجة التطبيقات BenchmarkState - سيسمح هذا التقسيم للمكتبة بتوفير إمكانية قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
- يحتوي
- يتم الآن التعامل مع تحذيرات الإعداد على أنّها أخطاء، وسيؤدي ذلك إلى تعطُّل الاختبار (b/137653596)
- ويتم ذلك لتشجيع إجراء قياسات دقيقة، خاصةً في CI
- يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام وسيطة أدوات القياس. على سبيل المثال:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
إصلاح الأخطاء
- عند حدوث أخطاء أثناء الكتابة إلى وحدة التخزين الخارجية على أجهزة Q، يتم عرض رسائل أكثر تفصيلاً مع اقتراحات حول كيفية حلّ المشكلة
- يتم تشغيل الشاشات تلقائيًا أثناء عمليات قياس الأداء، بدلاً من حدوث خطأ عند إيقاف الشاشة
المساهمات الخارجية
- نشكر "سيرغي زاخاروف" على المساهمة في تحسين مخرجات JSON وإصلاح المشاكل المتعلّقة بإيقاف تشغيل الشاشة.
الإصدار 1.0.0-alpha03
2 تموز (يوليو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha03
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
. يمكنك الاطّلاع على عمليات الإيداع المضمَّنة في هذا الإصدار هنا.
الميزات الجديدة
- عرض مدة النوم بسبب الحدّ من سرعة المعالجة الحرارية لكل مقياس أداء في تقرير JSON الكامل
إصلاح الأخطاء
- لن يكون من الضروري تطبيق المكوّن الإضافي لنظام Gradle بعد المكوّنات الإضافية لنظام Android وكتلة Android
- إتاحة تقارير قياس الأداء على أجهزة Android 10 التي تستخدم مساحة التخزين المحصورة
الإصدار 1.0.0-alpha02
6 يونيو 2019
تم طرح androidx.benchmark:1.0.0-alpha02
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
. يمكنك الاطّلاع على عمليات الدمج المضمّنة في هذا الإصدار هنا.
يُرجى العِلم أنّنا نتعامل مع مخطّط JSON على أنّه واجهة برمجة تطبيقات. ونخطّط للالتزام بقيود الثبات نفسها التي تفرضها واجهات برمجة التطبيقات الأخرى، أي أن يكون الإصدار ثابتًا (مع استثناءات نادرة جدًا) عند إطلاقه في مرحلة الإصدار التجريبي، ويتم إصلاح المشاكل في الإصدار النهائي، مع إضافة ميزات فقط في الإصدارات الثانوية وإجراء تغييرات أو عمليات إزالة في الإصدارات الرئيسية.
تغييرات واجهة برمجة التطبيقات
تمت إعادة تصميم مخطّط JSON. من المرجّح أن تقتصر التغييرات الإضافية على مخطط JSON على عمليات الإضافة:
- تمت إعادة تنظيم بنية عنصر النتيجة لتوفير مجموعات مقاييس إضافية في المستقبل (b/132713021)
- تمت إضافة معلومات سياقية خاصة بتشغيل الاختبار، مثل معلومات الجهاز والإصدار وما إذا كانت الساعات مقفلة، إلى العنصر ذي المستوى الأعلى (b/132711920)
- تتضمّن أسماء مقاييس الوقت الآن اللاحقة "ns" (b/132714527)
- تمت إضافة إحصاءات إضافية لكل مقياس تمّت الإبلاغ عنه (الحد الأقصى، والوسيط، والحد الأدنى)، وتمت إزالة الإحصاءات الموجزة المبسّطة الخاصة بـ "النانو ثانية" (b/132713851).
تمت إزالة إخراج XML (b/132714414)
إزالة ميزة رصد الحدّ الأقصى للتردد الحراري من واجهة برمجة التطبيقات
BenchmarkState.reportData
(b/132887006)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ثبات
./gradlew lockClocks
على بعض الأجهزة التي تعمل بأحدث إصدار من نظام التشغيل (b/133424037) - تم إيقاف رصد التقييد للمحاكي (b/132880807)
الإصدار 1.0.0-alpha01
7 أيار (مايو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha01
. يمكن الاطّلاع هنا على عمليات الدمج المضمّنة في هذا الإصدار.