مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
30 تشرين الأول (أكتوبر) 2024 | 1.3.3 | - | - | 1.4.0-alpha04 |
إعلان التبعيات
لإضافة تبعية إلى مقياس الأداء، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven من Google للحصول على مزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark
في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
لملف
وحدة macrobenchmark:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
مقياس مصغّر
لاستخدام Microbenchmark
في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
لملف
وحدة قياس الأداء الصغير:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
كما توفر مكتبة المعايير الصغيرة مكونًا إضافيًا من مكونات Gradle التي يمكنك استخدامها مع وحدة المعايير الدقيقة.
يعين هذا المكون الإضافي الإعدادات الافتراضية لتهيئة التصميم للوحدة النمطية، وينشئ
نسخة قياس الأداء إلى المضيف،
وتوفر
./gradlew lockClocks
مهمة.
لاستخدام المكوّن الإضافي، يُرجى تضمين السطر التالي في كتلة "المكوّنات الإضافية" في المستوى الأعلى.
ملف build.gradle
:
Groovy
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
طبِّق المكوِّن الإضافي على ملف build.gradle
الخاص بوحدة قياس الأداء.
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 1.4
الإصدار 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 - يؤثر في
context.compilationMode
في json، وكذلك سلوك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 على عمليات التنفيذ هذه.
تغييرات واجهة برمجة التطبيقات
- مقاييس الأداء على مستوى النظام: تضيف
ArtMetric
، والتي يمكن استخدامها لفحص تغطية الملف الشخصي أو الأداء العام لـ Android RunTime. يتم تسجيل عدد عمليات الربط الديناميكي للوقت وإجمالي مدّتها وعمليات بدء الصف (حيثما كان ذلك متاحًا) والتأكّد من الصف. بالإضافة إلى ذلك، سيتم تغييرCaptureInfo
ليتضمن إصدار ART الرئيسي الاختياري تلقائيًا. (I930f7) - أضِف
coefficientOfVariation
إلى إخراج Benchmark 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
و-Xtype-enhancement-improvements-strict-mode
(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) - من الاختبار القياسي
1.3.2
: تم إصلاح مشكلة تعذُّر "مركز الاختبار الافتراضي من Firebase" (FTL) في سحب ملفات نتائج "الملف الشخصي الأساسي" أو "الاختبارات المقياسية الكبرى" من "مكوّن Gradle الإضافي للملف الشخصي الأساسي". (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(...)
}
}
بعد ذلك، سيؤدي تشغيل مقياس أداء بدء التشغيل إلى تحليل التتبّع بحثًا عن المشاكل الشائعة، ثم طباعتها بعد المقاييس في مخرجات اختبار "استوديو YouTube" في علامة التبويب "مقياس الأداء"، على سبيل المثال:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
لا تزال هذه الميزة قيد التطوير، وسيتم إجراء تحسينات على المستندات وإمكانية التوسيع في المستقبل، ولكن يُرجى إرسال ملاحظاتك.
الميزات الجديدة
- تمت إضافة سمة gradle
androidx.baselineprofile.suppressWarnings
لإيقاف جميع التحذيرات المتعلّقة بالملف الشخصي الأساسي. (314153a) - يتم الآن عرض مقاييس الميكروبات في آثار Perfetto كعدّادات. (3214854)
- إضافة نصوص برمجية تجريبية لإيقاف jit (يتطلب الجذر / إعادة تشغيل بيئة التشغيل) وإعادة ضبط حالة الأداء/الاختبار للجهاز. لا يتم حاليًا نشر هذه المهام كمهام gradle. (7c3732b)
- تمت إضافة مَعلمة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار
automaticGenerationDuring
، ستؤدي معايير الأداء أيضًا إلى إنشاء ملف تعريف أساسي. وسيتعذّر تنفيذ هذا الإجراء في حال استخدام المحاكيات. باستخدام الوسيطة الجديدةskipBenchmarksOnEmulator
، يمكننا تخطّي الاختبار بدلاً من ذلك. (0c2ddcd) - تغيير منطق تفعيل حدث الأداء لتشغيله على الإصدار 23 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (2550048)
تغييرات واجهة برمجة التطبيقات
- تم نقل وسيطة
PerfettoConfig
التجريبية الحالية إلىMacrobenchmarkRule.measureRepeated()
إلى عنصرExperimentalConfig
الجديد.
إصلاح الأخطاء
- زيادة عدد عمليات إعادة المحاولة
lockClocks.sh
(99e9dac) - لا تنشئ أنواع الإصدارات
nonMinified
وأنواع الإصدارات المرجعية إذا كانت متوفّرة. بسبب خطأ، سيتم إعادة إنشاء نوعَي الإصدارnonMinified
و"الأداء المرجعي" حتى إذا كانا متوفّرين. (e75f0a5) - تجاهل الشرائح غير المنتهية من
TraceSectionMetric
نتيجة. (a927d20) - تم تحسين عملية التحقّق من المحاكي لأخذ بادئة
sdk_
في الاعتبار. (1587de8) - يجب معاملة الحِزم غير المُشغَّلة على أنّها تمّت إزالتها في
FrameTimingGfxInfoMetric
. (35cc79c) - إصلاح
androidx.benchmark.cpuEventCounter
التي ينتج عنها قيم تالفة للأحداث التي لا تتضمّن تعليمات. (06edd59) - يجب حلّ مشكلة
resumeTiming/runWithTimingDisabled
للالتزام بترتيب أولوية المقياس، وتقليل تأثير الإيقاف المؤقت للمقاييس ذات الأولوية المنخفضة أو استئنافها في نتائج المقاييس ذات الأولوية الأعلى. على سبيل المثال، في حال استخدام مقاييس أداء وحدة المعالجة المركزية من خلال مَعلمة أداة القياسcpuEventCounter.enable
، لن يتم تقليل وقتNs بشكل كبير عند حدوث الإيقاف المؤقت أو الاستئناف. (5de0968)
الإصدار 1.3
الإصدار 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 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر سحب ملفات نتائج "ملف الأداء الأساسي" أو "اختبارات الأداء على مستوى التطبيق" من "مكوّن Gradle الإضافي لملف الأداء الأساسي" في "مركز الاختبار الافتراضي لمنصة Firebase". (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة الملف الشخصي الأساسي في قالب المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
بعد ذلك، عليك ضبط إعدادات "مركز الاختبار الافتراضي لمنصة Firebase" باستخدام ما يلي:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة الملف الشخصي الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.3.1
18 أيلول (سبتمبر) 2024
تم طرح androidx.benchmark:benchmark-*:1.3.1
. يتضمّن الإصدار 1.3.1 عمليات الربط هذه.
إصلاح الأخطاء
- تمت إضافة سمة Gradle
androidx.baselineprofile.suppressWarnings
لإيقاف جميع تحذيرات الملف الشخصي الأساسية (I7c36e، وb/349646646). - تم إصلاح مكوّن Gradle الإضافي لملف الإصدار الأساسي لاستخدام
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 على عمليات الربط هذه.
التغييرات في اختبارات الأداء الدقيقة منذ الإصدار 1.2.0
- يكون تتبُّع الأساليب مفعّلاً تلقائيًا في اختبارات الأداء الدقيقة عند تشغيلها على معظم الأجهزة
- يتم تنفيذ تتبُّع الإجراءات كمرحلة منفصلة بعد إجراء عمليات القياس، ما يتيح الحصول على نتائج قياس دقيقة وتتبُّع أداء في الوقت نفسه من عملية واحدة لقياس الأداء.
- سيؤثّر تتبُّع الطريقة في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. في هذه الإصدارات، يكون تتبُّع الطريقة غير مفعّل تلقائيًا ويتم طباعة تحذير في مخرجات "استوديو Android".
- مقاييس الأداء لسلسلة التعليمات الرئيسية وأخطاء ANR
- تمت إضافة
measureRepeatedOnMainThread
لمقاييس أداء سلاسل واجهة المستخدم (مثل تلك التي تتفاعل مع واجهات المستخدم في Compose/View)، وذلك لتجنُّب أخطاء ANR عند تشغيلها لعدة ثوانٍ. - يتم تخطّي عمليات تتبُّع الطريقة إذا كان من المتوقّع أن يتم تجاوز الموعد النهائي لتجنُّب أخطاء ANR. اضبط
androidx.benchmark.profiling.skipWhenDurationRisksAnr
على خطأ لإيقاف هذا السلوك (لا يُنصح به لإجراء عمليات دمج مستمر، لأنّ أخطاء ANR يمكن أن تتسبب في حدوث مشكلة في عمليات الدمج المستمر الطويلة).
- تمت إضافة
- تصغير حجم الملفات
- قواعد Proguard المضمّنة لتحسين اختبارات الأداء الدقيقة مع تفعيل التصغير
- يتطلب تصغير/R8 في وحدة مكتبة استخدام AGP 8.3، ويمكن تفعيله من خلال
android.buildTypes.release.androidTest.enableMinification
فيbuild.gradle
- تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()
لمنع إزالة الرموز غير الصالحة (If6812، b/286091643)
- المقاييس
- ميزة تجريبية لعدّاد أحداث وحدة المعالجة المركزية (CPU) (مقاييس من
perf_event_open
، تتطلّب الجذر في معظم إصدارات النظام الأساسي)، وإمكانية الوصول عبرInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(يمكن ضبطها علىtrue
)، ويمكن ضبطandroidx.benchmark.cpuEventCounter.events
على سبيل المثال على (Instructions,CpuCycles
). من المفترض أن تكون هذه الميزة متاحة على بعض أدوات محاكاة تصحيح أخطاء المستخدم، ولكن لم يتم اختبار التوافق على جميع أدوات المحاكاة المتاحة.
- ميزة تجريبية لعدّاد أحداث وحدة المعالجة المركزية (CPU) (مقاييس من
تغييرات MACRObenchmark منذ الإصدار 1.2.0
- طريقة التتبع الشامل للمقاييس الكبيرة.
- يتم الآن حصر عمليات تتبُّع الطريقة بمدة
measureBlock
، ويمكنها تسجيل جلسات متعددة إذا بدأت العملية عدة مرات. - في السابق، كان تتبُّع الطريقة يعمل فقط مع معايير
StartupMode.COLD
، ولم يكن يُسجِّل أي بيانات عنmeasureBlocks
التي لم تُعيد تشغيل العملية المستهدَفة. - تم إصلاح مشكلة تفريغ عمليات تتبُّع الطرق في اختبار الأداء على مستوى التطبيق، بحيث يتم تسجيل عمليات تتبُّع الطرق بالكامل وتكون صالحة، حتى على الأجهزة البطيئة. (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 من أداة تثبيت الملف الشخصي حتى الآن.-
androidx.benchmark.dropShaders.throwOnFailure=true/false
: يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
- تمت إضافة خيار
MacrobenchmarkRule#measureRepeated
تجريبي يستخدِمPerfettoConfig
مخصّصًا لتسجيل عمليات تتبُّع Perfetto المخصّصة بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر استخدام فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - يمكنك إلغاء مهام dexopt في الخلفية قبل تشغيل مقياس طلبك الأساسي للحد من التداخل. (I989ed)
- ينتظر تطبيق Macrobenchmark الآن لمدة ثانية واحدة حتى يُفرِغ التطبيق المستهدَف ملف تعريف ART (كان ينتظر في السابق لمدة 500 ملي ثانية). (I85a50، b/316082056)
- إعادة هيكلة TraceSectionMetric
- ملاحظة:
TraceSectionMetric
يمكن أن تؤثّر التغييرات أدناه في النتائج عند استخدام عملية التكامل المستمر، وقد تؤدي إلى حدوث انقطاعات أو إيقاف التحليل. - أصبح "المجموع" الإعداد التلقائي الآن، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة، وسيؤدي ذلك إلى تجاهل البيانات في هذه الحالات.
- تم تغييره ليصبح أكثر تخصيصًا، مع توفير المزيد من الأوضاع
- تمّت الآن تضمين أسماء الأوضاع في اسم إخراج المقياس (في Studio وJSON).
- تتيح الآن شرائح تم إنشاؤها باستخدام
Trace.{begin|end}AsyncSection
.
- ملاحظة:
- المقاييس
- الطاقة: تمت إضافة
PowerMetric.deviceSupportsHighPrecisionTracking
وPowerMetric.deviceBatteryHasMinimumCharge()
وPowerMetric.deviceSupportsPowerEnergy()
- تمت إعادة تسمية
Metric.getResult
إلىgetMeasurements
لمطابقة نوع الإرجاع - تمت إضافة Log.w / تصنيفات الاستثناء إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذلك يتم طرح بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بصمت)، بل يجعله أكثر وضوحًا. بشكل عام، إنّ التطبيقات التي
Log.w()
ولا تسجّل مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بالإطارات، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت عرض اللقطات (من شرائح واجهة المستخدم/وقت الاستجابة). (Id240f، b/329145809) - تمت إضافة قياس
frameCount
إلىFrameTimingMetric
للمساعدة في اكتشاف السيناريوهات التي تتغيّر فيها القياسات بسبب تغيّر عدد اللقطات التي تم إنشاؤها (تمّت إضافة صور متحركة جديدة وحلّ مشاكل عدم الصلاح). (I1e5aa) - تمت إضافة توضيح بأنّ
frameOverrunMs
هو المقياس المفضّل للتتبُّع عندما يكون متاحًا في "مستندات Google"، والسبب وراء ذلك. (I18749، b/329478323) - إصلاح مشكلة تؤدي إلى إقران الإطارات غير المنتهية في بداية التتبُّع ونهايته معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح كإطار واحد طويل جدًا (I39353، b/322232828)
- يتم تحسين خطأ
FrameTimingMetric
في حال عدم إنشاء الإطارات، وإرسال رابط الإخراج دائمًا للتتبّع في حال تعذّر تحليل المقاييس للمساعدة في تشخيص المشكلة. (I956b9) - تم إصلاح العُطل في
FrameTimingMetric
الذي يتعذّر عليه تحليل معرّف اللقطة، خاصةً على بعض أجهزة المصنّعين الأصليين للأجهزة. (Ia24bc، b/303823815، b/306235276) - تم تخفيف التشدّد في عمليات التحقّق في
FrameMetrics
، وتمّت إضافة المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
- الطاقة: تمت إضافة
تغييرات أداة إنشاء الملف الشخصي الأساسي / مكوّن Gradle الإضافي منذ الإصدار 1.2.0
- تمت زيادة الحد الأقصى الموصى به لإصدار AGP إلى 9.0.0-alpha01.
- تأكَّد من أنّ مهام
mergeArtProfile
وmergeStartupProfile
تنتظر دائمًا إنشاء الملف الشخصي الأساسي. (I623d6، b/343086054) - سيؤدي إنشاء ملف تعريف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8، b/269484510).
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- حلّ مشكلة عدم استخدام معايير الأداء للملفات الشخصية الأساسية التي تم إنشاؤها عندما يكون الخيار
automaticGenerationDuringBuild
غير مفعّل (Ic144f، b/333024280) - يجب إصلاح عمليات إلغاء سمات "مكوّن إضافي لـ Gradle" في
BaselineProfile
لتفعيل إنشاء الملف الشخصي الأساسي وإجراء قياس الأداء عند تخصيص نوع الإصدارnonMinified
أو قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في حزمة AAR قبل الإصدار AGP 8.3.0-alpha15. (I1d2af، b/313992099)
- تم إصلاح عنوان URL لملف الإصدار الأساسي وملف الإعدادات المبدئية في نهاية مهمة الإنشاء. (I802e5، b/313976958)
التغييرات الأخرى المهمة منذ 1.2.0
- تسجيل عمليات التتبّع
- تم تقليل خطأ EXITCODE 2 عند بدء تشغيل perfetto من خطأ إلى تحذير مسجَّل
- تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلب واجهة برمجة التطبيقات 28) (Ia0af2، b/341852305)
- يمكنك تفعيل تتبُّع علامة المنفذ تلقائيًا في مقاييس الأداء. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
- زيادة مهلة بدء عملية تسجيل التتبُّع لتجنُّب حدوث أعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841 وb/329145808)
- تمت إضافة واجهات برمجة التطبيقات
PerfettoTraceProcessor.Session.queryMetrics
العامة التي تتضمّن صيغ JSON وtextproto وproto binary (غير مفكَّكة). تتيح لك هذه المقاييس طلب مقاييس مضمّنة في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.CODENAMEcontext.build.version.abbreviatedCodename
: يشير إلى الحرف الأول من الاسم الرمزي للإصدار التجريبي (بما في ذلك إصدارات الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutput
إلى إخراج JSON لتسهيل استخدام الأدوات المتعلّقة بعمليات تتبُّع الأداء (مثل Perfetto، وتتبُّع الطرق) (I05ddd، b/332604449) - تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON الناتجة لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
- يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
الإصدار 1.3.0-rc01
7 آب (أغسطس) 2024
تم إصدار androidx.benchmark:benchmark-*:1.3.0-rc01
. يتضمّن الإصدار 1.3.0-rc01 عمليات الربط هذه.
إصلاح الأخطاء
- إصلاح
androidx.benchmark.cpuEventCounter
التي تنتج قيمًا تالفة للأحداث التي لا تتضمّن تعليمات (I7386a، b/286306579) - يجب إصلاح
resumeTiming
/runWithTimingDisabled
للالتزام بترتيب أولوية المقياس، والحدّ بشكل كبير من تأثير إيقاف/استئناف المقياس ذي الأولوية الأقل على نتائج المقياس ذي الأولوية الأعلى. على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية (cpu) من خلال وسيطة أداةcpuEventCounter.enable
، لن تنخفض قيمتا timeN بشكلٍ كبير عند حدوث الإيقاف المؤقت/الاستئناف. (I39c2e وb/286306579 وb/307445225) - تم تقليل احتمالية حدوث تحليل تسلسل استدعاء الدوال البرمجية الذي يتسبب في عدم بلوغ
measureRepeatedOnMainThread
الحدّ الأقصى لمدة مهلة سلسلة التعليمات الرئيسية من خلال نقل تحويل تحليل تسلسل استدعاء الدوال البرمجية من سلسلة التعليمات الرئيسية. (I487a8، b/342237318) - تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
- تمت إضافة عملية التحقّق من إصدار agp لإرسال اسم الحزمة كوسيطة instr. في الإصدارات الأقدم من AGP 8.4.0، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق القياس من خلال مَعلمات القياس. (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) - سيتم الآن طرح اختبار الأداء المجهري بشكل صحيح لمنع تداخل تتبُّع الطريقة مع القياسات. يحدث ذلك على أجهزة معيّنة عند فرض تفعيل تتبُّع الطريقة (من خلال وسيطات أداة القياس أو
MicrobenchmarkConfig
)، وفي حال محاولة إجراء قياس بعد تتبُّع طريقة. تعمل الأجهزة المتأثّرة بالإصدار 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها أثناء التشغيل من خلالProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. (Iafb92، وb/303660864)
إصلاح الأخطاء
- تم رفع الحد الأقصى لإصدار agp إلى 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 dependency ليصبح
api()
، لتسهيل استخدامها، مثلPerfettoTrace
وPerfettoConfig
. (Icdae3, b/341851833) - تأكَّد من أنّ مهام
mergeArtProfile
وmergeStartupProfile
تنتظر دائمًا إنشاء الملف الشخصي الأساسي. (I623d6، b/343086054) - يجب مراعاة حالة تفعيل السعر المتغير عند تحديد ما إذا كان يجب تفعيله. (I5d19e، b/343249144)
- تمت زيادة مهلة البدء التلقائية لمعالج تتبُّع الأداء. (I87e8c، b/329145808)
الإصدار 1.3.0-alpha05
14 أيار (مايو) 2024
تم إصدار androidx.benchmark:benchmark-*:1.3.0-alpha05
. يحتوي الإصدار 1.3.0-alpha05 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- طرح استثناء أوضح عندما يعرض مقياس macrobench قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
- تمّت إضافة قواعد حلول بديلة إلى قواعد Proguard في microbench، بما في ذلك التوافق مع قواعد المستمعين والتحذيرات أو الأخطاء الأخرى التي تم رصدها. (I14d8f، b/329126308، b/339085669)
- يتمّ تشغيل ميزة تتبُّع الإجراءات كمرحلة منفصلة أثناء إجراء اختبار قياس الأداء على مستوى التطبيق، ولم تعُد تؤثر في القياسات. (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). - تجنُّب العُطل عندما يكون معالج بيانات التتبُّع بطيئًا في البدء (I98841، b/329145808)
الإصدار 1.3.0-alpha03
17 أبريل 2024
تم إصدار androidx.benchmark:benchmark-*:1.3.0-alpha03
. يحتوي الإصدار 1.3.0-alpha03 على عمليات التنفيذ هذه.
الميزات الجديدة
- تتم إضافة واجهات برمجة تطبيقات
PerfettoTraceProcessor.Session.queryMetrics
العامة لواجهة برمجة التطبيقات مع صيغ JSON وtextproto وProto الثنائية (التي لم يتم فك ترميزها). يتيح لك ذلك طلب البحث عن المقاييس المضمّنة في TraceProcessor (I54d7f وb/304038382). - تمت إضافة
profilerOutput
إلى إخراج JSON لتسهيل استخدام الأدوات في تتبُّع عمليات التحليل (مثل perfetto وتتبُّع الأساليب). (I05ddd، b/332604449) - تمت إضافة علامة الطاقة إلى إعدادات Perfetto لقياس الأداء. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
- تمت إضافة وسيطة التثبيت
androidx.benchmark.profiling.skipWhenDurationRisksAnr
، ويمكن ضبطها على "خطأ" لتجنُّب تخطّي عمليات تتبُّع الطُرق عندما قد تتسبب المدة المتوقّعة في حدوث خطأ ANR. ويُنصح بشدة بتجنُّب هذا الخطأ أثناء عمليات تشغيل ميزة CI. - تمت إضافة وسيطة التثبيت التجريبية
androidx.benchmark.profiling.perfCompare.enable
، واضبط هذه القيمة على "صحيح" لتنفيذ توقيت المقارنة بين مرحلتي القياس ووضع الملفات الشخصية. ويكون هذا مفيدًا، على سبيل المثال في تقييم النفقات العامة لتتبُّع الأساليب. (I61fb4، وb/329146942)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
TraceSectionMetric.Mode
إلى فئة مختومة لتفعيل التوسيع في المستقبل بدون إيقاف عبارات when الشاملة (I71f7b) - تمت إضافة
TraceSectionMetric.Mode.Average
و.Count
، وتمت إعادة ترتيب الوسيطات بحيث تكون الوسيطة الأكثر شيوعًا (الوضع) في وقت سابق من قائمة الوسيطات، ما قلّل من الحاجة إلى تحديد أسماء المَعلمات. (Ibf0b0، b/315830077، b/322167531) - تمت إعادة تسمية
Metric.getResult
إلىgetMeasurements
لمطابقة نوع الإرجاع (I42595).
إصلاح الأخطاء
- عليك حل المشكلة للتأكُّد من أنّ مقاييس الأداء تستخدم الملفات الشخصية المرجعية التي تم إنشاؤها عندما تكون السمة
automaticGenerationDuringBuild
غير مفعَّلة (Ic144f، b/333024280) - يجب إصلاح عمليات إلغاء سمات "مكوّن إضافي لـ Gradle" في
BaselineProfile
لتفعيل إنشاء الملف الشخصي الأساسي وإجراء قياس الأداء عند تخصيص نوع الإصدارnonMinified
أو قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تفريغ عمليات تتبُّع الطرق في اختبار الأداء على مستوى التطبيق، بحيث يتم تسجيل عمليات تتبُّع الطرق بالكامل وتكون صالحة، حتى على الأجهزة البطيئة. (I6349a، b/329904950)
- فعِّل ميزة حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر عدم توفّر البيانات في بداية التتبُّع. متوافقة فقط مع واجهة برمجة التطبيقات 33 والإصدارات الأحدث (Ie6e41 وb/310760059)
- تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON الناتجة لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
- فرض استخدام علامة الفاصلة (,) كفاصل للآلاف لضمان اتساق المحتوى في "استوديو 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 في اختبار microbench من خلال قواعد Proguard المضمّنة يُرجى العلم أنّ هذا الإجراء تجريبي، ويتطلب استخدام AGP 8.3 لتصغير اختبارات وحدات المكتبة. يمكنك استخدام ما يلي لتفعيل تصغير/تحسين R8 في
build.gradle
لوحدة قياس الأداء، ما من المفترض أن يؤدي إلى زيادة كبيرة في الأداء، استنادًا إلى عبء العمل. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
إصلاح الأخطاء
- إصلاح تحذير تتبُّع الطريقة ليكون في سطر منفصل عن إخراج microbench (I0455c، b/328308833)
الإصدار 1.3.0-alpha01
21 شباط (فبراير) 2024
تم إصدار androidx.benchmark:benchmark-*:1.3.0-alpha01
. يحتوي الإصدار 1.3.0-alpha01 على هذه المراجعات.
التغييرات في واجهة برمجة التطبيقات
- تمت إعادة تسمية مَعلمات
MicrobenchmarkConfig
المنطقية لتجنُّب استخدام كلمة "يجب" (Ia8f00، وb/303387299). - تمت إضافة
BenchmarkRule.measureRepeatedOnMainThread
حتى تتمكّن مقاييس الأداء لسلسلة المحادثات الرئيسية (مثل المقاييس التي تتعامل مع واجهة مستخدم "عرض" أو "إنشاء") من تجنُّب ظهور أخطاء ANR، خاصةً أثناء مجموعات الاختبار الكبيرة في عملية التطوير المتكامل (CI). (I5c86d) - تمت إضافة
FrameTimingGfxInfoMetric
، وهو تنفيذ بديل تجريبي لـFrameTimingMetric
مع قياسات تأتي مباشرةً من المنصة، بدلاً من استخراجها من عملية تتبُّع Perfetto. (I457cb، b/322232828) - يمكنك إضافة إمكانية تفريغ ملف شخصي ART أثناء تكرارات
warmUp
الفردية. (I17923) - عدّة تغييرات على واجهة برمجة التطبيقات
TraceSectionMetric
:- إضافة
Mode.Min
،Mode.Max
- إضافة وسيطة التصنيف لإلغاء اسم القسم بصفته تصنيف المقياس
- تمت إضافة اسم الوضع إلى الإخراج لتوضيح معنى المقياس
- تم تغيير الإعداد التلقائي إلى sum، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة عليك الانتباه إلى هذه التغييرات في استخدام مؤشرات الأداء الرئيسية، لأنّها قد تؤدي إلى حدوث انقطاعات أو إيقاف التحليل. (Ic1e82، وb/301892382، وb/301955938)
- إضافة
إصلاح الأخطاء
- تم تحسين رسالة الخطأ في المكوّن الإضافي gradle لملف الإصدار الأساسي عندما لا يتوفّر الجهاز المُدار المحدّد (Idea2b، b/313803289)
- إصلاح لتضمين الملفات الشخصية الأساسية للمكتبة في حِزم AAR قبل الإصدار AGP 8.3.0-alpha15 (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 من أداة تثبيت الملف الشخصي حتى الآن.-
androidx.benchmark.dropShaders.throwOnFailure=true/false
: يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
- تخطّي تتبُّع الطريقة في سلسلة مهام واجهة المستخدم عندما يكون من المتوقّع أن يستغرق ذلك وقتًا أطول من بضع ثوانٍ، وتتبُّع طريقة التنظيف عند طرح الأخطاء (I6e768)
- يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)
- إصلاح مشكلة تؤدي إلى إقران الإطارات غير المنتهية في بداية التتبُّع ونهايته معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح كإطار واحد طويل جدًا (I39353، b/322232828)
- استخدِم
--skip verification
على الإصدار 30 من "واجهة برمجة التطبيقات" والإصدارات الأحدث عند إعادة تثبيت حزمة على الإصدار 30 إلى 33 من "واجهة برمجة التطبيقات" لمحو ملفات ART الشخصية على إصدارات المستخدمين. ويساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تؤدي إلى أعطال في بعض فئات الأجهزة. (Ic9e36) - استخدِم
am force-stop
لإغلاق التطبيقات التي لا تُعدّ تطبيقات نظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. (I5e028) - ينتظر "اختبار الأداء على مستوى النظام" الآن
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 على عمليات الربط هذه.
إصلاح الأخطاء
- تمّت إزالة الاستثناء من المكوّن الإضافي لملف Baseline Profile Gradle عندما يكون إصدار AGP هو 8.3.0 أو إصدار أحدث.
- تم إصلاح مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في حزمة AAR قبل الإصدار AGP 8.3.0-alpha15.
الإصدار 1.2.2
1 كانون الأول (ديسمبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.2
. يحتوي الإصدار 1.2.2 على عمليات الربط هذه.
الملفات الشخصية للمرجع
- ستعرض سجلات التنفيذ مسار ملف الإخراج الخاص بالملف الشخصي الأساسي على أنّه معرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).
الإصدار 1.2.1
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.1
. يحتوي الإصدار 1.2.1 على عمليات الربط هذه.
الميزات الجديدة
- تم تحسين رسالة الخطأ عندما يوقف المستخدم خيارات الاختبار (b/307478189).
- إضافة مواقع تتيح دمج عمليات الاختبار في AS (b/309805233)، (b/309116324)
الإصدار 1.2.0
18 تشرين الأول (أكتوبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0
. يحتوي الإصدار 1.2.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.1.0
الملفات الشخصية للمرجع
- يعمل مكوّن Gradle الإضافي الجديد لملف القاعدة على أتمتة عملية تسجيل ملفات القاعدة الأساسية وتضمينها في سير عمل الاختبار والإنشاء.
BaselineProfileRule.collect
أصبحت الآن مستقرة، وهي إصدار مبسّط ومُحسَّن من واجهة برمجة التطبيقات التجريبية السابقةBaselineProfileRule.collectBaselineProfile
- ما عليك سوى تحديد
packageName
وزيادة عدد عمليات تنزيل تطبيقك.
- ما عليك سوى تحديد
- بالنسبة إلى المكتبات التي تنشئ الملفات الشخصية الأساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز البرمجي (الوسيطة
BaselineProfileRule.collect
) أو بشكل أبسط في المكوّن الإضافي gradle. - الإصلاحات
- تم إصلاح عملية جمع الملف الشخصي الأساسي على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث (Id1392، b/277645214)
Macrobenchmark
- التحويل البرمجي
- يُعيد مقياس أداء الماكرو الآن بشكل صحيح حالة التجميع لكل تجميع، ما يتطلب إعادة تثبيت حزمة APK قبل الإصدار Android 14، لذا يُنصح بشدة بقياس الأداء على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث إذا أردت الاحتفاظ بالحالة (مثل تسجيل دخول المستخدم) في ما يتم قياسه.
- يمكنك أيضًا التغلب على هذه المشكلة عن طريق التحكّم في تجميع التطبيقات بشكل منفصل، وتخطي التجميع باستخدام
CompilationMode.Ignore()
أو وسيطة الأدوات.
وسيطات قياس حالة التطبيق
- إتاحة وسيطة أداة
androidx.benchmark.dryRunMode.enable
، (متوفّرة حاليًا في مقياس الأداء المصغَّر) لعمليات التحقّق من الصحة بشكل أسرع (مثلاً عند إنشاء مقياس الأداء أو في الإرسال المسبق) - يتوفّر الدعم لتطبيقَي
androidx.benchmark.profiling.mode=StackSampling
وMethodTracing
. - تمت إضافة
androidx.benchmark.enabledRules
للسماح باختبارات قاعدة ملف الأداء الأساسي للفلترة أثناء التشغيل مقارنةً باختبارات قاعدة الأداء الإجمالي. - تمت إضافة الوسيطة
androidx.benchmark.perfettoSdkTracing.enable
لتفعيل التتبّع باستخدام tracing-perfetto، مثل تتبّع إعادة ابتكار الإنشاء. يُرجى العِلم بأنّه عند استخدام السياسة معStartupMode.COLD
، سيتأثر التوقيت بشكل كبير، حيث يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
- إتاحة وسيطة أداة
المتطلبات
- يتطلب تطبيق Macrobenchmark الآن استخدام الإصدار 1.3.0 من أداة
ProfileInstaller
أو إصدار أحدث في التطبيق المستهدَف، لتفعيل ميزة "التقاط الملف الشخصي" أو "إعادة ضبط الملف الشخصي" وميزة "محو ذاكرة التخزين المؤقت لبرنامج معالجة الرسومات".
- يتطلب تطبيق Macrobenchmark الآن استخدام الإصدار 1.3.0 من أداة
Metric APIs التجريبية الجديدة
- تمت إضافة
TraceSectionMetric
التجريبي، الذي يتيح استخراج توقيت بسيط من وحداتtrace("") {}
في تطبيقك، أو TraceMetric للاستفادة من إمكانات طلب البحث الكاملة في PerfettoTraceProcessor
. - تمت إضافة
PowerMetric
التجريبي لتسجيل معلومات استخدام الطاقة - تمت إضافة
MemoryCountersMetric
التجريبي لعدّ أخطاء الصفحة - تمت إضافة واجهة برمجة التطبيقات التجريبية
PerfettoTraceProcessor
، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
- تمت إضافة
الإصلاحات
- تم إصلاح الأعطال عند تثبيت الملفات الشخصية أو استخراجها من تطبيق تم تثبيته من حِزم APK متعددة (مثل حِزمة التطبيق).
- تم إصلاح
FrameTimingMetric
تجاهل اللقطات التي تتضمّن أرقام تعريف لقطات غير متّسقة (بشكل عام، اللقطات أثناء التموجات في الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث) (I747d2، b/279088460) - تم إصلاح أخطاء التحليل في عمليات التتبّع التي تزيد عن 64 ميغابايت (Ief831، b/269949822)
- توضيح الأخطاء التي تحدث عند عدم ضبط صورة نظام التشغيل للجهاز (خاصةً المحاكي) بشكل صحيح للتتبّع أو التجميع
- تخطّي عملية التحقّق من مستوى شحن البطارية للأجهزة التي لا تتضمّن بطارية (الدقة الصغيرة والكبيرة)
- تحسين إخراج الملفات، مع أخطاء أكثر وضوحًا للمجلدات الإخراجية غير الصالحة، وإعدادات تلقائية أكثر أمانًا
- تحسين ثبات
StartupMode.COLD
من خلال إزالة ذاكرة التخزين المؤقت للظلال باستمرار (يتم عرضها أيضًا من خلالMacrobenchmarkScope.dropShaderCache
) - تم إصلاح الإجراء الاحتياطي لميزة "وضع الاسترخاء" في
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 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مخرجات ملف الأداء لمنع إيقاف
BaselineProfile
نسخ ملفات المكوّنات الإضافية تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بحيث لا تظهر لمكوّن gradle الإضافي. (I8dbcc، b/303034735، b/296453339) - تم توضيح رسائل خطأ تحميل
tracing-perfetto
عند إدخال وحدة قياس أداء الماكرو في التطبيق المستهدف.
الإصدار 1.2.0-rc01
20 أيلول (سبتمبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- تم الآن تطبيق استثناء (مع تعليمات الانتصاف) عند تعذُّر إكمال تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في مقياس أداء. (I6c878، b/286228781)
- إصلاح تعطُّل OOM عند تحويل تتبع طريقة ART -> تنسيق perfetto (I106bd، b/296905344)
- (Macrobenchmark) تم توضيح تصنيف تتبُّع الطريقة عند ربطه في إخراج اختبار Studio، وتم إصلاح أسماء ملفات تتبُّع الطريقة لتكون فريدة على الجهاز أو المضيف، حتى لا يتم استبدالها عند تنفيذ أكثر من معيار أداء واحد. (I08e65، b/285912360)
- يضمن أنّ الجهاز في وضع التشغيل عند التقاط ملف تعريف أساسي. (I503fc)
الإصدار 1.2.0-beta05
30 آب (أغسطس) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-beta05
. يحتوي الإصدار 1.2.0-beta05 على هذه المراجعات.
الميزات الجديدة
- يتيح الآن المكوّن الإضافي Gradle لملف الإصدار الأساسي استخدام الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
الإصدار 1.2.0-beta04
23 آب (أغسطس) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-beta04
. يحتوي الإصدار 1.2.0-beta04 على عمليات التنفيذ هذه.
الميزات الجديدة
- يتيح المكوّن الإضافي Baseline Profiles Gradle الآن استخدام الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
إصلاح الأخطاء
- يمكنك إصلاح حالات تعذُّر كتابة الملفات أو نقلها أو استرجاعها (خاصةً تلك الواردة من الاختبارات المُستخدِمة للمَعلمات) من خلال تنظيف أسماء ملفات الإخراج بشكلٍ أكبر، وتجنُّب استخدام "=" و":" في أسماء ملفات الإخراج. (I759d8)
الإصدار 1.2.0-beta03
9 آب (أغسطس) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta03
. يحتوي الإصدار 1.2.0-beta03 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مَعلمة لفلترة
TraceSectionMetric
على الحزمة المستهدَفة فقط، وهي مفعَّلة تلقائيًا (Ia219b، b/292208786)
إصلاح الأخطاء
- تمت إعادة تسمية وسيطة أداة
fullTracing.enable
إلىperfettoSdkTracing.enable
لتحقيق الاتساق مع اسم العنصر والمراجع الأخرى. سيستمرfullTracing.enable
في العمل كخيار احتياطي. (I7cc00) - ستظهر الآن نقاط التتبّع الداخلية لمكتبة قياس الأداء (بما في ذلك تتبُّع حلقة/مرحلة قياس الأداء الصغير) في عارض تتبُّع نظام Studio، وستتم تجميعها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
- تمّت إزالة خطأ "لا يمكن إنشاء ملف شخصي" في اختبار الأداء على مستوى النظام على الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث، وتمّ تخطي التحقّق من إمكانية إنشاء ملف شخصي على الأجهزة المزوّدة بإذن الوصول إلى الجذر في وضعَي eng/userdebug. (I2abac، b/291722507)
- عند استخدام ميزة "تحسينات تنسيق Dex"، تُعتبر قواعد الملف الشخصي لبدء التشغيل الآن أيضًا قواعد الملف الشخصي الأساسية. (aosp/2684246، b/293889189)
الإصدار 1.2.0-beta02
26 تموز (يوليو) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-beta02
. يحتوي الإصدار 1.2.0-beta02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات تجريبية للمقاييس المخصّصة وإعدادات اختبار الأداء الصغير (مثل أداة تحليل الأداء وتتبُّع الأحداث). (I86101، b/291820856)
إصلاح الأخطاء
- الإبلاغ عن خطأ في macrobench عند ضبط إعدادات نظام التشغيل بشكلٍ غير صحيح للتتبّع، كما تم إصلاحه مؤخرًا في المحاكيات ARM64 لـ API 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 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح التحذيرات التي يتم إيقافها أحيانًا في مخرجات "مقاييس الأداء" في "استوديو YouTube"، وحلّ بديل للمسافات البيضاء البادئة من ناتج مقياس الأداء الذي لا تظهر في "استوديو YouTube" (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)
إصلاح الأخطاء
- إتاحة اختبارات الأداء على مستوى التطبيق لنظام التشغيل
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) - إتاحة تحليل عيّنات تسلسل استدعاء الدوال البرمجية في اختبارات الأداء على مستوى التطبيق باستخدام مَعلمتَي اختبار الأدوات
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 على هذه المراجعات.
الميزات الجديدة
- في الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث، لم تعُد أداة Macrobenchmark تعيد تثبيت التطبيقات المستهدَفة لإعادة ضبط حالة الترجمة، وذلك بفضل ميزة جديدة في النظام الأساسي. في السابق، كان من الضروري أن يكون لديك جهاز مزوّد بإذن الوصول إلى الجذر، أو أن تتعامل مع إزالة جميع حالات التطبيق (مثل تسجيل دخول المستخدم) قبل تنفيذ كل اختبار أداء. (I9b08c، b/249143766)
إصلاح الأخطاء
- يجب إصلاح الخطأ في
DryRunMode
لكي لا يتعطّل بعد الآن عندما يكون الملف الشخصي فارغًا بسبب تخطّي عملية التجميع. بدلاً من ذلك، يتم تنفيذ دورة واحدة واستخراج الملف الشخصي لضمان تسجيل بيانات. (I2f05d، b/266403227) - إصلاح تعطُّل
PowerMetric
عند التحقّق من توفّر إحصاءات الطاقة في مستويات واجهة برمجة التطبيقات القديمة (5faaf9، b/268253898)
الإصدار 1.2.0-alpha09
11 كانون الثاني (يناير) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha09
. يحتوي الإصدار 1.2.0-alpha09 على هذه المراجعات.
إصلاح الأخطاء
- تم تفعيل تمرير
None
إلى مَعلمة أداة القياسandroidx.benchmark.enabledRules
لإيقاف جميع عمليات إنشاء ملف الأداء الأساسي أو ملف الأداء المرجعي. (I3d7fd، b/258671856) - إصلاح عملية تسجيل
PerfettoTrace
في وحدات التطبيق (أي حِزم APK الاختبارية غير المزوّدة بأدوات فحص ذاتي) (I12cfc) - تم إصلاح ترتيب مَعلمات adb pull في الملف الشخصي الأساسي في إخراج Studio (I958d1، b/261781624)
- يتم الآن التعرّف على Arm emulator api 33 بشكل صحيح على أنّه كذلك عند محاولة تشغيل اختبار أداء برمجي على مستوى النظام، وسيتم طباعة التحذير بشكل صحيح. (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) - تحسين رسالة خطأ أداة تثبيت الملف الشخصي التي يتم طباعتها عندما تكون أداة تثبيت الملف الشخصي قديمة جدًا يطلب منك هذا الإجراء الآن تحديث إصدار أداة تثبيت الملفات الشخصية (1.2.1) لقياس الملفات الشخصية الأساسية على المستوى 31 من واجهة برمجة التطبيقات إلى المستوى 33، بدلاً من إبلاغك بأنّه غير متوافق. (Ia517f، b/253519888)
- إصلاح العديد من أخطاء أوامر واجهة الأوامر onerror message <=23
- ترتيب قواعد الملفات الشخصية التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات أثناء تغيُّرها بمرور الوقت (عند تسجيل قواعد الملفات الشخصية في أداة التحكّم في المصدر) (Ie2509)
- تم إصلاح الأعطال في الإصدارات غير المزوّدة بإذن الوصول إلى الجذر والإصدارات الأقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) التي تظهر فيها الرسالة
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245، b/259508183).
المشاكل المعروفة
- قد يتعطّل MacrobenchmarkScope.dropShaderCache()
بسبب عدم توفّر سجلّ البث في بيان أداة تثبيت الملف الشخصي، والذي لم يتم إصداره بعد. (I5c728، b/258619948) لحلّ المشكلة في profileinstaller:1.3.0-alpha02
، أضِف ما يلي إلى ملف 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
لقياس الطاقة في اختبارات الأداء الشاملة (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)
إصلاح الأخطاء
- تم تحسين أمان جميع أوامر واجهة الأوامر الداخلية من خلال التحقق من صحة جميع الإخراج/الأخطاء. (I5984d، b/255402908، b/253094958)
- تحديد الجهاز في ملف القاعدة
adb pull
، حتى يمكن نسخ الأمر pull بسهولة في حال ربط أجهزة متعددة (ما يصل إلى جهاز محاكاة واحد) I6ac6c، b/223359380) - إضافة خطأ إذا لم يتم إعداد حزمة apk لاختبار الأداء الإجمالي على أنّها أداة قياس أداء ذاتي يمنع هذا الخطأ قياس الأداء الكلي من داخل عملية التطبيق المستهدف. خلال هذه العملية، لن تتمكّن وحدة الماكرو من تجميع التطبيق أو إيقافه أو تشغيله على البارد أو التحكّم في أذوناته الخاصة (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
تتطلّب إذن الوصول إلى الجذر على الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات)، ولم تعُد تجريبية. (Ie0a7d، وb/250083467، وb/253094958)- يصحّح هذا التغيير أيضًا طريقة تفريغ الملفات الشخصية من أحد التطبيقات على القرص على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر، ولكنّه يتطلّب تحديث التبعية الخاصة بملف تثبيت الملفات الشخصية للتطبيق المستهدَف.
- لاستخدام
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 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مشكلة تقسيم اللقطات في أداة عرض عمليات تتبُّع النظام في "استوديو YouTube" للعمليات التي تم تسجيلها في اختبارات الأداء (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
في اختبارات الأداء على مستوى النظام (التي تتوفّر حاليًا في اختبارات الأداء على مستوى التطبيق) لتطوير التطبيقات بشكل أسرع على الجهاز، والتحقّق من صحة التشغيل الآلي للتطبيقات (مثلاً في مرحلة ما قبل الإرسال) يؤدي ذلك إلى إلغاء عمليات التكرار إلى 1، وتخطّي عملية الترجمة، وإيقاف جميع أخطاء الإعداد، وإيقاف إخراج ملف القياس بتنسيق .json. (Ib51b4، b/175149857)في سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
في build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
إصلاح الأخطاء
- تم إصلاح مشكلة في
StartupTimingMetric
لكي لا يتطلب إطلاق الأنشطة التي تم قياسها من خلالMacrobenchmarkScope.startActivityAndWait()
. وهذا يعني أنّ المقياس يمكنه رصد عمليات الإطلاق من الإشعارات أوContext.startActivity()
أو التنقّل المستنِد إلى النشاط داخل التطبيق أو أوامر shell. (Ia2de6، b/245414235) - إصلاح خطأ يؤدي إلى انتهاء مهلة
startActivityAndWait
أثناء محاولة انتظار اكتمال عملية الإطلاق على المحاكيات من خلال تقليل صرامة رصد اللقطات (Ibe2c6، b/244594339، b/228946895)
الإصدار 1.2.0-alpha03
7 أيلول (سبتمبر) 2022
تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha03
. يحتوي الإصدار 1.2.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة واجهات برمجة تطبيقات تجريبية لاستخدام
BenchmarkState
بشكل مستقل، ومنفصلة عنBenchmarkRule
/JUnit4
. (Id478f، b/228489614)
إصلاح الأخطاء
- تمت إضافة الإجراء الاحتياطي من Leanback لـ
startActivityAndWait
. (01ed77، b/242899915)
الإصدار 1.2.0-alpha02
24 آب (أغسطس) 2022
تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha02
. يحتوي الإصدار 1.2.0-alpha02 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- يتم ضبط السياسة تلقائيًا على
am force stop
لمدةMacrobenchmarkScope.killProcess()
حتى عند استخدام الجذر، إلا أثناء إنشاء الملف الشخصي الأساسي. يمكن إلغاء هذا باستخدام وسيطة منطقية اختيارية. (02cce9، b/241214097)
إصلاح الأخطاء
- إتاحة إنشاء ملف تعريف أساسي لتطبيقات النظام (I900b8، b/241214097)
- إتاحة التحقّق من مقاييس الطاقة في "إدارة الطاقة الذكية للأجهزة الجوّالة" على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر (a38c78، b/229623230)
الإصدار 1.2.0-alpha01
27 تموز (يوليو) 2022
تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha01
. يحتوي الإصدار 1.2.0-alpha01 على هذه المراجعات.
الميزات الجديدة
- مكوّن tracing-perfetto-common جديد يتيح للأدوات تفعيل تتبُّع حزمة تطوير البرامج (SDK) Perfetto في تطبيق يعرضها (I2cc7f)
تمت إضافة وسيطة أداة القياس
androidx.benchmark.enabledRules
لتفعيل فلترة عمليات تنفيذ اختبارات الأداء الشاملة على مقاييس الأداء فقط، أو إنشاء الملف الشخصي الأساسي فقط. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfiles
على المحاكي فقط. يمكن أيضًا استخدام القائمة المفصولة بفواصل. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
PowerMetric
جديدة لقياس مهام الطاقة والأداء في المقاييس. (I9f39b، b/220183779) - تمت إضافة وضع تجميع جديد
CompilationMode.Ignore
لتخطّي إعادة ضبط الملف الشخصي وتجميعه. (Ibbcf8، b/230453509) - تمت إضافة مَعلمة جديدة إلى
BaselineProfileRule#collectBaselineProfile
لفلترة ملف الإخراج حسب أسماء الحِزم (If7338 وb/220146561). - يتيح هذا الخيار للمطوّر تفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
- تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لظلال الألوان في
MacrobenchmarkScope
. (I32122) - يتيح للمطوّر ضبط عرض نوع المقياس وتفاصيل فئات الأنظمة الفرعية المطلوبة. (I810c9)
- في السابق، كان يتم طرح
UnsupportedOperationException
في الاختبار القياسي في حال تشغيله على جهاز غير متوافق. لا يحدث الآن خطأ UOE إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثلPowerMetric.configure
). (I5cf20، b/227229375) - تمت إضافة
TotalPowerMetric
وTotalEnergyMetric
لقياس إجمالي الطاقة في كل فئة من فئات النظام في اختبارات الأداء الشاملة. (I3b26b، b/224557371)
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر إعادة ضبط الطرق المجمّعة بشكل صحيح بين كل مقياس أداء ماكرو على الإصدارات غير الجذر. ويتطلب هذا للأسف إعادة تثبيت ملف apk في كل تكرار، ما سيؤدي إلى محو بيانات التطبيق لكل مقياس ماكرو. (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 قياس تفاعلات التطبيق بالكامل، مثل التشغيل والانتقال للأعلى أو للأسفل، كما يوفّر لك إمكانية تسجيل عمليات التتبّع وقياس أقسام التتبّع.
إتاحة الملفات الشخصية للمرجع
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)تحسين سرعة تكرار اختبارات الأداء على مستوى النظام من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023، b/231323582)
إتاحة استخدام أجهزة Gradle المُدارة عند إنشاء الملفات الشخصية الأساسية باستخدام اختبارات الأداء على مستوى النظام (aosp/2062228، b/228926421)
الإصدار 1.1.0-rc02
11 أيار (مايو) 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc02
. يحتوي الإصدار 1.1.0-rc02 على هذه المراجعات.
- يُرجى العلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، حيث تتم إعادة تثبيت التطبيقات بالكامل الآن بين كل معيار لضمان قياسات دقيقة.
إصلاح الأخطاء/تغييرات السلوك
تم إصلاح مشكلة عدم إعادة ضبط عملية تجميع التطبيق بشكل صحيح بين اختبارات الأداء الشاملة، وعدم إعادة ضبطها على الإطلاق في عمليات الإنشاء غير المزوّدة بإذن الوصول إلى الجذر. ويؤدي ذلك إلى حلّ العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationMode
في القياسات أو تأثيرها بشكل بسيط. لحل هذه المشكلة، يعمل التطبيق المستهدف الآن على إعادة تثبيت كل طريقة اختبار بشكل كامل، مما سيؤدي إلى محو بيانات التطبيق بين كل مقياس أداء مصغر. (I31c74، b/230665435)وبما أنّ هذا الإجراء يمنع التطبيقات من إعداد الحالة قبل الاختبارات، أصبح من الممكن الآن تخطّي عملية الترجمة / إعادة التثبيت للتعامل مع هذه المشكلة. على سبيل المثال، يمكنك تجميع الهدف بالكامل باستخدام أمر shell
cmd package compile -f -m speed <package>
، ثم تخطّي خطوة التجميع في أداة قياس الأداء على مستوى النظام.على سبيل المثال، في ملف create.gradle لمعيار الماكرو الخاص بك:
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 الخاص باختبار الأداء على مستوى التطبيق:
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)
- إصلاح مقاييس بدء التشغيل لمقاييس الأداء القصوى عند استخدام
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) - تم إصلاح مشكلة تعذُّر جمع مقاييس بدء التشغيل في اختبارات الأداء على مستوى النظام عند استخدام
StartupMode.COLD
. (aosp/2012227 b/218668335)
الإصدار 1.1.0-beta04
23 شباط (فبراير) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-beta04
. يحتوي الإصدار 1.1.0-beta04 على هذه المراجعات.
إصلاح الأخطاء
إصلاح عدم توفّر المقاييس على نظام التشغيل Android 10 و
NoSuchElementException
الناتج عن عدم تسجيل أسماء العمليات بشكلٍ صحيح في عمليات التتبّع (Ib4c17، b/218668335)استخدِم
PowerManager
لرصد الحدّ من الأداء بسبب الحرارة على الإصدار Q (واجهة برمجة التطبيقات 29) والإصدارات الأحدث. ويؤدي ذلك إلى تقليل معدّل الظهور المتكرّر للنتائج الخاطئة في عملية رصد الحدّ الأقصى للطاقة الحرارية (إعادة إجراء الاختبار بعد فترة انتظار تبلغ 90 ثانية)، ويسرع الاختبارات بشكل كبير على الإصدارات التي ينشئها المستخدمون. ويرصد هذا الإجراء أيضًا عمليات التباطؤ حتى عندما تكون الساعات مقفَلة (إذا كانت مقفلة على قيمة عالية جدًا مقارنةً بالبيئة المكانية للجهاز). (I9c027، وb/217497678، وb/131755853)فلترة التحليل المستند إلى عيّنات simpleperf إلى سلسلة مهام
measureRepeated
فقط لتبسيط عملية الفحص (Ic3e12، b/217501939)توفير المقاييس من العمليات الفرعية لواجهة المستخدم المُعنونة في التطبيقات المتعددة العمليات (Ice6c0 وb/215988434)
فلتِر قواعد الملف الشخصي الأساسي لاستهداف Android 9 (حزمة تطوير البرامج 28). aosp/1980331 b/216508418
تخطّي تثبيت الملف الشخصي عند استخدام
Compilation.None()
بالإضافة إلى ذلك، يمكنك الإبلاغ عن التحذيرات عندما يستخدم التطبيق إصدارًا قديمًا منandroidx.profileinstaller
ومكوّن Gradle المتوافق مع Android. aosp/1977029
الإصدار 1.1.0-beta03
9 شباط (فبراير) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-beta03
. يحتوي الإصدار 1.1.0-beta03 على هذه الالتزامات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
AudioUnderrunMetric
إلى مكتبة اختبارات الأداء الشاملة ضمن علامة تجريبية للسماح برصد حالات تأخُّر تشغيل الصوت (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() // ... } ) }
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر تعديل عمليات تتبُّع أداة تحليل الأداء في اختبارات الأداء الصغيرة في عمليات التشغيل اللاحقة عند ربطها في مخرجات "استوديو YouTube" (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 على عمليات التنفيذ هذه.
إصلاح الأخطاء
- أصبحت نتائج ملف تعريف تحليل أداء وحدات البطاقة الصغيرة / تتبُّع طريقة القياس مرتبطة الآن في نتائج "استوديو تطوير البرامج"، تمامًا مثل نتائج ملفّات الأداء الأخرى، ولا يتم إخفاء قياس التوزيع. (Idcb65 وb/214440748 وb/214253245)
- تُطبع BaselineProfileRule الآن الأمر
adb pull
في logcat ومخرجات Studio لسحب ملف BaselineProfile النصي الذي تم إنشاؤه. (f08811)
الإصدار 1.1.0-beta01
12 كانون الثاني (يناير) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-beta01
. يحتوي الإصدار 1.1.0-beta01 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح تجاهل تفعيل مَعلمة أداة تحليل الأداء (I37373، b/210619998)
- تمت إزالة
CompliationModes
المتوقّفة نهائيًا (I98186، b/213467659) - تم تبديل مَعلمة الملف الشخصي الأساسي لـ
CompilationMode.Partial
إلى enum لتوضيح ذلك. (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 تقريبًا من خلال التبديل إلى تنسيق تخزين مخطّط مكثّف. (Id5fb6، b/199324831)
- عمليات تنفيذ محدَّثة لمقاييس بدء التشغيل وتنتهي دائمًا في نهاية سلسلة العرض وسيكون ذلك أكثر اتساقًا على مستوى إصدارات منصّة الإعلانات، وسيرتبط بشكلٍ أوثق بالقياسات داخل التطبيق. (Ic6b55)
الإصدار 1.1.0-alpha11
3 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha11
. يحتوي الإصدار 1.1.0-alpha11 على هذه عمليات التنفيذ.
تغييرات واجهة برمجة التطبيقات
- أصبح مقياس الأداء الماكرو الآن
minSdkVersion
من23
. (If2655) - إضافة
BaselineProfileRule
تجريبي جديد يمكنه إنشاء ملفات أساسية لرحلة المستخدِم المهمة في التطبيق ستتوفّر مستندات تفصيلية لاحقًا. (Ibbefa، b/203692160) - تتم إزالة متغير واجهة Metrics المتكررة الذي تمت إضافته للمتصلين في JavaScript، حيث تسبب في غموض في إكمال/حل الطريقة. سيحتاج مُتصلو 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)
- توفير دالة MirrorBenchmarkRule.measure السابقة البديلة التي تستخدم
Consumer<MacrobenchmarkScope>
للاستخدام الاصطلاحي بلغة Java (If74ab، b/184546459)
إصلاح الأخطاء
- حلّ مشكلة عدم بدء عمليات التتبّع مبكرًا بما يكفي وعدم توفّر بيانات المقاييس من المتوقّع أن يؤدي ذلك إلى حلّ استثناءات "تعذّر قراءة أيّ مقاييس أثناء الاختبار القياسي" التي تسبّبت فيها المكتبة نفسها. (I6dfcb، b/193827052، b/200302931)
- تمت إعادة تسمية FrameNegativeSlack إلى FrameOverrun لتوضيح معناها، أي مقدار تجاوز اللقطة لميزانيتها الزمنية. (I6c2aa، b/203008701)
الإصدار 1.1.0-alpha09
13 تشرين الأول (أكتوبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha09
. يحتوي الإصدار 1.1.0-alpha09 على هذه المراجعات.
إصلاح الأخطاء
- إتاحة إزالة ذاكرة التخزين المؤقت لصفحة Kernel بدون إذن الوصول إلى الجذر على واجهة برمجة التطبيقات 31/S والإصدارات الأحدث، ما سيزيد من دقة عمليات بدء StartupMode.COLD (Iecfdb، b/200160030)
الإصدار 1.1.0-alpha08
29 أيلول (سبتمبر) 2021
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha08
. يحتوي الإصدار 1.1.0-alpha08 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- فعِّل مقاييس ماكرو التمرير للرجوع إلى واجهة برمجة التطبيقات 23 (If39c2، وb/183129298)
- إضافة نوع جديد من المقاييس المستندة إلى عيّنات إلى واجهة المستخدم وإخراج JSON، مع التركيز على النِسب المئوية للعيّنات المتعدّدة لكلّ تكرار (I56247، b/199940612)
- التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو YouTube") (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
لتسهيل تشغيل التطبيقات التي تستخدم الملفات الشخصية الأساسية لمقاييس الأداء القصوى باستخدام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 ثوانٍ تقريبًا، مقابل إيقاف استخدام intent parcelables. (I5a6f5، b/192009149
إصلاح الأخطاء
- يمكنك تقليل سرعة رصد عمليات الحدّ من السرعة بسبب الحرارة، و إعادة احتساب قاعدة البيانات الأساسية إذا تم رصد عمليات الحدّ من السرعة بشكل متكرر. (I7327b)
- إصلاح FrameTimingMetric للعمل على الإصدار التجريبي من Android S (Ib60cc وb/193260119)
- استخدِم
EmptyActivity
لإزالة التطبيق المستهدَف من حالة الإيقاف النهائي من أجل إتاحة استخدامCompilationMode.BaselineProfile
بشكل أفضل. (Id7cac، b/192084204) - تم تغيير امتداد ملف التتبُّع إلى
.perfetto-trace
لمطابقة معيار المنصة. (I4c236، b/174663039) - تُخرج StartupTimingMetric الآن مقياس "fullDrawnMs" لقياس الوقت حتى يكتمل العرض في تطبيقك. لتحديد هذا المقياس لتطبيقك، يمكنك الاتصال بـ Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، كأن يتم مثلاً تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات التحقّق من إصدار الإصدار على ComponentActivity). يُرجى العلم أنّه يجب تنفيذ الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر startActivityAndWait لإجراء reportFullyDrawn). (If1141، b/179176560)
- تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم في عمليات التتبُّع بمقدار 50 ملي ثانية (Ic8390، وb/193923003)
- زيادة كبيرة في معدّل الاستطلاع عند إيقاف التتبّع، ما قد يؤدي إلى تقليل وقت تشغيل مقياس الأداء لبدء التشغيل بنسبة تزيد عن %30 (Idfbc1، b/193723768)
الإصدار 1.1.0-alpha03
16 حزيران (يونيو) 2021
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha03
. يحتوي الإصدار 1.1.0-alpha03 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة
CompilationMode.BaselineProfile
جديد للتوافق مع الملفات الشخصية المثبَّتة باستخدام مكتبة Jetpack ProfileInstaller. (aosp/1720930)
إصلاح الأخطاء
تم تعديل نموذج رمز Gradle لإيقاف أخطاء معايير الأداء لاستخدام واجهة برمجة تطبيقات غير متوقّفة نهائيًا مع بنية نحوية تتيح أيضًا لمستخدمي .gradle.kts استخدامها.
مثال:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
الإصدار 1.1.0-alpha02
18 أيار (مايو) 2021
يقدّم الإصدار 1.1.0-alpha02 من Benchmark مكوّنًا كبيرًا لقياس الأداء، وهو Macrobenchmark. بالإضافة إلى أنّ مقاييس الأداء تسمح لك بقياس عمليات تكرار وحدة المعالجة المركزية، تتيح لك مقاييس الأداء الشاملة قياس التفاعلات في التطبيق بالكامل، مثل بدء التشغيل والانتقال للأعلى أو للأسفل، وتسجيل عمليات التتبّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.
الميزات الجديدة
تمّت إضافة عناصر اختبارات الأداء على مستوى النظام (androidx.benchmark:benchmark-macro-junit4
وandroidx.benchmark:benchmark-macro
).
- تسجيل مقاييس أداء بدء التشغيل أو الانتقال إلى الأسفل/الحركة من تطبيقك، محليًا أو في عملية التطوير المتكامل (CI)
- تسجيل عمليات التتبّع وفحصها من داخل Android Studio
إصلاح الأخطاء
- حلّ مشكلة أذونات واجهة أوامر الغلاف في دليل الإخراج على نظام التشغيل Android 12 (ملاحظة: قد يتطلب ذلك تحديث مكوّن Gradle الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 7.0.0 Canary وAndroid Studio إلى Arctic Fox (2020.3.1)، لمواصلة التقاط ملفات النتائج على الأجهزة المتأثرة). (Icb039)
- إتاحة التخزين المؤقت للإعدادات في BenchmarkPlugin (6be1c1، b/159804788)
- إخراج الملفات المبسّط: مفعَّل تلقائيًا في دليل لا يتطلّب
requestLegacyExternalStorage=true
(8b5a4d، b/172376362) - إصلاحات في المكتبة تؤدي إلى طباعة تحذيرات logcat بشأن عدم العثور على سلسلت JVM المبرمَجة (JIT) في إصدارات النظام الأساسي التي لا تتوفّر فيها (I9cc63، b/161847393)
- إصلاح الحد الأقصى لعدد مرات قراءة البيانات على الجهاز (I55c7a)
الإصدار 1.1.0-alpha01
10 حزيران (يونيو) 2020
تم إصدار androidx.benchmark:benchmark-common:1.1.0-alpha01
وandroidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
وandroidx.benchmark:benchmark-junit4:1.1.0-alpha01
. يحتوي الإصدار 1.1.0-alpha01 على هذه المراجعات.
الميزات الجديدة في الإصدار 1.1
- مقياس التوزيع: تُجري المقاييس الآن مرحلة إضافية بعد فترة التحضير والتوقيت، ما يؤدي إلى تسجيل أعداد عمليات التوزيع. يمكن أن تتسبب عمليات التوزيع في حدوث مشاكل في الأداء على الإصدارات القديمة من المنصة (أصبح الوقت المستغرَق 140ns في الإصدار O هو 8ns في الإصدار M، تم قياسه على جهاز Nexus5X، مع قفل الساعات). يتم عرض هذا المقياس في إخراج وحدة تحكّم "استوديو Android"، بالإضافة إلى
- إتاحة ميزة "التحليل التفصيلي": يمكنك الآن تسجيل بيانات التحليل التفصيلي لإجراء اختبار أداء، وذلك لفحص سبب بطء تشغيل الرمز البرمجي. يدعم مقياس الأداء تسجيل تتبع الطريقة أو أخذ عينات الطرق من ART. يمكن فحص هذه الملفات باستخدام أداة تحليل الأداء داخل "استوديو Android" باستخدام ملف > فتح.
- يوفّر المكوّن الإضافي Reference Gradle الآن الإعدادات التلقائية لعملية إعداد أسهل:
- يتم ضبط
testBuildType
على الإصدار تلقائيًا لتجنُّب استخدام التبعيات التي تتضمّن تغطية الرمز البرمجي. يتم أيضًا ضبط buildType للإصدار على أنّه buildType التلقائي، ما يسمح لـ Android Studio باختيار الصيغة الصحيحة للإصدار تلقائيًا عند فتح مشروع للمرة الأولى. (b/138808399) - يتم استخدام
signingConfig.debug
كإعداد تلقائي للتوقيع (b/153583269).
- يتم ضبط
** إصلاح الأخطاء **
- تمّ تقليل الوقت غير الضروري الذي يستغرقه الانتقال إلى وضع التشغيل العادي بشكلٍ كبير، حيث كان القياس الأول لكلّ مقياس أعلى بشكلٍ مصطنع من غيره. كانت هذه المشكلة أكثر وضوحًا في مقاييس أداء صغيرة جدًا (1 ميكرو ثانية أو أقل). (b/142058671)
- تم إصلاح خطأ
InstrumentationResultParser
الذي يتم طباعته لكلّ معيار أداء عند التشغيل من سطر الأوامر. (I64988، b/154248456)
المشاكل المعروفة
- لا تطبع سطر الأوامر أو استدعاءات Gradle لمقياس الأداء النتائج مباشرة. يمكنك حلّ هذه المشكلة إما من خلال تشغيلها من خلال "استوديو YouTube" أو تحليل ملف JSON الناتج للحصول على النتائج.
- يتعذّر على ميزة "إعداد معايير الأداء" سحب التقرير من الأجهزة التي تم تثبيت تطبيق عليها باستخدام معرّف تطبيق ينتهي بـ "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 Studio أو في عملية الدمج المستمر لمراقبة أداء الرمز البرمجي بمرور الوقت ومنع حدوث تراجعات.
تشمل الميزات الرئيسية ما يلي:
- تثبيت الساعة
- تحديد الأولوية تلقائيًا لسلاسل المحادثات
- إتاحة اختبار أداء واجهة المستخدم، مثل نموذج 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 في المكوّن الإضافي لنظام Gradle المتوافق مع Android 3.5 و3.6
الإصدار 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" لمعرفة الحالات التي سيتولى فيها "مكوّن Android Gradle" نسخ البيانات. - إصلاح عدم رصد معدّل تكرار الساعة في ملف JSON لطباعة
-1
بشكل صحيح (b/141945670)
الإصدار 1.0.0-alpha06
18 أيلول (سبتمبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-alpha06
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
وandroidx.benchmark:benchmark-junit4:1.0.0-alpha06
. يحتوي الإصدار 1.0.0-alpha06 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة عملية تحقّق من استخدام الحزمة القديمة لبرنامج تشغيل الاختبار بشكل غير صحيح، ما يؤدي الآن إلى عرض رسالة خطأ أكثر فائدة.
تغييرات واجهة برمجة التطبيقات
- أصبح التعليق التوضيحي التجريبي
ExperimentalAnnotationReport
متاحًا للجميع بشكل صحيح. يتطلب استخدام واجهة برمجة التطبيقات التجريبية BenchmarkState#report الآن هذا التعليق التوضيحي.
الإصدار 1.0.0-alpha05
5 أيلول (سبتمبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-alpha05
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
وandroidx.benchmark:benchmark-junit4:1.0.0-alpha05
. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تم وضع علامة "تجريبية" على واجهة برمجة التطبيقات
BenchmarkState.reportData
إصلاح الأخطاء
- عليك حل المشكلة المتعلّقة بالنص البرمجي لقفل الساعة الذي يتعذّر تفعيله على الأجهزة التي لم تتوفّر فيها برامج الأدوات المساعدة
cut
أوexpr
. - تم إصلاح مشكلة في مهمة
./gradlew lockClocks
التي كانت تتعطل على الأجهزة التي تم الوصول إلى الجذر فيها باستخدام إصدار قديم من الأداة su، والذي لم يكن متوافقًا مع العلامة-c
.
الإصدار 1.0.0-alpha04
7 آب (أغسطس) 2019
تم طرح الإصدارات androidx.benchmark:benchmark-common:1.0.0-alpha04
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
وandroidx.benchmark:benchmark-junit4:1.0.0-alpha04
. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.
تمت أيضًا إضافة مستندات جديدة حول كيفية استخدام مكتبة Benchmark بدون Gradle، وذلك لاستخدامها مع أنظمة إنشاء مختلفة (مثل Bazel أو Buck) وعند تشغيلها في عملية التطوير المتكامل (CI). لمزيد من المعلومات، اطّلِع على مقالتَي إنشاء مقاييس الأداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المستمر.
الميزات الجديدة
- مكوّن Gradle الإضافي
- يتم الآن إيقاف تغطية الاختبار تلقائيًا وضبط
AndroidBenchmarkRunner
تلقائيًا (b/138374050). - تمت إضافة الدعم لنسخة جديدة من البيانات تستند إلى 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 API - سيسمح هذا التقسيم للمكتبة بتوفير ميزة قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
- تحتوي حزمة
- يتم الآن التعامل مع تحذيرات الإعداد على أنّها أخطاء، وستؤدي إلى إيقاف الاختبار (b/137653596).
- ويتم ذلك لزيادة التشجيع على إجراء قياسات دقيقة، خاصةً في عملية التطوير المتكامل.
- يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام مَعلمة أداة القياس. على سبيل المثال:
-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
. تتوفّر التعهدات المضمَّنة في هذا الإصدار
هنا.