مقياس الأداء

يجب قياس أداء الرمز بدقة في "استوديو Android".
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
20 آذار (مارس) 2024 1.2.3 - - 1.3.0-alpha02

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

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

مقياس الأداء الفائق

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

رائع

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

Kotlin

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

مقياس أداء مصغّر

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

رائع

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

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

Kotlin

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

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

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

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

رائع

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

Kotlin

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

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

رائع

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

ملاحظات

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

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

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

الإصدار 1.3

الإصدار 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:
    • إضافة Mode.Min وMode.Max
    • إضافة وسيطة تصنيف لإلغاء اسم القسم كتصنيف مقياس
    • تمت إضافة اسم الوضع إلى الناتج لتوضيح معنى المقياس
    • تم تغيير الإعداد التلقائي إلى المجموع، لأنّ معظم استخدامات هذا المقياس مخصّصة للأحداث المتكرّرة. انتبِه إلى هذه التغييرات في استخدام CI، لأنّ ذلك قد يؤدي إلى عدم استمرارية أو تحليل الأعطال. (Ic1e82 وb/301892382 وb/301955938)

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

  • رسالة خطأ محسّنة في المكوّن الإضافي لمنصة Gradle الملف الشخصي الأساسية عند عدم توفّر جهاز مُدار محدَّد (Idea2b، b/313803289)
  • حلّ مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في ميزة "الاقتراحات المطبّقة تلقائيًا" قبل الإصدار 8.3.0-alpha15 من AGP (I1d2af، b/313992099)
  • تم إصلاح عنوان URL الأساسي وعنوان URL الخاص بمخرجات الملف الشخصي لبدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
  • تم تعديل مهلات مصدر البيانات لمحاولة إصلاح java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d، b/323601788)
  • أضِف وسيطتَي قياس لتجاوز سلوك تسقط أداة التظليل إلى الأعطال البديلة عند قياس أداء التطبيقات بدون الإصدار 1.3 من ProfileInstaller:
    • androidx.benchmark.dropShaders.enable=true/false : يمكن استخدامها لتخطي جميع عمليات طرح أدوات التظليل (بما في ذلك تلك التي تمت في عمليات إطلاق StartupMode.Cold)، خاصةً عند قياس أداء التطبيقات التي لا تستخدم حتى الآن أداة تثبيت الملف الشخصي
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : يمكن استخدامها لتحمل حالات الإخفاق عند محاولة إيقاف أدوات التظليل، مثلاً عند قياس أداء التطبيقات بدون أداة تثبيت الملف الشخصي 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.3

24 كانون الثاني (يناير) 2024

تم طرح "androidx.benchmark:benchmark-*:1.2.3". يتضمّن الإصدار 1.2.3 هذه الالتزامات.

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

  • تمت إزالة الاستثناء من المكوّن الإضافي Baseline Profile Gradle Plugin عندما يكون إصدار AGP هو 8.3.0 أو أحدث.
  • حل مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في ميزة "الاقتراحات المطبّقة تلقائيًا" قبل الإصدار 8.3.0-alpha15 من AGP.

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

مقاييس الأداء الفائق

  • التحويل البرمجي
    • تعمل ميزة "القياس الفائق" الآن على إعادة ضبط حالة التجميع بالكامل لكل تجميع بشكل صحيح، ويتطلب ذلك إعادة تثبيت حزمة APK قبل الإصدار 14 من نظام التشغيل Android، لذا ننصح بشدة بإجراء قياس الأداء على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث إذا أردت الحفاظ على الحالة (مثل تسجيل دخول المستخدم) فيما يتم قياسه.
    • يمكنك أيضًا التغلب على هذا الأمر عن طريق التحكم في التحويل البرمجي للتطبيقات بشكل منفصل وتخطّي التحويل البرمجي باستخدام CompilationMode.Ignore() أو وسيطة أداة القياس.
  • وسيطات قياس حالة التطبيق

    • إتاحة وسيطة قياس الأداء في androidx.benchmark.dryRunMode.enable، (متوفّرة حاليًا في مقاييس الأداء المصغّرة) لإجراء عمليات تحقّق أسرع (مثلاً عند إنشاء مقياس الأداء أو في عملية الإرسال المُسبَق)
    • الدعم لـ androidx.benchmark.profiling.mode=StackSampling وMethodTracing.
    • تمت إضافة androidx.benchmark.enabledRules للسماح باختبارات الملف الشخصي الأساسي لفلترة البيانات في وقت التشغيل مقارنةً باختبارات قاعدة مقاييس الأداء الكبرى.
    • تمت إضافة الوسيطة androidx.benchmark.perfettoSdkTracing.enable لتفعيل التتبع باستخدام تتبع-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)
    • تم إصلاح احتياطي leanback لـ startActivityAndWait.

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

  • الميزات
    • تم نقل عملية إنشاء الملفات التعريفية إلى مرحلة منفصلة بعد مقاييس أخرى، لذلك يمكن أن تعرض إحدى عمليات الاختبار كل من التوقيت الدقيق ونتائج التحليل.
  • واجهات برمجة التطبيقات التجريبية
    • تمت إضافة واجهة برمجة تطبيقات MicrobenchmarkConfig التجريبية لتحديد المقاييس المخصَّصة وضبط التتبع وإنشاء الملفات التعريفية. يمكن استخدامها لالتقاط آثار الأساليب أو التقاط نقاط التتبع (ولكن يجب الانتباه إلى تتبع النفقات العامة).
    • تمت إضافة واجهات برمجة تطبيقات تجريبية للتحكّم في BenchmarkState بشكل منفصل عن BenchmarkRule، بدون JUnit.
    • تمت إضافة سجلّ PerfettoTrace التجريبي لتفعيل التقاط بيانات آثار الأنشطة في Perfetto، باستخدام إعدادات مخصّصة، ومنفصلة عن واجهات برمجة التطبيقات لقياس الأداء.
  • المشاكل
    • حل بديل لا يحتوي على مسافات بيضاء سابقة في نتائج قياس الأداء في "استوديو Android"
    • حلّ المشكلة التي تؤدي إلى تعذُّر طباعة التحذيرات في ناتج مقياس الأداء في "استوديو Android"
    • تم إصلاح عطل "SampledProfiling" على الإصدار 13 من نظام التشغيل Android (واجهة برمجة التطبيقات 33) والإصدارات الأحدث.
    • تم إدخال تحسينات كبيرة على أداء dryRunMode من خلال تخطّي IsolationActivity وتتبُّع Perfetto (وضع التشغيل التجريبي الأسرع يصل إلى 10 مرات على الإصدارات الأقدم من نظام التشغيل).

الإصدار 1.2.0-rc02

6 تشرين الأول (أكتوبر) 2023

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

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

  • أصلِح مخرجات ملف مقياس الأداء حتى لا يتعطل نسخ ملفات 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 على هذه الالتزامات.

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

  • يتم الآن طرح استثناء (مع تعليمات التعويض) عند تعذُّر إعداد تتبُّع حزمة Perfetto SDK في أحد مقاييس الأداء. (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 هذه الالتزامات.

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

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

الإصدار 1.2.0-beta04

23 آب (أغسطس) 2023

تم طرح "androidx.benchmark:benchmark-*:1.2.0-beta04". يتضمّن الإصدار 1.2.0-beta04 هذه الالتزامات.

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

  • يتوافق المكوّن الإضافي Baseline Profile 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)
  • تمت إزالة خطأ "غير ملف شخصي" لمقياس الأداء الماكرو على واجهة برمجة التطبيقات 31 والإصدارات الأحدث، وتخطّي عملية التحقق القابلة للملف الشخصي على الأجهزة الجذرية للمستخدم/userdebug. (I2BAc، 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)

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

  • الإبلاغ عن خطأ في magbench عندما يتم ضبط نظام التشغيل بشكل غير صحيح للتتبّع، كما تم إصلاحه مؤخرًا في محاكيات ARM64 لواجهة برمجة التطبيقات 26/28. (I0a328، b/282191686)
  • تمت إضافة تفاصيل إلى تعذُّر إعادة ضبط التجميع لاقتراح تحديث المحاكي، وذلك لأنّ بعض المحاكيات قد أصلحت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
  • اجعل androidx.test.uiautomator:uiautomator:2.2.0 تبعية api بدلاً من implementation. (I1981e)

الإصدار 1.2.0-beta01

18 تموز (يوليو) 2023

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

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

  • إصلاح التحذيرات التي يتم إلغاؤها أحيانًا في مخرجات "مقياس الأداء" في "استوديو 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() API إلى 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 من واجهة برمجة التطبيقات، والتي تتضمّن مقاييس الأداء المصغّرة وواجهات PerfettoTrace التجريبية في واجهات برمجة التطبيقات. قبل هذا الإصدار، كانت اتصالات UiAutomation غير موثوقة على بعض الأجهزة. (I78e8c)
  • تمت إضافة واجهة برمجة تطبيقات تجريبية متاحة للجميع في PerfettoTraceProcessor من أجل تفعيل تحليل محتوى التتبُّع. وهذه خطوة نحو توفير المقاييس المخصّصة بالكامل استنادًا إلى بيانات تتبّع Perfetto. (I2659e، b/219851406)

الإصدار 1.2.0-alpha11

8 آذار (مارس) 2023

تم طرح "androidx.benchmark:benchmark-*:1.2.0-alpha11". يتضمّن الإصدار 1.2.0-alpha11 هذه الالتزامات.

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

  • تم إصلاح الأعطال في MacrobenchmarkRule وBaselineProfileRule عند إعادة تثبيت الملفات الشخصية أو استخراجها من حزمة تطبيق تحتوي على حِزم APK متعددة. (I0d8c8، b/270587281)

الإصدار 1.2.0-alpha10

22 شباط (فبراير) 2023

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

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

  • بفضل الميزة الجديدة للنظام الأساسي، لن تعيد ميزة "التركيز الفائق" تثبيت التطبيقات المستهدَفة في نظام التشغيل Android 14 أو الإصدارات الأحدث، وذلك لإعادة ضبط حالة التجميع. في السابق، كان من الضروري أن يكون لديك جهاز جذر، أو التعامل مع جميع حالات التطبيق (مثل تسجيل دخول المستخدم) التي تتم إزالتها قبل تشغيل كل مقياس أداء. (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)
  • إصلاح ترتيب سحب الوسيطة في الملف الشخصي المرجعي في إخراج "استوديو YouTube" (I958d1، b/261781624)
  • أصبح الآن بإمكان واجهة برمجة التطبيقات 33 لمحاكي التطبيق التعرّف بشكل صحيح على هذا النحو عند محاولة تنفيذ مقياس أداء ماكرو، وبالتالي سيطبع التحذير بشكل صحيح. (69133b،b/262209591)
  • تخطّي فحص مستوى شحن البطارية على الأجهزة غير المزوّدة ببطارية في ميزة "التركيز الفائق" (fe4114، b/232448937)

الإصدار 1.2.0-alpha08

7 كانون الأول (ديسمبر) 2022

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

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

  • تمت إضافة الإصدار التجريبي الجديد من واجهات برمجة التطبيقات PerfettoTrace.record {} وPerfettoTraceRule لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم System Traces) كجزء من الاختبار، بغرض فحص سلوك الاختبار وأدائه. (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)
  • إصلاح العديد من حالات إخفاق أوامر سطر الأوامر على رسالة الخطأ تتطلب استخدام واجهة برمجة التطبيقات <=23، بما في ذلك تعذّر تنفيذ البرنامج الثنائي وتعذُّر التقاط حالات التتبُّع (Ib6b87، b/258863685)
  • يمكنك ترتيب قواعد الملف الشخصي التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات التي تتغيّر بمرور الوقت (عند التأكّد من قواعد الملف الشخصي ودمجها في عنصر التحكّم بالمصدر). (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 الخاص باختبار قياس الأداء الكلي كأداة ذاتية. يمنع هذا الخطأ قياس الأداء الكلي لمقياس الأداء من داخل عملية التطبيق المستهدَف. عمليًا، لن تتمكن magbench من تجميع/إيقاف/إيقاف تشغيل التطبيق على البارد أو التحكم في أذوناته الخاصة (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، واعرضه بوضوح في حال عدم تثبيت الحزمة المستهدفة (تم إجراء ذلك من قبل لـ نموذج eroMetricRule). (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-common يسمح باستخدام الأدوات لتفعيل تتبع حزمة Perfetto SDK في تطبيق يعرضه (I2cc7f)
  • تمت إضافة وسيطة قياس الأداء androidx.benchmark.enabledRules لتفعيل فلترة عمليات تشغيل مقاييس الأداء الكبيرة إلى مقاييس الأداء فقط، أو إنشاء الملف الشخصي الأساسي فقط. أدخِل "مقياس الأداء الفائق" أو "الملف المرجعي" لإجراء نوع واحد من الاختبارات فقط، على سبيل المثال عند إنشاء مقياس "BaselineProfiles" باستخدام محاكي. يتم أيضًا دعم القائمة المفصولة بفواصل. (I756b7، b/230371561)

    على سبيل المثال، في version.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، الذي قد يحدث على بعض الأجهزة التي تعمل بالإصدار Android11 (واجهة برمجة التطبيقات 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

الإصدار 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)

  • يمكنك تحسين سرعة التكرار في ميزة "القياس الفائق" من خلال تحسين أوامر واجهة المستخدم غير الأساسية. (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)

  • وبما أنّ ذلك يمنع التطبيقات من إعداد الحالة قبل إجراء الاختبارات، يمكن الآن تخطّي عملية التجميع / إعادة التثبيت لتفعيل حلّ هذه المشكلة. على سبيل المثال، يمكنك تجميع الهدف بالكامل باستخدام أمر واجهة أوامر cmd package compile -f -m speed <package>، ثم تجاوز خطوة تجميع مقياس الأداء الكلي.

    على سبيل المثال، في version.gradle لمقياس الأداء الماكرو:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    أو من سطر الأوامر Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • تم السماح بمشاركة وحدة بين مقاييس الأداء الكلية واختبارات إنشاء الملفات الشخصية الأساسية عن طريق إضافة وسيطة قياس الأداء androidx.benchmark.enabledRules. أدخِل "مقياس الأداء الدقيق" أو "الملف المرجعي" لإجراء نوع واحد من الاختبارات، على سبيل المثال عند إنشاء اختبار BaselineProfiles على محاكي. (I756b7، b/230371561)

    على سبيل المثال، في version.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 (حزمة تطوير البرامج (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()
                // ...
            }
        )
    }
    

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

  • تم إصلاح المشكلة التي تؤدي إلى تعذُّر تحديث عمليات تتبُّع محلّل صغير في عمليات التشغيل اللاحقة عند الربط في إخراج استوديو (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 ومخرجات Studio لسحب الملف النصي BaselineProfile الذي تم إنشاؤه. (f08811)

الإصدار 1.1.0-beta01

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

تم طرح "androidx.benchmark:benchmark-*:1.1.0-beta01". يتضمّن الإصدار 1.1.0-beta01 هذه الالتزامات.

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

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

الإصدار 1.1.0-alpha13

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

تم طرح "androidx.benchmark:benchmark-*:1.1.0-alpha13". يتضمّن الإصدار 1.1.0-alpha13 هذه الالتزامات.

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

  • أضِف ميزة تتبُّع النظام ذات النفقات العامة المنخفضة إلى مخرجات سطح المكتب الصغيرة في 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 من MeasurementRepeated. إذا كان هذا يزعجك، يرجى الإبلاغ عن الخطأ، ويمكننا إعادة النظر فيه في إصدار مستقبلي. (Ifb23e، b/204331495)

الإصدار 1.1.0-alpha10

27 تشرين الأول (أكتوبر) 2021

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

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

  • Backport StartupTimingMetric للعودة إلى واجهة برمجة التطبيقات 23 كما أن طريقة التنفيذ الجديدة هذه تتعامل بشكل أفضل مع reportFullyDrawn() للانتظار حتى يتم عرض المحتوى المقابل. (If3ac9، b/183129298)
  • تمت إضافة عمليات تحميل JvmOverloads إلى طرق متعدّدة لقياس أداء ثنائي النطاق لمتصلي Java. (I644fe، b/184546459)
  • توفير دالة PartialMetricRule.measureRepeated التي تستخدم Consumer<MacrobenchmarkScope> للاستخدام الاصطلاحي بلغة Java. (If74ab، b/184546459)

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

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

الإصدار 1.1.0-alpha07

1 أيلول (سبتمبر) 2021

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

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

  • تم رفع الحد الأدنى لواجهة برمجة التطبيقات إلى 21 لإظهار أدنى مستوى مطلوب لواجهة برمجة التطبيقات سيتم توفيره في المستقبل. يستمر إرسال واجهة برمجة التطبيقات min API الحالية عبر 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

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

  • تم تبديل startActivityAndCheck لاستدعاء التشغيل من خلال 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). تجدر الإشارة إلى أنّه يجب تنفيذ الاختبار لمدة كافية لتسجيل المقياس (لا ينتظر أمر startActivityAndشيل وقت reportFullyDrawn). (If1141، b/179176560)
  • تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم Ui في عمليات التتبُّع بما يزيد عن 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 (ملاحظة: قد يتطلّب الأمر تحديث المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 7.0.0 من إصدار Canary وإصدار Android Studio إلى Arctic Fox (2020.3.1) لمواصلة تسجيل ملفات الإخراج على الأجهزة المتأثّرة). (Icb039)
  • التخزين المؤقت لإعدادات الدعم في MeasurementPlugin (6be1c1، b/159804788)
  • إخراج ملف مبسّط: مفعّل تلقائيًا في دليل لا يتطلب requestLegacyExternalStorage=true (8b5a4d، b/172376362)
  • يتم إصلاح تحذيرات Logcat لطباعة المكتبة بشأن عدم العثور على سلسلة JIT في إصدارات النظام الأساسي التي لا تتوفّر بها. (I9cc63، b/161847393)
  • حلُّ مشكلة الحد الأقصى لتكرار جهاز القراءة. (I55c7a)

الإصدار 1.1.0-alpha01

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

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

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

  • مقياس التخصيص: تشغل مقاييس الأداء الآن مرحلة إضافية بعد مرحلة الإعداد والتوقيت، حيث يتم تسجيل أعداد التخصيص. يمكن أن تتسبب عمليات التخصيص في حدوث مشاكل في الأداء على الإصدارات القديمة من النظام الأساسي (تصبح 140 نانو ثانية في O، 8 ناقصات في الثانية في حرف M، ويتم قياسها في Nexus5X، مع قفل الساعات). يتم عرض هذا المقياس في إخراج وحدة تحكُّم "استوديو Android"، وكذلك في
  • إتاحة جمع البيانات: يمكنك الآن الحصول على بيانات تحليلية لأداء قياس الأداء، وذلك لفحص سبب بطء الرمز البرمجي. يتيح مقياس الأداء تسجيل تتبُّع الطريقة أو تحليل عيّنات الطريقة من أداة ART. يمكن فحص هذه الملفات باستخدام "المحلِّل" داخل "استوديو Android" باستخدام ملف > فتح.
  • يوفّر مكوّن Gradle الإضافي المعياري الآن إعدادات تلقائية لإجراء إعداد أسهل:
    • وقد تم ضبط testBuildType على إطلاق الإصدار تلقائيًا لتجنُّب استخدام التبعيات ذات تغطية الرمز المدمجة. تم أيضًا ضبط سمة BuildType الخاصة بالإصدار التلقائي كنوع الإصدار التلقائي، ما يتيح لاستوديو Android تحديد خيار الإصدار الصحيح تلقائيًا عند فتح مشروع لأول مرة. (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 المعياري

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 Studio أو من خلال عملية الدمج المستمر لملاحظة أداء الرموز البرمجية بمرور الوقت ولمنع أي تراجع.

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

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

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

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

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

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