مقياس الأداء

يمكنك قياس أداء الرمز البرمجي بدقّة في "استوديو Android".
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
10 يوليو 2024 1.2.4 - 1.3.0-beta02 -

إعلان التبعيات

لإضافة تبعية على مقياس الأداء، يجب إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.

مقياس الأداء الكلي

لاستخدام معيار ماكرو في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle لوحدة قياس الأداء الماكرو:

رائع

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.4"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.2.4")
}

مقياس مصغّر

لاستخدام Microbenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle الخاصة بوحدة قياس الأداء المصغَّرة:

رائع

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.2.4"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.2.4")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

توفّر مكتبة مقاييس الأداء المصغّرة أيضًا مكوّنًا إضافيًا من Gradle لاستخدامه مع وحدة قياس الأداء المصغّرة. يحدّد هذا المكوّن الإضافي الإعدادات التلقائية لإعدادات الإصدار للوحدة، ويضبط نسخة المخرجات المرجعية للمضيف، ويوفّر مهمة ./gradlew lockClocks.

لاستخدام المكوّن الإضافي، عليك تضمين السطر التالي في مجموعة "المكوّنات الإضافية" في ملف build.gradle ذي المستوى الأعلى:

رائع

plugins {
  id 'androidx.benchmark' version '1.2.4' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.2.4" apply false
}

طبِّق بعد ذلك المكوّن الإضافي على ملف build.gradle الخاص بوحدة قياس الأداء.

رائع

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. أخبرنا إذا اكتشفت مشكلات جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء عدد جديد

راجِع مستندات "أداة تتبُّع المشاكل" للحصول على مزيد من المعلومات.

الإصدار 1.3

الإصدار 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 - إصدار صحيح من وحدة الخط الرئيسي للفنون (إذا كانت متوفّرة على الجهاز، -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)
  • غيِّر وحدة الماكرو->التبعية الشائعة لتكون 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 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • تقديم استثناء أوضح عندما يعرض مقياس ماكروبنش قيمًا صفرية لجميع التكرارات (Iab58f وb/314931695)
  • قواعد إضافية للحلول البديلة تمت إضافتها إلى قواعد الحماية من الميكروبات، بما في ذلك التوافق مع قواعد المستمعين وغيرها من التحذيرات أو الأخطاء المرصودة. (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 Measurement. يؤدي هذا الإجراء إلى تسجيل نقاط تتبُّع التنشيط على سبيل المثال. (Icfe44، b/286551983)
  • تمت إضافة وسيطة التثبيت androidx.benchmark.profiling.skipWhenDurationRisksAnr، ويمكن ضبطها على "خطأ" لتجنُّب تخطّي عمليات تتبُّع الطُرق عندما قد تتسبب المدة المتوقّعة في حدوث خطأ ANR. ويُنصح بشدة بتجنُّب هذا الخطأ أثناء عمليات تشغيل ميزة CI.
  • تمت إضافة وسيطة التثبيت التجريبية androidx.benchmark.profiling.perfCompare.enable، واضبط هذه القيمة على "صحيح" لتنفيذ توقيت المقارنة بين مرحلتي القياس ووضع الملفات الشخصية. ويكون هذا مفيدًا، على سبيل المثال في تقييم النفقات العامة لتتبُّع الأساليب. (I61fb4، وb/329146942)

التغييرات في واجهة برمجة التطبيقات

  • تم تغيير TraceSectionMetric.Mode إلى فئة مختومة لتفعيل التوسيع المستقبلي بدون تعطُّل كل العبارات عند استخدام العبارات (I71f7b).
  • تمت إضافة TraceSectionMetric.Mode.Average و.Count وإعادة ترتيب الوسيطات لكي تكون الوسيطة الأكثر شيوعًا (mode) في وقت سابق في قائمة الوسيطات، ما يقلل الحاجة إلى تحديد أسماء المعلّمات. (Ibf0b0، b/315830077، b/322167531)
  • تمت إعادة تسمية "Metric.getResult" إلى "getMeasurements" لمطابقة نوع الإرجاع (I42595).

إصلاح الأخطاء

  • عليك حل المشكلة للتأكُّد من أنّ مقاييس الأداء تستخدم الملفات الشخصية المرجعية التي تم إنشاؤها عندما تكون السمة automaticGenerationDuringBuild غير مفعَّلة (Ic144f، b/333024280)
  • إصلاح عمليات إلغاء خاصية المكوّن الإضافي BaselineProfile لمكوّن Gradle من أجل تفعيل إنشاء الملفات الشخصية المرجعية وقياس الأداء عند تخصيص نوع الإصدار nonMinified أو مقياس الأداء (Ib8f05، b/324837887)
  • تعمل الطريقة الثابتة على تتبُّعها في مقاييس الأداء القصوى، وبالتالي يجب تسجيل عمليات تتبُّع الطريقة بالكامل وصلاحيتها، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
  • يمكنك تفعيل حظر البداية في سجلّ تتبُّع Perfetto لتقليل خطر فقدان البيانات في بداية التتبُّع. متوافقة فقط مع واجهة برمجة التطبيقات 33 والإصدارات الأحدث (Ie6e41 وb/310760059)
  • تمت إضافة تحذير عند استخدام Android Test Orchestrator في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON للمخرجات لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
  • فرض ',' (فاصلة) فواصل الآلاف لتحقيق الاتساق في إخراج "استوديو YouTube"، مع تجاهل لغة الجهاز (I3e921, b/313496656)
  • يمكن الآن استخدام الشرائح التي تم إنشاؤها باستخدام Trace.{begin|end}AsyncSection في تطبيق TraceSectionMetric. (I91b32، b/300434906)
  • تمت إضافة Log.w / تصنيفات الاستثناء إلى جميع حالات تعذُّر رصد بدء التشغيل. وهذا لا يغير السلوك الحالي (حيث تظهر بعض الأخطاء ويفشل البعض الآخر تلقائيًا في اكتشاف الشركة الناشئة)، بل يجعل الأمر أكثر وضوحًا. وبشكل عام، تكون تلك الأخطاء ال��ي لا تعمل في Log.w() وتتعذّر الإبلاغ عن مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا بدون إطار، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت عرض اللقطة (من شرائح واجهة المستخدم أو الوقت الفعلي). (Id240f، b/329145809)
  • يمكنك إلغاء مهام dexopt في الخلفية قبل تشغيل مقياس طلبك الأساسي للحد من التداخل. (I989ed)
  • تمت إضافة قياس frameCount إلى "FrameTimingMetric" للمساعدة في اكتشاف الحالات التي تتغيّر فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة وإصلاح مشاكل الإيقاف). (I1e5aa)
  • تمت إضافة توضيح بأنّ frameOverrunMs هو المقياس المفضّل للتتبُّع عندما يكون متاحًا في "مستندات Google"، والسبب وراء ذلك. (I18749، b/329478323)

الإصدار 1.3.0-alpha02

20 مارس 2024

تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha02. يحتوي الإصدار 1.3.0-alpha02 على عمليات التنفيذ هذه.

الميزات الجديدة

  • دعم R8 التجريبي في الميكروباش من خلال قواعد Proguard مضمَّنة. تجدر الإشارة إلى أنّ هذا الدعم تجريبي ويتطلب الإصدار 8.3 من AGP لتصغير اختبارات وحدة المكتبة. يمكنك استخدام ما يلي لتفعيل تصغير/تحسين R8 في build.gradle لوحدة قياس الأداء، ما من المفترض أن يؤدي إلى زيادة كبيرة في الأداء، استنادًا إلى عبء العمل. (I738a3، b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

إصلاح الأخطاء

  • يعمل هذا الإجراء على إصلاح تحذير تتبُّع الطريقة ليُكون على سطر منفصل عن مخرجات البيانات الجزئية. (I0455c، b/328308833)

الإصدار 1.3.0-alpha01

21 فبراير 2024

تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha01. يحتوي الإصدار 1.3.0-alpha01 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية مَعلمات MicrobenchmarkConfig المنطقية لتجنُّب استخدام كلمة "يجب" (Ia8f00، وb/303387299).
  • تمت إضافة BenchmarkRule.measureRepeatedOnMainThread حتى تتمكّن مقاييس أداء سلاسل المحادثات الرئيسية (مثل تلك التي تؤثّر في عدد المشاهدات أو واجهات المستخدم الخاصة بالإنشاء) من تجنُّب ظهور أخطاء ANR، لا سيما عند استخدام مجموعات كبيرة في CI. (I5c86d)
  • تمت إضافة FrameTimingGfxInfoMetric، وهو تنفيذ تجريبي بديل لـ FrameTimingMetric مع الحصول على القياسات مباشرةً من النظام الأساسي، بدلاً من استخراجه من تتبُّع Perfetto. (I457cb وb/322232828)
  • يمكنك إضافة إمكانية تفريغ ملف شخصي ART أثناء تكرارات warmUp الفردية. (I17923)
  • تغييرات متعدّدة على TraceSectionMetric API:
    • إضافة Mode.Min وMode.Max
    • إضافة وسيطة تصنيف لإلغاء اسم القسم كتصنيف مقياس
    • تمت إضافة اسم الوضع إلى الإخراج لتوضيح معنى المقياس.
    • تمّ تغيير القيمة التلقائية إلى مجموع، فمعظم استخدامات هذا المقياس تُستخدم للأحداث المتكرّرة. يُرجى الانتباه إلى هذه التغييرات في استخدام ميزة CI، إذ قد يؤدي ذلك إلى حدوث انقطاعات أو توقّف في التحليل. (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 : يمكن استخدام هذه السمة لتجاوز حالات التعذُّر عند محاولة تجاهل أدوات التظليل، على سبيل المثال عند قياس أداء التطبيقات بدون ملف 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 على هذه الالتزامات.

إصلاح الأخطاء

  • تمت إزالة الاستثناء من مكوّن Gradle الإضافي للملف الشخصي الأساسي عندما يكون الإصدار AGP من الإصدار 8.3.0 أو إصدارًا أحدث.
  • حلّ مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في AAR قبل الإصدار 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
  • الحلول
    • إصلاح مجموعة الملفات الشخصية الأساسية على Android U+ (Id1392، وb/277645214)

مقياس الأداء الكلي

  • التحويل البرمجي
    • يُعيد مقياس أداء الماكرو الآن بشكلٍ صحيح حالة التجميع لكل تجميع، ما يتطلب إعادة تثبيت حزمة 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، سيتأثر التوقيت بشكل كبير، حيث يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
  • المتطلبات الأساسية

    • يتطلّب مقياس أداء الماكرو الآن الإصدار 1.3.0 أو الإصدارات الأحدث من ProfileInstaller في التطبيق المستهدَف لتفعيل التقاط أو إعادة ضبط الملف الشخصي ومحو ذاكرة التخزين المؤقت في أداة التظليل.
  • واجهات برمجة تطبيقات المقاييس التجريبية الجديدة

    • تمت إضافة الإصدار التجريبي TraceSectionMetric الذي يسمح باستخراج التوقيت البسيط من وحدات trace("") {} في تطبيقك، أو TraceMetric للاستفادة من إمكانية طلب البحث الكاملة في Perfetto TraceProcessor.
    • تمت إضافة الإصدار التجريبي 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".
    • يجب حل المشكلة التي قد تؤدي إلى تعذُّر طباعة التحذيرات في ناتج "مقاييس الأداء" في "استوديو Android".
    • تم إصلاح تعطُّل SampledProfiling في نظام التشغيل Android 13 (واجهة برمجة التطبيقات 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)
  • (مقياس أداء فائق) تم توضيح تصنيف تتبُّع الطريقة عند الربط في نتائج اختبار "استوديو YouTube"، واسم ملفات تتبُّع الطرق الثابتة لتكون فريدة على الجهاز/المضيف، حتى لا يتم استبدالها عند تنفيذ أكثر من مقياس أداء واحد. (I08e65، b/285912360)
  • تضمن أن يكون الجهاز نشطًا عند التقاط صورة ملف شخصي مرجعي. (I503fc)

الإصدار 1.2.0-beta05

30 آب (أغسطس) 2023

تم طرح androidx.benchmark:benchmark-*:1.2.0-beta05. يحتوي الإصدار 1.2.0-beta05 على عمليات التنفيذ هذه.

الميزات الجديدة

  • المكوّن الإضافي لنظام Gradle المتوافق مع Baseline Profile متوافق الآن مع الإصدار 8.3 من المكوّن الإضافي Android Gradle. (aosp/2715214)

الإصدار 1.2.0-beta04

23 آب (أغسطس) 2023

تم طرح androidx.benchmark:benchmark-*:1.2.0-beta04. يحتوي الإصدار 1.2.0-beta04 على عمليات التنفيذ هذه.

الميزات الجديدة

  • أصبح المكوّن الإضافي لنظام 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)
  • ستظهر الآن نقاط التتبّع الداخلية في مكتبة مقاييس الأداء (بما في ذلك حلقة مقاييس الأداء المصغَّرة/تتبُّع المراحل) في عارض تتبُّع نظام "استوديو YouTube"، وسيتم دمجها في العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
  • تمت إزالة خطأ معيار الماكرو NOT-PROFILEABLE على الإصدار 31 والإصدارات الأحدث من واجهة برمجة التطبيقات، وتخطّي عملية التحقّق القابلة للملف الشخصي على الأجهزة المزوّدة بإذن الوصول إلى الج��ر eng/userdebug. (I2amac، 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)

إصلاح الأخطاء

  • الإبلاغ عن خطأ في وحدة الماكرو عندما يتم تكوين نظام التشغيل بشكل خاطئ للتتبع، كما تم إصلاحه مؤخرًا في محاكيات واجهة برمجة التطبيقات 26/28 ARM64. (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 API دائمًا ملفات شخصية أساسية ثابتة. تمّت إزالة واجهة برمجة التطبيقات 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 من واجهة برمجة التطبيقات، والتي تتضمّن كلاً من مقاييس الأداء المصغّرة وواجهات برمجة تطبيقات 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 والإصدارات الأحدث، لم يعُد مقياس MAX إمكانية إعادة تثبيت التطبيقات المُستهدَفة لإعادة ضبط حالة التجميع، وذلك بفضل ميزة النظام الأساسي الجديدة. في السابق، كان من الضروري أن يكون لديك جهاز جذر، أو التعامل مع جميع حالات التطبيق (مثل تسجيل دخول المستخدم) التي تتم إزالتها قبل تشغيل كل مقياس أداء. (I9b08c، b/249143766)

إصلاح الأخطاء

  • يجب إصلاح الخطأ في DryRunMode لكي لا يتعطّل بعد الآن عندما يكون الملف الشخصي فارغًا بسبب تخطّي عملية التجميع. بدلاً من ذلك، فإنه يقوم بتشغيل تكرار واحد ويستخرج الملف الشخصي لضمان تسجيل شيء ما. (I2f05d، b/266403227)
  • إصلاح عطل PowerMetric عند التحقق من وجود Powerstats على مستويات واجهة برمجة التطبيقات القديمة (5faaf9، وb/268253898)

الإصدار 1.2.0-alpha09

11 كانون الثاني (يناير) 2023

تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha09. يحتوي الإصدار 1.2.0-alpha09 على هذه عمليات التنفيذ.

إصلاح الأخطاء

  • تم تفعيل تمرير None إلى androidx.benchmark.enabledRules وسيطة لعرض كل مقاييس الأداء / إنشاء الملف الشخصي الأساسي. (I3d7fd، b/258671856)
  • إصلاح التقاط PerfettoTrace في وحدات التطبيق (أي حِزم APK للاختبار غير الذاتي) (I12cfc)
  • تم إصلاح ترتيب وسيطة سحب Adb للملف الشخصي الأساسي في إخراج "استوديو YouTube" (I958d1، b/261781624)
  • أصبح واجهة برمجة التطبيقات 33 لمحاكي مجموعة الأجهزة تُعرف الآن بشكل صحيح على هذا النحو عند محاولة تشغيل معيار ماكرو وسيطبع التحذير بشكل صحيح. (69133b،b/262209591)
  • تخطّي عملية التحقّق من مستوى شحن البطارية على الأجهزة التي لا تحتوي على بطارية في طلبك في Mirrorمقياس الأداء (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 للملف الشخصي الأساسي، بحيث يمكن نسخ أمر السحب ببساطة في حال توصيل أجهزة متعدّدة (ما يصل إلى محاكي واحد) (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" تتطلّب وجود جذر على Android 13 (واجهة برمجة التطبيقات 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 وطرحه بوضوح في حال عدم تثبيت الحزمة المستهدَفة (تم تنفيذ هذه القاعدة من قبل لـ AnimalMetricRule). (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() أو التنقّل المستنِد إلى النشاط داخل التطبيق أو أوامر واجهة المستخدم. (Ia2de6، b/245414235)
  • إصلاح الخطأ الذي قد يؤدي إلى انتهاء مهلة startActivityAndWait لمحاولة الانتظار حتى اكتمال التشغيل على أدوات المحاكاة عن طريق تقليل مستوى صرامة اكتشاف الإطارات. (Ibe2c6، b/244594339، b/228946895)

الإصدار 1.2.0-alpha03

7 أيلول (سبتمبر) 2022

تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha03. يحتوي الإصدار 1.2.0-alpha03 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة واجهات برمجة تطبيقات تجريبية لاستخدام BenchmarkState بشكل مستقل، ومنفصلة عن BenchmarkRule / JUnit4. (Id478f، b/228489614)

إصلاح الأخطاء

  • تمت إضافة الإجراء الاحتياطي من Leanback لـ startActivityAndWait. (01ed77، b/242899915)

الإصدار 1.2.0-alpha02

24 آب (أغسطس) 2022

تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha02. يحتوي الإصدار 1.2.0-alpha02 على عمليات التنفيذ هذه.

التغييرات في واجهة برمجة التطبيقات

  • يتم ضبط السياسة تلقائيًا على am force stop لمدة MacrobenchmarkScope.killProcess() حتى عند استخدام الجذر، إلا أثناء إنشاء الملف الشخصي الأساسي. يمكن تجاوز هذا باستخدام وسيطة منطقية اختيارية. (02cce9، b/241214097)

إصلاح الأخطاء

  • إتاحة إنشاء الملف الشخصي الأساسي لتطبيقات النظام (I900b8، b/241214097)
  • يمكنك إتاحة التحقّق من مقاييس طاقة ODPM على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر. (a38c78 وb/229623230)

الإصدار 1.2.0-alpha01

27 تموز (يوليو) 2022

تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha01. يحتوي الإصدار 1.2.0-alpha01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • مكوّن جديد يتيح للأداة تفعيل تتبُّع Perfetto SDK في تطبيق يعرضه (I2cc7f)
  • تمت إضافة وسيطة قياس الأداء androidx.benchmark.enabledRules لتفعيل فلترة مقاييس الماكرو المتعلقة بمقاييس الأداء فقط أو إلى إنشاء ملف شخصي مرجعي فقط. عليك اجتياز اختبار فِي المكوّن الإضافي الإجراءات المتعلّقة بـ "التركيز الفائق" أو "النموذج الأساسي" (BaselineProfile) لاختبار نوع واحد فقط من الاختبارات، على سبيل المثال عند إنشاء BaselineProfiles باستخدام أحد المحاكيات. يمكن أيضًا استخدام القائمة المفصولة بفواصل. (I756b7، b/230371561)

    على سبيل المثال، في create.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 التي تحدث على بعض الأجهزة التي تعمل بالإصدار 30 من نظام التشغيل Android11 والإصدارات الأحدث. إليك حلّ مقترَح من 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

الإصدار 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. عليك اجتياز الاختبار في "متغيّر الماكرو" أو "BaselineProfile" لتشغيل نوع واحد من الاختبارات فقط، عند إنشاء BaselineProfiles باستخدام أحد المحاكيات مثلاً. (I756b7، b/230371561)

    على سبيل المثال، في create.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)

  • فلترة تحليل عيّنات البيانات البسيطة وفقًا لسلسلة محادثات measureRepeated فقط لتبسيط عملية الفحص (Ic3e12، b/217501939)

  • توفير المقاييس من العمليات الفرعية لواجهة المستخدم المُعنونة في التطبيقات المتعددة العمليات (Ice6c0 وb/215988434)

  • ننصحك بفلترة قواعد "الملف الشخصي الأساسي" لاستهداف الإصدار Android 9 (حزمة تطوير البرامج (SDK) 28). aosp/1980331 b/216508418

  • يمكنك تخطّي تثبيت الملف الشخصي عند استخدام "Compilation.None()". بالإضافة إلى ذلك، يمكنك الإبلاغ عن التحذيرات عندما يستخدم التطبيق إصدارًا قديمًا من androidx.profileinstaller ومكوّن Gradle الإضافي لنظام التشغيل Android. aosp/1977029

الإصدار 1.1.0-beta03

9 شباط (فبراير) 2022

تم طرح androidx.benchmark:benchmark-*:1.1.0-beta03. يحتوي الإصدار 1.1.0-beta03 على هذه الالتزامات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة AudioUnderrunMetric إلى مكتبة مقاييس الأداء القصوى ضمن علامة تجريبية للسماح برصد انخفاض مستوى الصوت (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).
  • منع أوامر واجهة برمجة التطبيقات 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 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • إنّ نتائج الملف الشخصي لتحليل حزم البيانات المعيارية الصغيرة أو لتتبُّع الطرق مرتبطة الآن في النتائج في "استوديو YouTube"، على غرار نتائج التحليل الأخرى، ولكنّها لا تؤدي إلى إيقاف مقياس التخصيص. (Idcb65 وb/214440748 وb/214253245)
  • يطبع BaselineProfileRule الآن الأمر adb pull في Logcat ومخرجات "استوديو YouTube" لسحب الملف النصي BaselineProfile الذي تم إنشاؤه. (f08811)

الإصدار 1.1.0-beta01

12 كانون الثاني (يناير) 2022

تم طرح androidx.benchmark:benchmark-*:1.1.0-beta01. يحتوي الإصدار 1.1.0-beta01 على عمليات التنفيذ هذه.

إصلاح الأخطاء

  • يعمل هذا الإجراء على إصلاح تفعيل وسيطة المحدِّد. (I37373، b/210619998)
  • تمت إزالة CompliationModes المتوقّفة نهائيًا (I98186، b/213467659)
  • تم تبديل وسيطة الملف الشخصي الأساسي لـ CompilationMode.Partial إلى التعداد للإيضاح. (Id67ea)

الإصدار 1.1.0-alpha13

15 كانون الأول (ديسمبر) 2021

تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha13. يحتوي الإصدار 1.1.0-alpha13 على هذه عمليات التنفيذ.

التغييرات في واجهة برمجة التطبيقات

  • يمكنك إضافة تتبُّع النظام بارتفاع مرتفع إلى مخرجات البيانات الصغيرة على Android Q (واجهة برمجة التطبيقات 29 والإصدارات الأحدث). يُرجى العلم أنّ هذا الإجراء لا يرصد حاليًا تتبُّعًا مخصّصًا (من خلال واجهات برمجة تطبيقات android.os.Trace أو androidx.tracing Jetpack) لتجنُّب التأثير في النتائج. ينبغي أن يكون هذا التتبع مفيدًا في تشخيص عدم الاستقرار، خاصة من مصادر خارج المعيار. (I298be، b/205636583، b/145598917)
  • توضيح "CompilationModes" إلى ثلاث فئات: "كامل" و"لا شيء" و"جزئي" في السابق، كانت أسماؤها غير متسقة بعد وسيطات التجميع (التي نتعامل معها الآن كتفاصيل تنفيذ) والميزات. وهذا يجعل المفاضلات والمجموعات المحتملة والسلوكيات في إصدارات المنصات أكثر وضوحًا. (I3d7bf، b/207132597)
  • يكون الإعداد والقياس الآن زوجيًا دائمًا بالترتيب. يمكنك الآن الاستعلام عن اسم الحزمة وتكرارها (على الرغم من أنّ التكرار قد يكون null في بعض سيناريوهات التحضير). (Id3b68، b/208357448، b/208369635)

إصلاح الأخطاء

  • تم إصلاح CompilationMode.Speed تم التعامل معها بشكل غير صحيح على أنها None (I01137)

الإصدار 1.1.0-alpha12

17 تشرين الثاني (نوفمبر) 2021

تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha12. يحتوي الإصدار 1.1.0-alpha12 على عمليات التنفيذ هذه.

الميزات الجديدة

  • أضِف TracesectionMetric التجريبي لقياسات التوقيت المخصصة المستندة إلى التتبع. (I99db1، b/204572664)

إصلاح الأخطاء

  • تنشيط الجهاز في كل تكرار، لضمان إمكانية اختبار واجهة المستخدم - يتطلب ذلك إيقاف شاشة القفل. (Ibfa28، b/180963442)
  • إصلاح الأعطال المتعددة في وضع التحليل في حزم StackSampling على أدوات المحاكاة والأجهزة غير الجذر (Icdbda وb/202719335)
  • تمت إزالة 0.5 ثانية من النوم في نهاية كل تكرار - إذا رأيت مقاييس مفقودة مع هذا التغيير، فيرجى الإبلاغ عن خطأ. (Iff6aa)
  • تقليل فرص إسقاط البيانات وخفض أعباء الذاكرة بسبب التتبُّع (Id2544 وb/199324831 وb/204448861)
  • يمكنك تقليل حجم التتبع بنسبة 40% تقريبًا عن طريق التبديل إلى تنسيق التخزين المجدول المضغوط. (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 تجريبي جديد يتيح إنشاء ملفات شخصية أساسية لتجربة المستخدم المهمة في التطبيق. الوثائق التفصيلية التي يجب اتباعها. (إيبفا، b/203692160)
  • تتم إزالة متغير واجهةسية مكرّرة، الذي تمت إضافته لمتصلي جافا، نظرًا لأنه تسبب في الغموض في إكمال/حل الطريقة. سيحتاج المتصلون بـ Java مرة أخرى إلى عرض Unit.Instance من measureed (تم تكرار القياس). إذا كان ذلك يسبب لك إزعاجًا، يُرجى الإبلاغ عن الخطأ، حتى نتمكّن من إعادة النظر في هذا الأمر في إصدار مستقبلي. (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)
  • تمت إضافة عمليات تحميل JvmOverload إلى طرق متعدّدة خاصة بمقياس طلبك على نطاق صغير في إطار البيانات (CMP) لمتصلي Java. (I644fe، b/184546459)
  • يمكنك توفير دالة AnimalMetricRule.measure المتكرّرة التي تستخدم Consumer<MacrobenchmarkScope> مع التعبير الاصطلاحي بلغة Java. (If74ab، وb/184546459)

إصلاح الأخطاء

  • أصلِح المشكلة المتعلّقة بعدم البدء في حالات الآثار في وقت مبكر بما فيه الكفاية، وأنّ بيانات المقياس غير متوفّرة. من المتوقع أن يؤدي هذا إلى إصلاح استثناءات "تعذّرت قراءة أي مقاييس أثناء قياس الأداء" التي حدثت بسبب المكتبة نفسها. (I6dfcb وb/193827052 وb/200302931)
  • تمت إعادة تسمية FrameOptionalSlack ليصبح 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)
  • قم بالتبديل إلى مقاييس النقطة العائمة في جميع المكتبات المرجعية (مقتطعة في واجهة مستخدم Studio). (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

التغييرات في واجهة برمجة التطبيقات

  • تم تغيير الإعداد startActivityAndAnswer لاستدعاء الإطلاق من خلال am start، ما يقلل من وقت كل تكرار للقياس بحوالي 5 ثوانٍ، وذلك على حساب التوقف عن دعم عناصر النية بالشراء. (I5a6f5، b/192009149

إصلاح الأخطاء

  • يجب تقليل شدة الكشف عن الاختناق الحراري وإعادة حساب خط الأساس إذا تم رصد هذه القيود بشكل متكرر. (I7327b)
  • إصلاح FrameTimingMetric للعمل على الإصدار التجريبي من Android S (Ib60cc وb/193260119)
  • استخدِم EmptyActivity لإزالة التطبيق المستهدَف من حالة الإيقاف النهائي من أجل إتاحة استخدام CompilationMode.BaselineProfile بشكل أفضل. (Id7cac، b/192084204)
  • تم تغيير امتداد ملف التتبُّع إلى .perfetto-trace ليتطابق مع معيار النظام الأساسي. (I4c236، b/174663039)
  • تُخرج StartupTimingMetric الآن مقياس "fullDrawnMs" لقياس الوقت حتى يكتمل العرض في تطبيقك. لتحديد هذا المقياس لتطبيقك، يمكنك الاتصال بـ Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، كأن يتم مثلاً تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفر طريقة reportFullyDrawn بدون التحقق من إصدار الإصدار على ComponentActivity). يجب إجراء الاختبار لمدة كافية لتسجيل المقياس (startActivityAndand لا ينتظر 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 على هذه عمليات التنفيذ.

الميزات الجديدة

إصلاح الأخطاء

  • تم تعديل نموذج رمز Gradle لمنع أخطاء قياس الأداء من أجل استخدام واجهة برمجة تطبيقات لم يتم إيقافها نهائيًا مع بنية تتوافق أيضًا مع مستخدمي .gradle.kts.

    مثال:

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

الإصدار 1.1.0-alpha02

18 أيار (مايو) 2021

يُعد الإصدار 1.1.0-alpha02 من مقياس الأداء عنصرًا كبيرًا لقياس الأداء - مقياس الأداء الفائق. بالإضافة إلى مقياس الأداء الذي يسمح لك بقياس عدد تكرارات وحدة المعالجة المركزية (CPU)، تسمح لك مقاييس الماكرو بقياس التفاعلات على مستوى التطبيقات بالكامل، مثل بدء التشغيل والتمرير والتقاط عمليات التتبُّع. لمزيد من المعلومات، اطّلِع على مستندات المكتبة.

تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha02. يحتوي الإصدار 1.1.0-alpha02 على عمليات التنفيذ هذه.

الميزات الجديدة

تمت إضافة عناصر قياس الأداء الماكرو (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro)

  • تسجيل مقاييس أداء بدء التشغيل أو التمرير أو الصور المتحركة من تطبيقك، محليًا أو في CI
  • التقاط آثار الأنشطة وفحصها من داخل "استوديو Android"

إصلاح الأخطاء

  • حلّ مشكلة أذونات واجهة أوامر الغلاف في دليل الإخراج على نظام التشغيل Android 12 (ملاحظة: قد يتطلب ذلك تحديث مكوّن Android Gradle الإضافي إلى الإصدار 7.0.0 Canary وAndroid Studio إلى Arctic Fox (2020.3.1)، لمواصلة التقاط ملفات النتائج على الأجهزة المتأثرة). (Icb039)
  • التخزين المؤقت لإعدادات الدعم في Benchmarkplin (6be1c1 وb/159804788)
  • إخراج ملف مبسّط: مفعّل تلقائيًا في دليل لا يتطلب requestLegacyExternalStorage=true (8b5a4d، b/172376362)
  • إصلاح تحذيرات Logcat الخاصة لطباعة المكتبة بشأن عدم العثور على سلسلة محادثات JIT على إصدارات النظام الأساسي التي لا تكون موجودة فيها (I9cc63، b/161847393)
  • حلّ مشكلة الحد الأقصى لمعدّل التكرار على جهاز القراءة (I55c7a)

الإصدار 1.1.0-alpha01

10 حزيران (يونيو) 2020

تم طرح الإصدارات androidx.benchmark:benchmark-common:1.1.0-alpha01 وandroidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 وandroidx.benchmark:benchmark-junit4:1.1.0-alpha01. يحتوي الإصدار 1.1.0-alpha01 على عمليات التنفيذ هذه.

الميزات الجديدة في الإصدار 1.1

  • مقياس التخصيص: يتم الآن تشغيل مقاييس الأداء مرحلة إضافية بعد الإعداد والتوقيت، حيث يتم تسجيل أعداد التخصيص. يمكن أن تتسبب عمليات التخصيص في حدوث مشكلات في الأداء على الإصدارات القديمة من النظام الأساسي (أصبح 140 نانو ثانية في O - يتم قياسها على Nexus5X، مع ساعات مقفلة). يتم عرض هذا المقياس في نتيجة وحدة تحكّم "استوديو Android" وكذلك في
  • دعم إنشاء الملفات التعريفية: يمكنك الآن تسجيل بيانات التوصيف لأداء اختبار قياسي، وذلك لفحص سبب بطء تشغيل الرمز. يدعم مقياس الأداء تسجيل تتبع الطريقة أو أخذ عينات الطرق من ART. يمكن فحص هذه الملفات باستخدام "المحدِّد" في "استوديو Android" من خلال النقر على ملف > فتح.
  • يوفّر المكوّن الإضافي Reference Gradle الآن الإعدادات التلقائية لعملية إعداد أسهل:
    • تم ضبط testBuildType ليتم طرحه تلقائيًا، وذلك لتجنُّب استخدام الاعتماديات مع تغطية الرمز المُدمَجة. يتم أيضًا ضبط نوع إنشاء الإصدار على أنّه نوع الإنشاء التلقائي الذي يتيح لـ "استوديو Android" اختيار صيغة الإصدار الصحيحة تلقائيًا عند فتح مشروع للمرة الأولى. (b/138808399)
    • يتم استخدام signingConfig.debug كإعداد تلقائي للتوقيع (b/153583269).

** إصلاح الأخطاء **

  • انخفاض كبير في النفقات العامة لعملية الانتقال، حيث كان القياس الأول لكل مقياس أداء أعلى بشكل مصطنع من غيره. كانت هذه المشكلة أكثر وضوحًا في مقاييس أداء صغيرة جدًا (1 ميكرو ثانية أو أقل). (b/142058671)
  • تم إصلاح خطأ InstrumentationResultParser المطبوع لكل مقياس أداء عند التشغيل من سطر الأوامر. (I64988، b/154248456)

المشاكل المعروفة

  • لا تطبع سطر الأوامر أو استدعاءات Gradle لمقياس الأداء النتائج مباشرة. ويمكنك حلّ هذه المشكلة إما من خلال الانتقال إلى "استوديو YouTube" أو تحليل ملف إخراج JSON للحصول على النتائج.
  • يتعذّر على تقارير قياس الأداء سحب التقرير من الأجهزة التي تم تثبيت تطبيق عليها رقم تعريف تطبيق ينتهي بـ "android" أو "تنزيل" (غير حساس لحالة الأحرف). على المستخدمين الذين يواجهون هذه المشكلة ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 4.2-alpha01 أو إصدار أحدث.

الإصدار 1.0.0

الإصدار المرجعي 1.0.0

20 تشرين الثاني (نوفمبر) 2019

تم إصدار androidx.benchmark:benchmark-common:1.0.0 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0 وandroidx.benchmark:benchmark-junit4:1.0.0 بدون أي تغييرات من 1.0.0-rc01. يحتوي الإصدار 1.0.0 على عمليات التنفيذ هذه.

الميزات الرئيسية للإصدار 1.0.0

تسمح لك مكتبة مقاييس الأداء بكتابة مقاييس أداء لرمز التطبيق والحصول على النتائج بسرعة.

ويمنع حدوث مشاكل ضبط إعدادات وقت التشغيل والإصدار، كما يساعد على تثبيت أداء الجهاز لضمان دقة القياسات واتّساقها. يمكنك تشغيل مقاييس الأداء مباشرةً في "استوديو Android" أو في ميزة "الدمج المستمر" لمراقبة أداء الرمز البرمجي مع مرور الوقت وتجنُّب أي تراجع فيه.

وتشمل الميزات الرئيسية ما يلي:

  • تثبيت الساعة
  • تحديد الأولوية تلقائيًا لسلاسل المحادثات
  • دعم اختبار أداء واجهة المستخدم، مثل نموذج RecyclerView
  • عملية الإحماء والتكرار الواعيَين بتقنية JIT
  • ناتج مقياس أداء 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 على عمليات التنفيذ هذه.

الميزات الجديدة

  • تمت إضافة تتبُّع تتبُّع النظام إلى مقاييس الأداء.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم استقرار المقياس حيث لا يمكن إنهاء JIT قبل التحض��ر بس��ب خفض الأولوية (b/140773023)
  • دليل إخراج JSON موحد في الإصدارين 3.5 و3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

الإصدار 1.0.0-beta01

9 تشرين الأول (أكتوبر) 2019

تم طرح الإصدارات androidx.benchmark:benchmark-common:1.0.0-beta01 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 وandroidx.benchmark:benchmark-junit4:1.0.0-beta01. يحتوي الإصدار 1.0.0-beta01 على عمليات التنفيذ هذه.

الميزات الجديدة

  • تنفيذ عملية جمع البيانات غير المرغوب فيها قبل كل عملية إحماء لتقليل ضغط الذاكرة من أحد مقاييس الأداء إلى المقياس التالي (b/140895105)

إصلاح الأخطاء

  • تمت إضافة الاعتمادية androidx.annotation:android-experimental-lint لكي يعرض رمز Java أخطاء Lint بشكل صحيح في حال عدم استخدام واجهة برمجة تطبيقات تجريبية، على غرار التعليق التوضيحي التجريبي بلغة Kotlin لمتصلي لغة Kotlin.
  • يتم الآن رصد استخدام وسيطة أداة additionalTestOutputDir بشكل صحيح للمخرجات في الإصدار 3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك لمعرفة متى سيعالج AGP نسخة البيانات.
  • إصلاح معدّل تكرار الساعة الذي لم يتم رصده في ملف 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" التي كانت معلّقة على الأجهزة المزوّدة بإذن الوصول إلى الجذر من خلال إصدار قديم من الأداة المساعدة التي لا تتوافق مع علامة -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. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

تمّت أيضًا إضافة مستندات جديدة حول كيفية استخدام مكتبة مقاييس الأداء بدون 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).
    • يهدف ذلك إلى التشجيع على إجراء عمليات قياس دقي��ة، وخاصةً في CI.
    • يمكن تخفيض هذه الأخطاء مرة أخرى إلى تحذيرات باستخدام وسيطة أداة. على سبيل المثال: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

إصلاح الأخطاء

  • عند الكتابة على وحدة تخزين خارجية على أجهزة Q، يتم تقديم رسائل وصفية أكثر مع اقتراحات حول كيفية حل المشكلة.
  • يتم تفعيل الشاشات تلقائيًا أثناء عمليات قياس الأداء، بدلاً من أن تفشل عندما تكون الشاشة مطفأة

المساهمات الخارجية

  • نشكر "سيرغي زخاروف" لمساهمته في تحسين ناتج JSON وحلّ مشاكل الشاشة.

الإصدار 1.0.0-alpha03

2 تموز (يوليو) 2019

تم طرح androidx.benchmark:benchmark:1.0.0-alpha03 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • عرض مدة النوم بسبب التقييد الحراري لكل مقياس أداء في تقرير JSON الكامل

إصلاح الأخطاء

  • لن يلزم بعد الآن تطبيق مكوّن Gradle الإضافي بعد المكوّنات الإضافية لنظام التشغيل Android وحظر Android.
  • إتاحة تقارير قياس الأداء على الأجهزة التي تعمل بنظام التشغيل Android 10 التي تستخدم مساحة التخزين المُفصَّلة

الإصدار 1.0.0-alpha02

6 حزيران (يونيو) 2019

تم إلغاء androidx.benchmark:1.0.0-alpha02 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. يمكن الاطّلاع هنا على اللقاءات المضمَّنة في هذا الإصدار.

تجدر الإشارة إلى أنّنا نتعامل مع مخطط JSON باعتباره واجهة برمجة تطبيقات. ونخطط لاتّباع قيود الثبات نفسها التي تم تطبيقها على واجهات برمجة التطبيقات الأخرى: وهي الإصدارات الثابتة (مع استثناءات نادرة جدًا) مرة واحدة في الفترة التجريبية، والثابتة في الإصدار النهائي، مع السماح بإدخالات إضافية في الإصدارات الثانوية فقط والتغييرات أو عمليات الإزالة في الإصدارات الرئيسية.

التغييرات في واجهة برمجة التطبيقات

  • تم تعديل مخطط JSON. من المحتمل أن تقتصر التغييرات الأخرى في مخطط JSON على الإضافات:

    • إعادة تنظيم بنية كائن النتيجة لدعم مجموعات المقاييس الإضافية في المستقبل (b/132713021)
    • تمت إضافة معلومات سياق تشغيل الاختبار إلى كائن المستوى الأعلى، مثل معلومات الجهاز والإصدار وما إذا كانت الساعات مقفلة، (b/132711920)
    • تحتوي أسماء مقاييس الوقت الآن على "ns" في اسمها (b/132714527)
    • تمت إضافة إحصاءات إضافية لكل مقياس تم الإبلاغ عنه (الحد الأقصى، والمتوسط، والحد الأدنى)، وتمت إزالة إحصا��يات ملخص "nanos" المبسطة (b/132713851)
  • تمت إ��الة نا��ج XML (b/132714414)

  • تمّت إزالة ميزة "رصد الخانق الحراري" من واجهة برمجة تطبيقات "BenchmarkState.reportData" (b/132887006)

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم تثبيت ./gradlew lockClocks على بعض الأجهزة التي تعمل بنظام التشغيل مؤخرًا (b/133424037)
  • تم إيقاف رصد التقييد للمحاكي (b/132880807)

الإصدار 1.0.0-alpha01

7 أيار (مايو) 2019

تم طرح androidx.benchmark:benchmark:1.0.0-alpha01. تتوفّر التعهدات المضمّنة في هذا الإصدار هنا.