مقياس الأداء

يمكنك قياس أداء الرمز البرمجي بدقّة في "استوديو Android".
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
30 تشرين الأول (أكتوبر) 2024 1.3.3 - - 1.4.0-alpha04

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

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

Macrobenchmark

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

Groovy

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

Kotlin

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

مقياس مصغّر

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

Groovy

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

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

Kotlin

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

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

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

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

Groovy

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

Kotlin

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

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

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

ملاحظات

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

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

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

الإصدار 1.4

الإصدار 1.4.0-alpha04

30 تشرين الأول (أكتوبر) 2024

تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 عمليات الربط هذه.

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

  • (ميزة تجريبية) تفعيل إنشاء ملف الأداء الأساسي وإجراء قياس الأداء للتطبيقات المثبَّتة لمستخدم ثانوي، مثل أي تطبيق على أجهزة Android Auto التي لا تتضمّن شاشة. تم اختبار هذه الميزة في بعض السيناريوهات، ولكن يُرجى إعلامنا إذا واجهت خطأً في حال لم تنجح هذه الميزة معك. (I9fcbe وb/356684617 وb/373641155)

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

  • يتم دائمًا إلغاء isProfileable في الإصدارات التي تستند إلى مقياس الأداء، كما يتم دائمًا تجاوز isDebuggable في كل من إصدار مقياس الأداء وnonMinified (التقاط الملف الشخصي المرجعي). (I487fa، وb/369213505)
  • إصلاح اكتشاف التجميع على بعض الأجهزة المادية قبل واجهة برمجة التطبيقات 28 - يؤثر في context.compilationMode في json، وكذلك سلوك androidx.benchmark.requireAot=true (الذي لم يعد يعرض بشكل غير صحيح) (Ic3e08، b/374362482)
  • في مقاييس CpuEventCounter، يجب طرح استثناء في حال رصد قياسات غير صالحة (مثلاً، instructions/cpucycles==0) (I8c503)

الإصدار 1.4.0-alpha03

16 أكتوبر 2024

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

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

  • مقاييس الأداء على مستوى النظام: تضيف ArtMetric، والتي يمكن استخدامها لفحص تغطية الملف الشخصي أو الأداء العام لـ Android RunTime. يتم تسجيل عدد عمليات الربط الديناميكي للوقت وإجمالي مدّتها وعمليات بدء الصف (حيثما كان ذلك متاحًا) والتأكّد من الصف. بالإضافة إلى ذلك، سيتم تغيير CaptureInfo ليتضمن إصدار ART الرئيسي الاختياري تلقائيًا. (I930f7)
  • أضِف coefficientOfVariation إلى إخراج Benchmark JSON لعرض الثبات خلال عملية تنفيذ مقياس أداء معيّن. (Ib14ea)

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

  • تم إصلاح CollectBaselineProfileTask عندما يحتوي جهاز AVD على مسافات. (Ia0225، b/371642809)
  • حلّ افتراضي للأخطاء الناتجة عن استثناءات StartupMode.COLD: Package <packagename> must not be running prior to cold start!. الآن، سينتظر MacrobenchmarkScope.killProcess() (بما في ذلك العملية التي يتم تشغيلها قبل كل تكرار، والتي تُستخدَم لتنفيذ سلوك StartupMode.COLD) للتأكّد من توقُّف جميع عمليات التطبيق عن العمل. (I60aa6، b/351582215)
  • تم إصلاح المشكلة التي كانت تؤدي إلى ظهور الخطأ UNLOCKED_ على بعض المحاكيات المزوّدة بإذن الوصول إلى الجذر. (Ic5117)
  • تستخدم هذه المكتبة الآن تعليقات توضيحية حول عدم تحديد قيمة لسمة JSpecify، وهي عبارة عن استخدام للنوع. على مطوّري Kotlin استخدام وسيطات برنامج التجميع التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict و-Xtype-enhancement-improvements-strict-mode (I7104f وb/326456246).

الإصدار 1.4.0-alpha02

2 أكتوبر 2024

تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 عمليات الربط هذه.

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

  • تم نقل مهام Gradle lockClocks وunlockClocks لتصبح في مشاريع قياس الأداء، بدلاً من أن تكون متاحة في المستوى الأعلى. كان هذا التغيير ضروريًا لأنّه لا تتوفّر طريقة لتسجيل هذه الإجراءات كإجراءات من المستوى الأعلى بدون إيقاف عزل المشروع. (I02b8f، b/363325823)

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

  • يجمع BaselineProfileRule الآن الملفات الشخصية للتطبيقات التي تستخدم عمليات متعددة من خلال إرسال إشارة إلى كل عملية قيد التشغيل في نهاية المجموعة لتفريغ الملفات الشخصية. وإذا لم تنجح عملية البث المستندة إلى ملف شخصي في ملف شخصي، لن تنجح هذه العملية، لأنّه من غير المتوقّع أن تتوفّر بيانات ملفها الشخصي. بالإضافة إلى ذلك، تمت إضافة وسيطة أداة للتحكّم في مدة انتظار تفريغ البيانات: androidx.benchmark.saveProfileWaitMillis (I0f519، b/366231469)
  • من الاختبار القياسي 1.3.2: تم إصلاح مشكلة تعذُّر "مركز الاختبار الافتراضي من Firebase" (FTL) في سحب ملفات نتائج "الملف الشخصي الأساسي" أو "الاختبارات المقياسية الكبرى" من "مكوّن Gradle الإضافي للملف الشخصي الأساسي". (I2f678، b/285187547)

لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة الملف الشخصي الأساسي في قالب المكوّن الإضافي، مع:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

بعد ذلك، عليك ضبط إعدادات "مركز الاختبار الافتراضي لمنصة Firebase" باستخدام ما يلي:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة الملف الشخصي الأساسية:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

الإصدار 1.4.0-alpha01

18 أيلول (سبتمبر) 2024

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

ميزة جديدة: إحصاءات حول بدء تشغيل التطبيقات

  • يمكن تفعيل الإصدار الأولي من إحصاءات بدء تشغيل التطبيق في أداة Macrobenchmark. (09fae38)

لتفعيلها في أحد مقاييس أداء الشركات الناشئة:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

بعد ذلك، سيؤدي تشغيل مقياس أداء بدء التشغيل إلى تحليل التتبّع بحثًا عن المشاكل الشائعة، ثم طباعتها بعد المقاييس في مخرجات اختبار "استوديو YouTube" في علامة التبويب "مقياس الأداء"، على سبيل المثال:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

لا تزال هذه الميزة قيد التطوير، وسيتم إجراء تحسينات على المستندات وإمكانية التوسيع في المستقبل، ولكن يُرجى إرسال ملاحظاتك.

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

  • تمت إضافة سمة gradle‏ androidx.baselineprofile.suppressWarnings لإيقاف جميع التحذيرات المتعلّقة بالملف الشخصي الأساسي. (314153a)
  • يتم الآن عرض مقاييس الميكروبات في آثار Perfetto كعدّادات. (3214854)
  • إضافة نصوص برمجية تجريبية لإيقاف jit (يتطلب الجذر / إعادة تشغيل بيئة التشغيل) وإعادة ضبط حالة الأداء/الاختبار للجهاز. لا يتم حاليًا نشر هذه المهام كمهام gradle. (7c3732b)
  • تمت إضافة مَعلمة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار automaticGenerationDuring، ستؤدي معايير الأداء أيضًا إلى إنشاء ملف تعريف أساسي. وسيتعذّر تنفيذ هذا الإجراء في حال استخدام المحاكيات. باستخدام الوسيطة الجديدة skipBenchmarksOnEmulator، يمكننا تخطّي الاختبار بدلاً من ذلك. (0c2ddcd)
  • تغيير منطق تفعيل حدث الأداء لتشغيله على الإصدار 23 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (2550048)

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

  • تم نقل وسيطة PerfettoConfig التجريبية الحالية إلى MacrobenchmarkRule.measureRepeated() إلى عنصر ExperimentalConfig الجديد.

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

  • زيادة عدد عمليات إعادة المحاولة lockClocks.sh (99e9dac)
  • لا تنشئ أنواع الإصدارات nonMinified وأنواع الإصدارات المرجعية إذا كانت متوفّرة. بسبب خطأ، سيتم إعادة إنشاء نوعَي الإصدار nonMinified و"الأداء المرجعي" حتى إذا كانا متوفّرين. (e75f0a5)
  • تجاهل الشرائح غير المنتهية من TraceSectionMetric نتيجة. (a927d20)
  • تم تحسين عملية التحقّق من المحاكي لأخذ بادئة sdk_ في الاعتبار. (1587de8)
  • يجب معاملة الحِزم غير المُشغَّلة على أنّها تمّت إزالتها في FrameTimingGfxInfoMetric. (35cc79c)
  • إصلاح androidx.benchmark.cpuEventCounter التي ينتج عنها قيم تالفة للأحداث التي لا تتضمّن تعليمات. (06edd59)
  • يجب حلّ مشكلة resumeTiming/runWithTimingDisabled للالتزام بترتيب أولوية المقياس، وتقليل تأثير الإيقاف المؤقت للمقاييس ذات الأولوية المنخفضة أو استئنافها في نتائج المقاييس ذات الأولوية الأعلى. على سبيل المثال، في حال استخدام مقاييس أداء وحدة المعالجة المركزية من خلال مَعلمة أداة القياس cpuEventCounter.enable، لن يتم تقليل وقتNs بشكل كبير عند حدوث الإيقاف المؤقت أو الاستئناف. (5de0968)

الإصدار 1.3

الإصدار 1.3.3

16 أكتوبر 2024

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

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

  • تم إصلاح CollectBaselineProfileTask عندما يحتوي جهاز AVD على مسافات (Ia0225 وb/371642809)

الإصدار 1.3.2

2 أكتوبر 2024

تم طرح androidx.benchmark:benchmark-*:1.3.2. يتضمّن الإصدار 1.3.2 عمليات الربط هذه.

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

  • تم إصلاح مشكلة تعذُّر سحب ملفات نتائج "ملف الأداء الأساسي" أو "اختبارات الأداء على مستوى التطبيق" من "مكوّن Gradle الإضافي لملف الأداء الأساسي" في "مركز الاختبار الافتراضي لمنصة Firebase". (I2f678، b/285187547)

لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة الملف الشخصي الأساسي في قالب المكوّن الإضافي، مع:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

بعد ذلك، عليك ضبط إعدادات "مركز الاختبار الافتراضي لمنصة Firebase" باستخدام ما يلي:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة الملف الشخصي الأساسي:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

الإصدار 1.3.1

18 أيلول (سبتمبر) 2024

تم طرح androidx.benchmark:benchmark-*:1.3.1. يتضمّن الإصدار 1.3.1 عمليات الربط هذه.

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

  • تمت إضافة سمة Gradle androidx.baselineprofile.suppressWarnings لإيقاف جميع تحذيرات الملف الشخصي الأساسية (I7c36e، وb/349646646).
  • تم إصلاح مكوّن Gradle الإضافي لملف الإصدار الأساسي لاستخدام nonMinified… وbenchmark… الحاليَين إذا أنشأهما التطبيق بدلاً من إنشاء ملفّات لفّ. (Ia8934، b/361370179)
  • تم إصلاح java.lang.AssertionError: ERRORS (not suppressed): EMULATOR عند تفعيل automaticGenerationDuringBuild على المحاكيات. يتم استخدام وسيطة جديدة لتخطي الاختبار بدلاً من ذلك. (If3f51، b/355515798)
  • تصغير اختبارات الأداء الدقيقة - يجب الاحتفاظ بالفئات الفرعية من org.junit.runner.notification.RunListener في مكتبة اختبار الأداء proguard (Ic8ed5، b/354264743)
  • يجب إصلاح TraceSectionMetric لتجاهل الشرائح غير المنتهية. في السابق، كان يُعتبَر أنّ هذه المقاطع لها مدة -1، مثلاً أثناء التجميع أو عند البحث عن الحد الأدنى للمدة. (If74b7)
  • تم إصلاح مشكلة في FrameTimingGfxInfoMetric كانت تتسبّب في تعطُّل بدء المقياس إذا لم تكن العملية قيد التشغيل. (I6e412)

الإصدار 1.3.0

21 آب (أغسطس) 2024

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

التغييرات في اختبارات الأداء الدقيقة منذ الإصدار 1.2.0

  • يكون تتبُّع الأساليب مفعّلاً تلقائيًا في اختبارات الأداء الدقيقة عند تشغيلها على معظم الأجهزة
    • يتم تنفيذ تتبُّع الإجراءات كمرحلة منفصلة بعد إجراء عمليات القياس، ما يتيح الحصول على نتائج قياس دقيقة وتتبُّع أداء في الوقت نفسه من عملية واحدة لقياس الأداء.
    • سيؤثّر تتبُّع الطريقة في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. في هذه الإصدارات، يكون تتبُّع الطريقة غير مفعّل تلقائيًا ويتم طباعة تحذير في مخرجات "استوديو Android".
  • مقاييس الأداء لسلسلة التعليمات الرئيسية وأخطاء ANR
    • تمت إضافة measureRepeatedOnMainThread لمقاييس أداء سلاسل واجهة المستخدم (مثل تلك التي تتفاعل مع واجهات المستخدم في Compose/View)، وذلك لتجنُّب أخطاء ANR عند تشغيلها لعدة ثوانٍ.
    • يتم تخطّي عمليات تتبُّع الطريقة إذا كان من المتوقّع أن يتم تجاوز الموعد النهائي لتجنُّب أخطاء ANR. اضبط androidx.benchmark.profiling.skipWhenDurationRisksAnr على خطأ لإيقاف هذا السلوك (لا يُنصح به لإجراء عمليات دمج مستمر، لأنّ أخطاء ANR يمكن أن تتسبب في حدوث مشكلة في عمليات الدمج المستمر الطويلة).
  • تصغير حجم الملفات
    • قواعد Proguard المضمّنة لتحسين اختبارات الأداء الدقيقة مع تفعيل التصغير
    • يتطلب تصغير/R8 في وحدة مكتبة استخدام AGP 8.3، ويمكن تفعيله من خلال android.buildTypes.release.androidTest.enableMinification في build.gradle
    • تمت إضافة واجهة برمجة التطبيقات التجريبية BlackHole.consume() لمنع إزالة الرموز غير الصالحة (If6812، b/286091643)
  • المقاييس
    • ميزة تجريبية لعدّاد أحداث وحدة المعالجة المركزية (CPU) (مقاييس من perf_event_open، تتطلّب الجذر في معظم إصدارات النظام الأساسي)، وإمكانية الوصول عبر InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (يمكن ضبطها على true)، ويمكن ضبط androidx.benchmark.cpuEventCounter.events على سبيل المثال على (Instructions,CpuCycles). من المفترض أن تكون هذه الميزة متاحة على بعض أدوات محاكاة تصحيح أخطاء المستخدم، ولكن لم يتم اختبار التوافق على جميع أدوات المحاكاة المتاحة.

تغييرات MACRObenchmark منذ الإصدار 1.2.0

  • طريقة التتبع الشامل للمقاييس الكبيرة.
    • يتم الآن حصر عمليات تتبُّع الطريقة بمدة measureBlock، ويمكنها تسجيل جلسات متعددة إذا بدأت العملية عدة مرات.
    • في السابق، كان تتبُّع الطريقة يعمل فقط مع معايير StartupMode.COLD، ولم يكن يُسجِّل أي بيانات عن measureBlocks التي لم تُعيد تشغيل العملية المستهدَفة.
    • تم إصلاح مشكلة تفريغ عمليات تتبُّع الطرق في اختبار الأداء على مستوى التطبيق، بحيث يتم تسجيل عمليات تتبُّع الطرق بالكامل وتكون صالحة، حتى على الأجهزة البطيئة. (I6349a، b/329904950)
  • تفريغ ملف تعريف ART بشكل صحيح أثناء عمليات تكرار warmUp الفردية عند إنهاء العملية لتكون قياسات CompilationMode.Partial(warmup=N) أكثر دقة (I17923)
  • رسالة تعذّر بث برنامج Drop Shader
    • تمت إضافة اقتراحات تصحيح الأخطاء لرسالة تعذُّر بث أداة التظليل.
    • أضِف مَعلمتَي أدوات قياس الأداء لإلغاء سلوك إسقاط شادر لحلّ المشاكل المتعلّقة بالأعطال عند قياس أداء التطبيقات التي لا تتضمّن ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : يمكن استخدام هذه السمة لتخطّي كل حالات إسقاط أداة تظليل الملفات (بما في ذلك تلك التي تمّت في عمليات إطلاق StartupMode.Cold)، لا سيّما عند قياس الأداء على التطبيقات التي لا تستخدم الإصدار 1.3 من أداة تثبيت الملف الشخصي حتى الآن.
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
  • تمت إضافة خيار MacrobenchmarkRule#measureRepeated تجريبي يستخدِم PerfettoConfig مخصّصًا لتسجيل عمليات تتبُّع Perfetto المخصّصة بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر استخدام فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384)
  • يمكنك إلغاء مهام dexopt في الخلفية قبل تشغيل مقياس طلبك الأساسي للحد من التداخل. (I989ed)
  • ينتظر تطبيق Macrobenchmark الآن لمدة ثانية واحدة حتى يُفرِغ التطبيق المستهدَف ملف تعريف ART (كان ينتظر في السابق لمدة 500 ملي ثانية). (I85a50، b/316082056)
  • إعادة هيكلة TraceSectionMetric
    • ملاحظة: TraceSectionMetric يمكن أن تؤثّر التغييرات أدناه في النتائج عند استخدام عملية التكامل المستمر، وقد تؤدي إلى حدوث انقطاعات أو إيقاف التحليل.
    • أصبح "المجموع" الإعداد التلقائي الآن، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة، وسيؤدي ذلك إلى تجاهل البيانات في هذه الحالات.
    • تم تغييره ليصبح أكثر تخصيصًا، مع توفير المزيد من الأوضاع
    • تمّت الآن تضمين أسماء الأوضاع في اسم إخراج المقياس (في Studio وJSON).
    • تتيح الآن شرائح تم إنشاؤها باستخدام Trace.{begin|end}AsyncSection.
  • المقاييس
    • الطاقة: تمت إضافة PowerMetric.deviceSupportsHighPrecisionTracking وPowerMetric.deviceBatteryHasMinimumCharge() وPowerMetric.deviceSupportsPowerEnergy()
    • تمت إعادة تسمية Metric.getResult إلى getMeasurements لمطابقة نوع الإرجاع
    • تمت إضافة Log.w / تصنيفات الاستثناء إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذلك يتم طرح بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بصمت)، بل يجعله أكثر وضوحًا. بشكل عام، إنّ التطبيقات التي Log.w() ولا تسجّل مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بالإطارات، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت عرض اللقطات (من شرائح واجهة المستخدم/وقت الاستجابة). (Id240f، b/329145809)
    • تمت إضافة قياس frameCount إلى FrameTimingMetric للمساعدة في اكتشاف السيناريوهات التي تتغيّر فيها القياسات بسبب تغيّر عدد اللقطات التي تم إنشاؤها (تمّت إضافة صور متحركة جديدة وحلّ مشاكل عدم الصلاح). (I1e5aa)
    • تمت إضافة توضيح بأنّ frameOverrunMs هو المقياس المفضّل للتتبُّع عندما يكون متاحًا في "مستندات Google"، والسبب وراء ذلك. (I18749، b/329478323)
    • إصلاح مشكلة تؤدي إلى إقران الإطارات غير المنتهية في بداية التتبُّع ونهايته معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح كإطار واحد طويل جدًا (I39353، b/322232828)
    • يتم تحسين خطأ FrameTimingMetric في حال عدم إنشاء الإطارات، وإرسال رابط الإخراج دائمًا للتتبّع في حال تعذّر تحليل المقاييس للمساعدة في تشخيص المشكلة. (I956b9)
    • تم إصلاح العُطل في FrameTimingMetric الذي يتعذّر عليه تحليل معرّف اللقطة، خاصةً على بعض أجهزة المصنّعين الأصليين للأجهزة. (Ia24bc، b/303823815، b/306235276)
    • تم تخفيف التشدّد في عمليات التحقّق في FrameMetrics، وتمّت إضافة المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)

تغييرات أداة إنشاء الملف الشخصي الأساسي / مكوّن Gradle الإضافي منذ الإصدار 1.2.0

  • تمت زيادة الحد الأقصى الموصى به لإصدار AGP إلى 9.0.0-alpha01.
  • تأكَّد من أنّ مهام mergeArtProfile وmergeStartupProfile تنتظر دائمًا إنشاء الملف الشخصي الأساسي. (I623d6، b/343086054)
  • سيؤدي إنشاء ملف تعريف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8، b/269484510).
  • تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
  • حلّ مشكلة عدم استخدام معايير الأداء للملفات الشخصية الأساسية التي تم إنشاؤها عندما يكون الخيار automaticGenerationDuringBuild غير مفعّل (Ic144f، b/333024280)
  • يجب إصلاح عمليات إلغاء سمات "مكوّن إضافي لـ Gradle" في BaselineProfile لتفعيل إنشاء الملف الشخصي الأساسي وإجراء قياس الأداء عند تخصيص نوع الإصدار nonMinified أو قياس الأداء. (Ib8f05، b/324837887)
  • تم إصلاح مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في حزمة AAR قبل الإصدار AGP 8.3.0-alpha15. (I1d2af، b/313992099)
  • تم إصلاح عنوان URL لملف الإصدار الأساسي وملف الإعدادات المبدئية في نهاية مهمة الإنشاء. (I802e5، b/313976958)

التغييرات الأخرى المهمة منذ 1.2.0

  • تسجيل عمليات التتبّع
    • تم تقليل خطأ EXITCODE 2 عند بدء تشغيل perfetto من خطأ إلى تحذير مسجَّل
    • تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلب واجهة برمجة التطبيقات 28) (Ia0af2، b/341852305)
    • يمكنك تفعيل تتبُّع علامة المنفذ تلقائيًا في مقاييس الأداء. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
    • زيادة مهلة بدء عملية تسجيل التتبُّع لتجنُّب حدوث أعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841 وb/329145808)
    • تمت إضافة واجهات برمجة التطبيقات PerfettoTraceProcessor.Session.queryMetrics العامة التي تتضمّن صيغ JSON وtextproto وproto binary (غير مفكَّكة). تتيح لك هذه المقاييس طلب مقاييس مضمّنة في TraceProcessor (I54d7f وb/304038382).
    • يمكنك تفعيل حظر البداية في سجلّ تتبُّع Perfetto لتقليل خطر فقدان البيانات في بداية التتبُّع. لا تتوفّر هذه الميزة إلا مع الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
  • إخراج JSON
    • تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
      • context.artMainlineVersion: الإصدار الصحيح لوحدة Art الرئيسية (إذا كانت متوفّرة على الجهاز، -1 في حال عدم توفّرها)
      • context.build.id - يساوي android.os.Build.ID
      • context.build.version.codename - يساوي android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename: يشير إلى الحرف الأول من الاسم الرمزي للإصدار التجريبي (بما في ذلك إصدارات الإصدار) (Ie5020)
    • تمت إضافة قائمة profilerOutput إلى إخراج JSON لتسهيل استخدام الأدوات المتعلّقة بعمليات تتبُّع الأداء (مثل Perfetto، وتتبُّع الطرق) (I05ddd، b/332604449)
    • تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON الناتجة لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
    • يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)

الإصدار 1.3.0-rc01

7 آب (أغسطس) 2024

تم إصدار androidx.benchmark:benchmark-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 عمليات الربط هذه.

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

  • إصلاح androidx.benchmark.cpuEventCounter التي تنتج قيمًا تالفة للأحداث التي لا تتضمّن تعليمات (I7386a، b/286306579)
  • يجب إصلاح resumeTiming/runWithTimingDisabled للالتزام بترتيب أولوية المقياس، والحدّ بشكل كبير من تأثير إيقاف/استئناف المقياس ذي الأولوية الأقل على نتائج المقياس ذي الأولوية الأعلى. على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية (cpu) من خلال وسيطة أداة cpuEventCounter.enable، لن تنخفض قيمتا timeN بشكلٍ كبير عند حدوث الإيقاف المؤقت/الاستئناف. (I39c2e وb/286306579 وb/307445225)
  • تم تقليل احتمالية حدوث تحليل تسلسل استدعاء الدوال البرمجية الذي يتسبب في عدم بلوغ measureRepeatedOnMainThread الحدّ الأقصى لمدة مهلة سلسلة التعليمات الرئيسية من خلال نقل تحويل تحليل تسلسل استدعاء الدوال البرمجية من سلسلة التعليمات الرئيسية. (I487a8، b/342237318)
  • تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
  • تمت إضافة عملية التحقّق من إصدار agp لإرسال اسم الحزمة كوسيطة instr. في الإصدارات الأقدم من AGP 8.4.0، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق القياس من خلال مَعلمات القياس. (0c72a3f)

الإصدار 1.3.0-beta02

10 تموز (يوليو) 2024

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

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

  • يجب التعامل مع EXITCODE 2 بسلاسة عند بدء Perfetto لتسجيل تحذير، ثم المتابعة.

الإصدار 1.3.0-beta01

12 يونيو 2024

تم إصدار androidx.benchmark:benchmark-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 عمليات الربط هذه.

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

  • تمت إعادة تسمية MethodTracing.affectsMeasurementOnThisDevice إلى AFFECTS_MEASUREMENT_ON_THIS_DEVICE للحفاظ على الاتساق. (I1bdfa)
  • تمت إضافة واجهة برمجة تطبيقات BlackHole.consume() التجريبية لمنع إزالة الرموز غير الصالحة في مقاييس الأداء الدقيقة. (If6812، b/286091643)
  • سيتم الآن طرح اختبار الأداء المجهري بشكل صحيح لمنع تداخل تتبُّع الطريقة مع القياسات. يحدث ذلك على أجهزة معيّنة عند فرض تفعيل تتبُّع الطريقة (من خلال وسيطات أداة القياس أو MicrobenchmarkConfig)، وفي حال محاولة إجراء قياس بعد تتبُّع طريقة. تعمل الأجهزة المتأثّرة بالإصدار 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها أثناء التشغيل من خلال ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92، وb/303660864)

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

  • تم رفع الحد الأقصى لإصدار agp إلى 9.0.0-alpha01. (I5bbb0)
  • تمت إضافة وضع الترجمة إلى سياق الأداء المرجعي (If5612، b/325512900)
  • تفعيل تتبُّع AIDL تلقائيًا (يتطلب الإصدار 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
  • تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
    • context.artMainlineVersion: الإصدار الصحيح لمحطة Art الرئيسية (إذا كان متوفّرًا على الجهاز، -1 بخلاف ذلك)
    • context.build.id - يساوي android.os.Build.ID
    • context.build.version.codename يساوي android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار التجريبي (حتى في إصدارات الإصدار) (Ie5020)
  • إصلاحات في StackSampling لتلبية متطلبات androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • غيِّر macro->common dependency ليصبح api()، لتسهيل استخدامها، مثل PerfettoTrace وPerfettoConfig. (Icdae3, b/341851833)
  • تأكَّد من أنّ مهام mergeArtProfile وmergeStartupProfile تنتظر دائمًا إنشاء الملف الشخصي الأساسي. (I623d6، b/343086054)
  • يجب مراعاة حالة تفعيل السعر المتغير عند تحديد ما إذا كان يجب تفعيله. (I5d19e، b/343249144)
  • تمت زيادة مهلة البدء التلقائية لمعالج تتبُّع الأداء. (I87e8c، b/329145808)

الإصدار 1.3.0-alpha05

14 أيار (مايو) 2024

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

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

  • طرح استثناء أوضح عندما يعرض مقياس macrobench قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
  • تمّت إضافة قواعد حلول بديلة إلى قواعد Proguard في microbench، بما في ذلك التوافق مع قواعد المستمعين والتحذيرات أو الأخطاء الأخرى التي تم رصدها. (I14d8f، b/329126308، b/339085669)
  • يتمّ تشغيل ميزة تتبُّع الإجراءات كمرحلة منفصلة أثناء إجراء اختبار قياس الأداء على مستوى التطبيق، ولم تعُد تؤثر في القياسات. (If9a50 وb/285912360 وb/336588271)
  • تمت إضافة اقتراحات إضافية لتصحيح الأخطاء في رسالة تعذُّر بث برنامج التظليل. (I5efa6، b/325502725)

الإصدار 1.3.0-alpha04

1 مايو 2024

تم إصدار androidx.benchmark:benchmark-*:1.3.0-alpha04. يتضمّن الإصدار 1.3.0-alpha04 عمليات الربط هذه.

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

  • تمت إضافة صيغة MacrobenchmarkRule#measureRepeated التجريبية التي تتطلب PerfettoConfig مخصّصًا لتسجيل تتبُّع Perfetto المخصّص بالكامل. تجدر الإشارة إلى أنّ الإعدادات التي تمّ ضبطها بشكل غير صحيح قد تؤدّي إلى تعذُّر تنفيذ فئات المقاييس المضمّنة. (Idfd3d، وb/309841164، وb/304038384)
  • إعادة تسمية PowerMetric.deviceSupportsPowerEnergy إلى PowerMetric.deviceSupportsHighPrecisionTracking لزيادة الوضوح (I5b82f)
  • تمت إضافة PowerMetric.deviceBatteryHasMinimumCharge() وPowerMetric.deviceSupportsPowerEnergy() لتفعيل تغيير مقاييس الأداء أو تخطّيها استنادًا إلى قدرة الجهاز على قياس الطاقة. (I6a591، b/322121218)

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

  • تمت إضافة مقارنة بالملف الشخصي الأساسي السابق (I824c8، b/269484510)
  • تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، وb/331237001).
  • تمّ تغيير الاستثناء لسجلّ المعلومات عندما تكون خيارات قياس الأداء غير مفعَّلة (I8a517 وb/332772491).
  • يمكنك تبسيط عملية تسجيل عمليات تتبُّع الطرق لاختبارات الأداء على مستوى التطبيق، وذلك من خلال حصر النطاق بمدة measureBlock() الفعلية. في السابق، بدأ التطبيق عند إطلاق العملية المستهدفة ولم يعُد متوافقًا إلا مع التشغيل على البارد (Iee85a وb/300651094).
  • تجنُّب العُطل عندما يكون معالج بيانات التتبُّع بطيئًا في البدء (I98841، b/329145808)

الإصدار 1.3.0-alpha03

17 أبريل 2024

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

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

  • تتم إضافة واجهات برمجة تطبيقات PerfettoTraceProcessor.Session.queryMetrics العامة لواجهة برمجة التطبيقات مع صيغ JSON وtextproto وProto الثنائية (التي لم يتم فك ترميزها). يتيح لك ذلك طلب البحث عن المقاييس المضمّنة في TraceProcessor (I54d7f وb/304038382).
  • تمت إضافة profilerOutput إلى إخراج JSON لتسهيل استخدام الأدوات في تتبُّع عمليات التحليل (مثل perfetto وتتبُّع الأساليب). (I05ddd، b/332604449)
  • تمت إضافة علامة الطاقة إلى إعدادات Perfetto لقياس الأداء. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
  • تمت إضافة وسيطة التثبيت androidx.benchmark.profiling.skipWhenDurationRisksAnr، ويمكن ضبطها على "خطأ" لتجنُّب تخطّي عمليات تتبُّع الطُرق عندما قد تتسبب المدة المتوقّعة في حدوث خطأ ANR. ويُنصح بشدة بتجنُّب هذا الخطأ أثناء عمليات تشغيل ميزة CI.
  • تمت إضافة وسيطة التثبيت التجريبية androidx.benchmark.profiling.perfCompare.enable، واضبط هذه القيمة على "صحيح" لتنفيذ توقيت المقارنة بين مرحلتي القياس ووضع الملفات الشخصية. ويكون هذا مفيدًا، على سبيل المثال في تقييم النفقات العامة لتتبُّع الأساليب. (I61fb4، وb/329146942)

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

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

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

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

الإصدار 1.3.0-alpha02

20 مارس 2024

تم إصدار androidx.benchmark:benchmark-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 عمليات الربط هذه.

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

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

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

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

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

الإصدار 1.3.0-alpha01

21 شباط (فبراير) 2024

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

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

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

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

  • تم تحسين رسالة الخطأ في المكوّن الإضافي gradle لملف الإصدار الأساسي عندما لا يتوفّر الجهاز المُدار المحدّد (Idea2b، b/313803289)
  • إصلاح لتضمين الملفات الشخصية الأساسية للمكتبة في حِزم AAR قبل الإصدار AGP 8.3.0-alpha15 (I1d2af، b/313992099)
  • تمّ إصلاح عنوان URL لملفّ القاعدة والملفّ الشخصي لبدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
  • تم تعديل مهلات مصدر البيانات لمحاولة إصلاح java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d، b/323601788)
  • أضِف مَعلمتَي أدوات قياس الأداء لإلغاء سلوك إسقاط شادر لحلّ المشاكل المتعلّقة بالأعطال عند قياس أداء التطبيقات التي لا تتضمّن ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : يمكن استخدام هذه السمة لتخطّي كل حالات إسقاط أداة تظليل الملفات (بما في ذلك تلك التي تمّت في عمليات إطلاق StartupMode.Cold)، لا سيّما عند قياس الأداء على التطبيقات التي لا تستخدم الإصدار 1.3 من أداة تثبيت الملف الشخصي حتى الآن.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
  • تخطّي تتبُّع الطريقة في سلسلة مهام واجهة المستخدم عندما يكون من المتوقّع أن يستغرق ذلك وقتًا أطول من بضع ثوانٍ، وتتبُّع طريقة التنظيف عند طرح الأخطاء (I6e768)
  • يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)
  • إصلاح مشكلة تؤدي إلى إقران الإطارات غير المنتهية في بداية التتبُّع ونهايته معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح كإطار واحد طويل جدًا (I39353، b/322232828)
  • استخدِم --skip verification على الإصدار 30 من "واجهة برمجة التطبيقات" والإصدارات الأحدث عند إعادة تثبيت حزمة على الإصدار 30 إلى 33 من "واجهة برمجة التطبيقات" لمحو ملفات ART الشخصية على إصدارات المستخدمين. ويساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تؤدي إلى أعطال في بعض فئات الأجهزة. (Ic9e36)
  • استخدِم am force-stop لإغلاق التطبيقات التي لا تُعدّ تطبيقات نظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. (I5e028)
  • ينتظر "اختبار الأداء على مستوى النظام" الآن 1 second حتى يُفرِغ التطبيق المستهدَف ملف تعريف ART (في السابق، كان ينتظر 500 ms). (I85a50، b/316082056)
  • تحسين خطأ FrameTimingMetric عند عدم إنشاء اللقطات، وعرض رابط للتتبّع دائمًا عند تعذُّر تحليل المقياس للمساعدة في تشخيص المشكلة (I956b9)
  • تم إصلاح عُطل في FrameTimingMetric تعذُّر تحليل رقم تعريف الإطار، خاصةً على بعض أجهزة المصنّع الأصلي للجهاز. (Ia24bc، b/303823815، b/306235276)
  • تم تخفيف صرامة عمليات التحقّق في FrameMetrics، وإضافة المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)

الإصدار 1.2

الإصدار 1.2.4

17 نيسان (أبريل) 2024

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

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

  • إصلاح عدم إعداد مجموعة srcset للملف الشخصي الأساسي في الصيغ المرجعية يتم أيضًا إصلاح automaticGenerationDuringBuild في المكتبات التي تتسبب في تبعية دائرية. (I28ab7، b/333024280)
  • يمكنك استخدام am force-stop لإنهاء التطبيقات عندما لا تكون تطبيقات نظام، مثل "واجهة مستخدم النظام" أو "مشغّل التطبيقات". يعالج هذا الإجراء تعطُّل معايير StartupMode.COLD بسبب ظهور الخطأ "يجب ألا تكون الحزمة $package قيد التشغيل قبل التشغيل على البارد" بسبب عدم نجاح عملية إنهاء العملية بالكامل. (I5e028)

الإصدار 1.2.3

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

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

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

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

الإصدار 1.2.2

1 كانون الأول (ديسمبر) 2023

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

الملفات الشخصية للمرجع

  • ستعرض سجلات التنفيذ مسار ملف الإخراج الخاص بالملف الشخصي الأساسي على أنّه معرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).

الإصدار 1.2.1

15 تشرين الثاني (نوفمبر) 2023

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

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

  • تم تحسين رسالة الخطأ عندما يوقف المستخدم خيارات الاختبار (b/307478189).
  • إضافة مواقع تتيح دمج عمليات الاختبار في AS (b/309805233)، (b/309116324)

الإصدار 1.2.0

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

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

التغييرات المهمة منذ الإصدار 1.1.0

الملفات الشخصية للمرجع

  • يعمل مكوّن Gradle الإضافي الجديد لملف القاعدة على أتمتة عملية تسجيل ملفات القاعدة الأساسية وتضمينها في سير عمل الاختبار والإنشاء.
  • BaselineProfileRule.collect أصبحت الآن مستقرة، وهي إصدار مبسّط ومُحسَّن من واجهة برمجة التطبيقات التجريبية السابقة BaselineProfileRule.collectBaselineProfile
    • ما عليك سوى تحديد packageName وزيادة عدد عمليات تنزيل تطبيقك.
  • بالنسبة إلى المكتبات التي تنشئ الملفات الشخصية الأساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز البرمجي (الوسيطة BaselineProfileRule.collect) أو بشكل أبسط في المكوّن الإضافي gradle.
  • الإصلاحات
    • تم إصلاح عملية جمع الملف الشخصي الأساسي على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث (Id1392، b/277645214)

Macrobenchmark

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

    • إتاحة وسيطة أداة androidx.benchmark.dryRunMode.enable، (متوفّرة حاليًا في مقياس الأداء المصغَّر) لعمليات التحقّق من الصحة بشكل أسرع (مثلاً عند إنشاء مقياس الأداء أو في الإرسال المسبق)
    • يتوفّر الدعم لتطبيقَي androidx.benchmark.profiling.mode=StackSampling وMethodTracing.
    • تمت إضافة androidx.benchmark.enabledRules للسماح باختبارات قاعدة ملف الأداء الأساسي للفلترة أثناء التشغيل مقارنةً باختبارات قاعدة الأداء الإجمالي.
    • تمت إضافة الوسيطة androidx.benchmark.perfettoSdkTracing.enable لتفعيل التتبّع باستخدام tracing-perfetto، مثل تتبّع إعادة ابتكار الإنشاء. يُرجى العِلم بأنّه عند استخدام السياسة مع StartupMode.COLD، سيتأثر التوقيت بشكل كبير، حيث يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
  • المتطلبات

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

    • تمت إضافة 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 Studio
    • تم إصلاح مشكلة تعذُّر طباعة التحذيرات في مخرجات اختبارات الأداء في Android Studio.
    • تم إصلاح مشكلة تعطُّل SampledProfiling على الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث.
    • تحسين أداء dryRunMode بشكل كبير من خلال تخطّي IsolationActivity وتتبُّع Perfetto (وضع التشغيل التجريبي أسرع بـ 10 أضعاف على إصدارات نظام التشغيل الأقدم)

الإصدار 1.2.0-rc02

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

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

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

  • إصلاح مخرجات ملف الأداء لمنع إيقاف BaselineProfile نسخ ملفات المكوّنات الإضافية تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بحيث لا تظهر لمكوّن gradle الإضافي. (I8dbcc، b/303034735، b/296453339)
  • تم توضيح رسائل خطأ تحميل tracing-perfetto عند إدخال وحدة قياس أداء الماكرو في التطبيق المستهدف.

الإصدار 1.2.0-rc01

20 أيلول (سبتمبر) 2023

تم إصدار androidx.benchmark:benchmark-*:1.2.0-rc01. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.

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

  • تم الآن تطبيق استثناء (مع تعليمات الانتصاف) عند تعذُّر إكمال تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في مقياس أداء. (I6c878، b/286228781)
  • إصلاح تعطُّل OOM عند تحويل تتبع طريقة ART -> تنسيق perfetto (I106bd، b/296905344)
  • (Macrobenchmark) تم توضيح تصنيف تتبُّع الطريقة عند ربطه في إخراج اختبار Studio، وتم إصلاح أسماء ملفات تتبُّع الطريقة لتكون فريدة على الجهاز أو المضيف، حتى لا يتم استبدالها عند تنفيذ أكثر من معيار أداء واحد. (I08e65، b/285912360)
  • يضمن أنّ الجهاز في وضع التشغيل عند التقاط ملف تعريف أساسي. (I503fc)

الإصدار 1.2.0-beta05

30 آب (أغسطس) 2023

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

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

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

الإصدار 1.2.0-beta04

23 آب (أغسطس) 2023

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

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

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

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

  • يمكنك إصلاح حالات تعذُّر كتابة الملفات أو نقلها أو استرجاعها (خاصةً تلك الواردة من الاختبارات المُستخدِمة للمَعلمات) من خلال تنظيف أسماء ملفات الإخراج بشكلٍ أكبر، وتجنُّب استخدام "=" و":" في أسماء ملفات الإخراج. (I759d8)

الإصدار 1.2.0-beta03

9 آب (أغسطس) 2023

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

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

  • تمت إضافة مَعلمة لفلترة TraceSectionMetric على الحزمة المستهدَفة فقط، وهي مفعَّلة تلقائيًا (Ia219b، b/292208786)

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

  • تمت إعادة تسمية وسيطة أداة fullTracing.enable إلى perfettoSdkTracing.enable لتحقيق الاتساق مع اسم العنصر والمراجع الأخرى. سيستمر fullTracing.enable في العمل كخيار احتياطي. (I7cc00)
  • ستظهر الآن نقاط التتبّع الداخلية لمكتبة قياس الأداء (بما في ذلك تتبُّع حلقة/مرحلة قياس الأداء الصغير) في عارض تتبُّع نظام Studio، وستتم تجميعها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
  • تمّت إزالة خطأ "لا يمكن إنشاء ملف شخصي" في اختبار الأداء على مستوى النظام على الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث، وتمّ تخطي التحقّق من إمكانية إنشاء ملف شخصي على الأجهزة المزوّدة بإذن الوصول إلى الجذر في وضعَي eng/userdebug. (I2abac، b/291722507)
  • عند استخدام ميزة "تحسينات تنسيق Dex"، تُعتبر قواعد الملف الشخصي لبدء التشغيل الآن أيضًا قواعد الملف الشخصي الأساسية. (aosp/2684246، b/293889189)

الإصدار 1.2.0-beta02

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

تم إصدار androidx.benchmark:benchmark-*:1.2.0-beta02. يحتوي الإصدار 1.2.0-beta02 على هذه المراجعات.

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

  • تمت إضافة واجهات برمجة تطبيقات تجريبية للمقاييس المخصّصة وإعدادات اختبار الأداء الصغير (مثل أداة تحليل الأداء وتتبُّع الأحداث). (I86101، b/291820856)

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

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

الإصدار 1.2.0-beta01

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

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

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

  • إصلاح التحذيرات التي يتم إيقافها أحيانًا في مخرجات "مقاييس الأداء" في "استوديو YouTube"، وحلّ بديل للمسافات البيضاء البادئة من ناتج مقياس الأداء الذي لا تظهر في "استوديو YouTube" (Ia61d0 وb/227205461 وb/286306579 وb/285912360)
  • تمّ إصلاح تعليق FrameTimingMetric. اسم المقياس الفرعي هو frameDurationCpuMs. (Ib097f، b/288830934).

الإصدار 1.2.0-alpha16

‫21 حزيران (يونيو) 2023

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha16. يحتوي الإصدار 1.2.0-alpha16 على هذه المراجعات.

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

  • تمت إعادة تسمية واجهة برمجة التطبيقات BaselineProfileRule.collectBaselineProfile() إلى BaselineProfileRule.collect(). (I4b665)

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

  • إتاحة اختبارات الأداء على مستوى التطبيق لنظام التشغيل androidx.benchmark.profiling.mode = MethodTracing (I7ad37، b/285912360)
  • تم نقل ميزة تحليل الأداء باستخدام مقاييس الأداء الدقيقة إلى مرحلة منفصلة، لذا يتم تنفيذها تسلسليًا بعد القياس بدلاً من استبداله. يتم أيضًا تضمين أقسام تتبُّع MethodTracing في عملية تتبُّع Perfetto التي تم تسجيلها، في حال توفّرها. (I9f657، b/285014599)
  • أضِف قياس عدد القيم إلى TraceSectionMetric باستخدام Mode.Sum. (Ic121a، b/264398606)

الإصدار 1.2.0-alpha15

7 حزيران (يونيو) 2023

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha15. يحتوي الإصدار 1.2.0-alpha15 على هذه المراجعات.

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

  • تمت إضافة MemoryUsageMetric تجريبي لتتبُّع استخدام الذاكرة في تطبيق مستهدف. (I56453، b/133147125، b/281749311)
  • يمكنك إضافة دعم لإعدادات Perfetto المخصّصة بالكامل باستخدام PerfettoTrace.record (If9d75، وb/280460183).
  • تمت إضافة خاصيّة لتخطّي إنشاء الملف الشخصي الأساسي. الاستخدام: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration (I37fda، b/283447020)

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

  • تنشئ واجهة برمجة التطبيقات collectBaselineProfile دائمًا ملفات أساسية ثابتة. تمّت إزالة واجهة برمجة التطبيقات collectStableBaselineProfile ويجب استخدام collectBaselineProfile بدلاً منها. (I17262، b/281078707)
  • تم تغيير الوسيطة filterPredicate في BaselineProfileRule إلى قيمة غير صفرية، مع قيمة تلقائية مكافئة حتى يصبح سلوك الفلتر التلقائي أكثر وضوحًا في المستندات. (I3816e)

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

  • يمكنك إيقاف IsolationActivity وميزة تتبُّع Perfetto في dryRunMode لتحسين الأداء بشكل كبير، لأنّ هذه الميزات كانت تستغرق معظم وقت التشغيل. (Ie4f7d)
  • إتاحة تحليل عيّنات تسلسل استدعاء الدوال البرمجية في اختبارات الأداء على مستوى التطبيق باستخدام مَعلمتَي اختبار الأدوات androidx.benchmark.profiling.mode=StackSampling وandroidx.benchmark.profiling.sampleFrequency (I1d13b، b/282188489)
  • إصلاح الأعطال عند إسقاط ملفات تظليل على نظام التشغيل Android U (واجهة برمجة التطبيقات 34) وعلى المحاكيات (I031ca، b/274314544)

الإصدار 1.2.0-alpha14

3 أيار (مايو) 2023

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha14. يحتوي الإصدار 1.2.0-alpha14 على هذه المراجعات.

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

  • إصلاح مشكلة FrameTimingMetric تجاهل اللقطات التي تتضمّن معرّفات لقطات غير متّسقة سيؤدي ذلك إلى تجاهل بعض الرسوم المتحرّكة في الإصدارات الحديثة من النظام الأساسي (الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث) للعديد من اللقطات أثناء عرض RenderThread للحركة (مثلاً أثناء التموج). (I747d2، b/279088460)
  • تم إصلاح معالج بيانات التتبُّع عند تحليل البيانات التي يزيد حجمها عن 64 ميغابايت. (Ief831، b/269949822)
  • تم إصلاح تعذُّر إنشاء الملف الشخصي الأساسي على Android U بسبب اختلاف إخراج أمر pm dump-profiles. (Id1392، b/277645214)
  • إصلاح النص البرمجي لقفل ساعة وحدة معالجة الرسومات من أجل مقارنة السلاسل بشكل صحيح (I53e54، b/213935715)

الإصدار 1.2.0-alpha13

5 نيسان (أبريل) 2023

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

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

  • تمت إضافة مَعلمة نوع الملف الشخصي عند إنشاء الملفات الشخصية الأساسية لتفعيل ميزة الملف الشخصي لبدء التشغيل القادمة (Ie20d7، b/275093123)
  • تمت إضافة واجهة برمجة تطبيقات TraceMetric تجريبية جديدة لتحديد مقاييس مخصّصة بالكامل استنادًا إلى محتوى عملية تتبُّع Perfetto. (I4ce31، b/219851406)
  • إضافة مقياس تجريبي لتحديد عدد أخطاء الصفحة خلال أحد مقاييس الأداء (I48db0)

الإصدار 1.2.0-alpha12

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

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha12. يحتوي الإصدار 1.2.0-alpha12 على هذه المراجعات.

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

  • تم إصدار الإصدار التجريبي من المكوّن الإضافي الجديد لملف الإصدار الأساسي في Gradle، ما يسهّل إنشاء ملف الإصدار الأساسي ويبسّط سير عمل المطوّر.

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

  • تمت إزالة إمكانية تتبُّع Perfetto في الإصدارَين 21 و22 من واجهة برمجة التطبيقات، بما في ذلك اختبارات Microbenchmarks وواجهات برمجة التطبيقات التجريبية PerfettoTrace. قبل هذا الإصدار، كان اتصال UiAutomation غير موثوق به على بعض الأجهزة. (I78e8c)
  • تمت إضافة واجهة برمجة تطبيقات تجريبية علنية للتطبيق PerfettoTraceProcessor من أجل تفعيل تحليل محتوى التتبُّع. هذه خطوة نحو المقاييس المخصّصة بالكامل استنادًا إلى بيانات تتبُّع Perfetto. (I2659e، b/219851406)

الإصدار 1.2.0-alpha11

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

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha11. يحتوي الإصدار 1.2.0-alpha11 على هذه المراجعات.

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

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

الإصدار 1.2.0-alpha10

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

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

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

  • في الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث، لم تعُد أداة Macrobenchmark تعيد تثبيت التطبيقات المستهدَفة لإعادة ضبط حالة الترجمة، وذلك بفضل ميزة جديدة في النظام الأساسي. في السابق، كان من الضروري أن يكون لديك جهاز مزوّد بإذن الوصول إلى الجذر، أو أن تتعامل مع إزالة جميع حالات التطبيق (مثل تسجيل دخول المستخدم) قبل تنفيذ كل اختبار أداء. (I9b08c، b/249143766)

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

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

الإصدار 1.2.0-alpha09

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

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

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

  • تم تفعيل تمرير None إلى مَعلمة أداة القياس androidx.benchmark.enabledRules لإيقاف جميع عمليات إنشاء ملف الأداء الأساسي أو ملف الأداء المرجعي. (I3d7fd، b/258671856)
  • إصلاح عملية تسجيل PerfettoTrace في وحدات التطبيق (أي حِزم APK الاختبارية غير المزوّدة بأدوات فحص ذاتي) (I12cfc)
  • تم إصلاح ترتيب مَعلمات adb pull في الملف الشخصي الأساسي في إخراج Studio (I958d1، b/261781624)
  • يتم الآن التعرّف على Arm emulator api 33 بشكل صحيح على أنّه كذلك عند محاولة تشغيل اختبار أداء برمجي على مستوى النظام، وسيتم طباعة التحذير بشكل صحيح. (69133b،b/262209591)
  • تخطّي التحقّق من مستوى شحن البطارية على الأجهزة التي لا تحتوي على بطارية في Macrobenchmark (fe4114، b/232448937)

الإصدار 1.2.0-alpha08

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

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

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

  • تمت إضافة واجهات برمجة التطبيقات الجديدة والتجريبية PerfettoTrace.record {} وPerfettoTraceRule لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم عمليات تتبُّع النظام) كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16)
  • يقبل BaselineProfileRule الآن عبارة فلتر بدلاً من قائمة بادئات الحِزم. ويمنح ذلك الاختبار التحكّم الكامل في الفلترة. (I93240)
  • أضِف واجهة برمجة تطبيقات تجريبية BaselineProfileRule.collectStableBaselineProfile تنتظر إلى أن يصبح الملف الشخصي الأساسي ثابتًا لعدد N من التكرارات. (I923f3)
  • يمكنك إضافة إمكانية تحديد بادئة اسم ملف الناتج عند إنشاء ملفات شخصية أساسية باستخدام BaselineProfileRule. (I7b59f، b/260318655)

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

  • يمكنك تحسين أمان كتابة إخراج الملفات، من المفترض أن تمنع كتابة أو إلحاق ملفات الإخراج بدون تنبيه صوتي، وخاصةً على واجهة برمجة التطبيقات 21/22. (If8c44، b/227510293)
  • يجب تصحيح simpleperf إخراج التتبُّع لإنشاء الملف ووضعه بشكل صحيح. من المفترض أن يؤدي ذلك أيضًا إلى حلّ المشاكل بشكل عام في حال تعذّر سحب ملف بواسطة gradle. (I12a1c، b/259424099)
  • تحسين رسالة خطأ أداة تثبيت الملف الشخصي التي يتم طباعتها عندما تكون أداة تثبيت الملف الشخصي قديمة جدًا يطلب منك هذا الإجراء الآن تحديث إصدار أداة تثبيت الملفات الشخصية (1.2.1) لقياس الملفات الشخصية الأساسية على المستوى 31 من واجهة برمجة التطبيقات إلى المستوى 33، بدلاً من إبلاغك بأنّه غير متوافق. (Ia517f، b/253519888)
  • إصلاح العديد من أخطاء أوامر واجهة الأوامر onerror message <=23
  • ترتيب قواعد الملفات الشخصية التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات أثناء تغيُّرها بمرور الوقت (عند تسجيل قواعد الملفات الشخصية في أداة التحكّم في المصدر) (Ie2509)
  • تم إصلاح الأعطال في الإصدارات غير المزوّدة بإذن الوصول إلى الجذر والإصدارات الأقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) التي تظهر فيها الرسالة Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245، b/259508183).

المشاكل المعروفة - قد يتعطّل MacrobenchmarkScope.dropShaderCache() بسبب عدم توفّر سجلّ البث في بيان أداة تثبيت الملف الشخصي، والذي لم يتم إصداره بعد. (I5c728، b/258619948) لحلّ المشكلة في profileinstaller:1.3.0-alpha02، أضِف ما يلي إلى ملف AndroidManifest.xml الخاص بتطبيقك (وليس ملف قياس الأداء):

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

الإصدار 1.2.0-alpha07

9 تشرين الثاني (نوفمبر) 2022

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

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

  • إضافة واجهة برمجة التطبيقات PowerMetric لقياس الطاقة في اختبارات الأداء الشاملة (Ife601، b/220183779)
  • تم إصلاح MacrobenchmarkScope.dropShaderCache() لإسقاط ذاكرة التخزين المؤقت لأداة التظليل. يساعد ذلك في إزالة تشويش حوالي 20 ملّي ثانية من مقاييس أداء "StartupMode.COLD"، لأنّه يتم الآن محو أدوات التظليل باستمرار في كل تكرار. في السابق، كان Partial يُبلغ عن أعداد سريعة بشكل غير صحيح عند تجميعه باستخدام عمليات تكرار الإحماء، لأنّه من المرجّح أن يحدث تخزين مؤقت للظلال أثناء الإحماء. يتطلّب هذا الإصلاح إما استخدام جهاز تم إجراء عملية "التمكين من الوصول إلى الجذر" عليه أو استخدام profileinstaller:1.3.0-alpha02 في التطبيق المستهدَف. للاطّلاع على التغييرات في واجهة برمجة تطبيقات مكتبة ProfileInstaller، يُرجى الرجوع إلى صفحة ProfileInstaller 1.30-alpha02. (Ia5171، b/231455742)
  • تمت إضافة TraceSectionMode("label", Mode.Sum)، ما يتيح قياس إجمالي الوقت المستغرَق في أقسام تتبُّع متعددة تحمل التصنيف نفسه. على سبيل المثال، سيبلغ مقياس TraceSectionMetric("inflate", Mode.Sum) عن مقياس inflateMs لإجمالي الوقت في مقياس أداء الكلي الذي يتم إنفاقه على التضخم. تم أيضًا إزالة شرط المستوى 29 لواجهة برمجة التطبيقات، لأنّ TraceSectionMetric يعمل مع androidx.tracing.Trace حتى المستويات الأدنى لواجهة برمجة التطبيقات، وذلك باستخدام forceEnableAppTracing داخل التطبيق المستهدَف. (Id7b68، b/231455742)

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

  • تم تحسين أمان جميع أوامر واجهة الأوامر الداخلية من خلال التحقق من صحة جميع الإخراج/الأخطاء. (I5984d، b/255402908، b/253094958)
  • تحديد الجهاز في ملف القاعدة adb pull، حتى يمكن نسخ الأمر pull بسهولة في حال ربط أجهزة متعددة (ما يصل إلى جهاز محاكاة واحد) I6ac6c، b/223359380)
  • إضافة خطأ إذا لم يتم إعداد حزمة apk لاختبار الأداء الإجمالي على أنّها أداة قياس أداء ذاتي يمنع هذا الخطأ قياس الأداء الكلي من داخل عملية التطبيق المستهدف. خلال هذه العملية، لن تتمكّن وحدة الماكرو من تجميع التطبيق أو إيقافه أو تشغيله على البارد أو التحكّم في أذوناته الخاصة (I4279b).
  • تم إصلاح مشكلة في measureRepeated() حيث لا يُنهي StartupMode.COLD العملية المستهدَفة بعد setupBlock. في الوقت الحالي، لن يؤدي تفاعل "setupBlock" مع التطبيق إلى إيقاف عملية التطبيق، وقد يكون القياس غير صالح للتشغيل على البارد. (I8ebb7)

الإصدار 1.2.0-alpha06

24 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha06. يحتوي الإصدار 1.2.0-alpha06 على هذه المراجعات.

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

  • لم تعُد BaselineProfileRule تتطلّب إذن الوصول إلى الجذر على الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات)، ولم تعُد تجريبية. (Ie0a7d، وb/250083467، وb/253094958)
    • يصحّح هذا التغيير أيضًا طريقة تفريغ الملفات الشخصية من أحد التطبيقات على القرص على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر، ولكنّه يتطلّب تحديث التبعية الخاصة بملف تثبيت الملفات الشخصية للتطبيق المستهدَف.
    • لاستخدام BaselineProfileRule أو CompilationMode.Partial(warmupIterations) على جهاز غير مزوّد بإذن الوصول إلى الجذر، عليك أيضًا تحديث تطبيقك المستهدَف لاستخدام androidx.profileinstaller.profileinstaller:1.3.0-alpha01. يتيح ذلك تفريغ الملف الشخصي على القرص بشكل صحيح، حتى يمكن تجميعه أو استخراجه.

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

  • إصلاحات لتعطُّل SampledProfiling في الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث (I40743، b/236109374)

الإصدار 1.2.0-alpha05

5 تشرين الأول (أكتوبر) 2022

تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha05. يحتوي الإصدار 1.2.0-alpha05 على هذه المراجعات.

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

  • إصلاح مشكلة تقسيم اللقطات في أداة عرض عمليات تتبُّع النظام في "استوديو YouTube" للعمليات التي تم تسجيلها في اختبارات الأداء (I3f3ae، b/239677443)
  • تصحيح FrameTimingMetric لإدراج FrameOverrun باعتباره يتطلب واجهة برمجة التطبيقات 31 بدلاً من 29 (I716dd، b/220702554)
  • اضبط التكرار في BaselineProfileRule، واعرض رسالة واضحة إذا لم تكن الحزمة المستهدَفة مثبّتة (سبق أن تم إجراء ذلك لقاعدة MacrobenchmarkRule). (Ic09a3، b/227991471)

الإصدار 1.2.0-alpha04

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

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

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

  • إتاحة استخدام مَعلمة أداة القياس dryRunMode.enable في اختبارات الأداء على مستوى النظام (التي تتوفّر حاليًا في اختبارات الأداء على مستوى التطبيق) لتطوير التطبيقات بشكل أسرع على الجهاز، والتحقّق من صحة التشغيل الآلي للتطبيقات (مثلاً في مرحلة ما قبل الإرسال) يؤدي ذلك إلى إلغاء عمليات التكرار إلى 1، وتخطّي عملية الترجمة، وإيقاف جميع أخطاء الإعداد، وإيقاف إخراج ملف القياس بتنسيق ‎ .json. (Ib51b4، b/175149857)

    في سطر أوامر Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    في build.gradle:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

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

  • تم إصلاح مشكلة في StartupTimingMetric لكي لا يتطلب إطلاق الأنشطة التي تم قياسها من خلال MacrobenchmarkScope.startActivityAndWait(). وهذا يعني أنّ المقياس يمكنه رصد عمليات الإطلاق من الإشعارات أو Context.startActivity() أو التنقّل المستنِد إلى النشاط داخل التطبيق أو أوامر shell. (Ia2de6، b/245414235)
  • إصلاح خطأ يؤدي إلى انتهاء مهلة startActivityAndWait أثناء محاولة انتظار اكتمال عملية الإطلاق على المحاكيات من خلال تقليل صرامة رصد اللقطات (Ibe2c6، b/244594339، b/228946895)

الإصدار 1.2.0-alpha03

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

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

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

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

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

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

الإصدار 1.2.0-alpha02

24 آب (أغسطس) 2022

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

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

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

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

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

الإصدار 1.2.0-alpha01

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

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

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

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

    على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

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

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

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

  • تمت إضافة PowerMetric جديدة لقياس مهام الطاقة والأداء في المقاييس. (I9f39b، b/220183779)
  • تمت إضافة وضع تجميع جديد CompilationMode.Ignore لتخطّي إعادة ضبط الملف الشخصي وتجميعه. (Ibbcf8، b/230453509)
  • تمت إضافة مَعلمة جديدة إلى BaselineProfileRule#collectBaselineProfile لفلترة ملف الإخراج حسب أسماء الحِزم (If7338 وb/220146561).
  • يتيح هذا الخيار للمطوّر تفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
  • تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لظلال الألوان في MacrobenchmarkScope. (I32122)
  • يتيح للمطوّر ضبط عرض نوع المقياس وتفاصيل فئات الأنظمة الفرعية المطلوبة. (I810c9)
  • في السابق، كان يتم طرح UnsupportedOperationException في الاختبار القياسي في حال تشغيله على جهاز غير متوافق. لا يحدث الآن خطأ UOE إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثل PowerMetric.configure). (I5cf20، b/227229375)
  • تمت إضافة TotalPowerMetric وTotalEnergyMetric لقياس إجمالي الطاقة في كل فئة من فئات النظام في اختبارات الأداء الشاملة. (I3b26b، b/224557371)

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

  • تم إصلاح مشكلة تعذُّر إعادة ضبط الطرق المجمّعة بشكل صحيح بين كل مقياس أداء ماكرو على الإصدارات غير الجذر. ويتطلب هذا للأسف إعادة تثبيت ملف apk في كل تكرار، ما سيؤدي إلى محو بيانات التطبيق لكل مقياس ماكرو. (I31c74، b/230665435)
  • إصلاح تعطُّل تسجيل التتبّع في واجهة برمجة التطبيقات 21/22 (If7fd6، b/227509388، b/227510293، b/227512788)
  • إجراء إصلاح شامل على ميزة رصد اكتمال بدء النشاط لإصلاح استثناء "تعذّر قراءة أي مقاييس" في مقاييس الأداء الشاملة لبدء التشغيل (Ia517c)

الإصدار 1.1.1

الإصدار 1.1.1

9 تشرين الثاني (نوفمبر) 2022

تم إصدار androidx.benchmark:benchmark-*:1.1.1. يحتوي الإصدار 1.1.1 على هذه المراجعات.

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

  • إصلاحات android.system.ErrnoException: open failed: EACCES التي قد تحدث على بعض أجهزة Android 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأحدث هذه مجموعة من الإصلاحات من 1.2.0-alpha01. (aosp/2072249)

الإصدار 1.1.0

الإصدار 1.1.0

15 حزيران (يونيو) 2022

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

  • هذا الإصدار مماثل لـ androidx.benchmark:benchmark-*:1.1.0-rc03.

التغييرات المهمة منذ الإصدار 1.0.0

الإصدار 1.1.0-rc03

1 حزيران (يونيو) 2022

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

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

  • تجنَّب إعادة تثبيت الحزمة المستهدَفة في كل تكرار لمقياس الأداء. ( aosp/​​2093027، b/231976084)

  • أزِل تأخير 300ms من pressHome(). (aosp/2086030، b/231322975)

  • تحسين سرعة تكرار اختبارات الأداء على مستوى النظام من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023، b/231323582)

  • إتاحة استخدام أجهزة Gradle المُدارة عند إنشاء الملفات الشخصية الأساسية باستخدام اختبارات الأداء على مستوى النظام (aosp/2062228، b/228926421)

الإصدار 1.1.0-rc02

11 أيار (مايو) 2022

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

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

إصلاح الأخطاء/تغييرات السلوك

  • تم إصلاح مشكلة عدم إعادة ضبط عملية تجميع التطبيق بشكل صحيح بين اختبارات الأداء الشاملة، وعدم إعادة ضبطها على الإطلاق في عمليات الإنشاء غير المزوّدة بإذن الوصول إلى الجذر. ويؤدي ذلك إلى حلّ العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير CompilationMode في القياسات أو تأثيرها بشكل بسيط. لحل هذه المشكلة، يعمل التطبيق المستهدف الآن على إعادة تثبيت كل طريقة اختبار بشكل كامل، مما سيؤدي إلى محو بيانات التطبيق بين كل مقياس أداء مصغر. (I31c74، b/230665435)

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

    على سبيل المثال، في ملف create.gradle لمعيار الماكرو الخاص بك:

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

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

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

    على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

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

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

الإصدار 1.1.0-rc01

20 نيسان (أبريل) 2022

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

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

  • تستخدم الآن روابط إخراج الملف الشخصي الأساسي في "استوديو Android" اسم ملف فريدًا. بهذه الطريقة، يعرض الناتج دائمًا أحدث النتائج لاستخدام BaselineProfileRule. ( aosp/2057008، b/228203086 )

الإصدار 1.1.0-beta06

6 نيسان (أبريل) 2022

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

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

  • إصلاح مشكلة تعطُّل تسجيل عمليات التتبُّع في الإصدار 21 أو 22 من واجهة برمجة التطبيقات (If7fd6، b/227509388)
  • إجراء إصلاح شامل على ميزة رصد اكتمال بدء النشاط لإصلاح استثناء "تعذّر قراءة أي مقاييس" في مقاييس الأداء الشاملة لبدء التشغيل (Ia517c)
  • إصلاح مقاييس بدء التشغيل لمقاييس الأداء القصوى عند استخدام CompilationMode.None() قبل هذا التغيير، كان يبدو أنّ أداء CompilationMode.Partial() أبطأ من Compilation.None(). (611ac9).

الإصدار 1.1.0-beta05

23 آذار (مارس) 2022

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

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

  • إيقاف الحزمة بعد تخطّي تثبيت الملف الشخصي عند استخدام CompilationMode.None (aosp/1991373)
  • تم إصلاح مشكلة تعذُّر جمع مقاييس بدء التشغيل في اختبارات الأداء على مستوى النظام عند استخدامStartupMode.COLD. (aosp/2012227 b/218668335)

الإصدار 1.1.0-beta04

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

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

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

  • إصلاح عدم توفّر المقاييس على نظام التشغيل Android 10 وNoSuchElementException الناتج عن عدم تسجيل أسماء العمليات بشكلٍ صحيح في عمليات التتبّع (Ib4c17، b/218668335)

  • استخدِم PowerManager لرصد الحدّ من الأداء بسبب الحرارة على الإصدار Q (واجهة برمجة التطبيقات 29) والإصدارات الأحدث. ويؤدي ذلك إلى تقليل معدّل الظهور المتكرّر للنتائج الخاطئة في عملية رصد الحدّ الأقصى للطاقة الحرارية (إعادة إجراء الاختبار بعد فترة انتظار تبلغ 90 ثانية)، ويسرع الاختبارات بشكل كبير على الإصدارات التي ينشئها المستخدمون. ويرصد هذا الإجراء أيضًا عمليات التباطؤ حتى عندما تكون الساعات مقفَلة (إذا كانت مقفلة على قيمة عالية جدًا مقارنةً بالبيئة المكانية للجهاز). (I9c027، وb/217497678، وb/131755853)

  • فلترة التحليل المستند إلى عيّنات simpleperf إلى سلسلة مهام measureRepeated فقط لتبسيط عملية الفحص (Ic3e12، b/217501939)

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

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

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

الإصدار 1.1.0-beta03

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

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

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

  • تمت إضافة AudioUnderrunMetric إلى مكتبة اختبارات الأداء الشاملة ضمن علامة تجريبية للسماح برصد حالات تأخُّر تشغيل الصوت (Ib5972).
  • لم يعد BaselineProfileRule يقبل مجموعة setup لأنّ هذه الميزة تعمل تمامًا مثل profileBlock. (Ic7dfe، b/215536447)

    على سبيل المثال:

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

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

  • تم إصلاح مشكلة تعذُّر تعديل عمليات تتبُّع أداة تحليل الأداء في اختبارات الأداء الصغيرة في عمليات التشغيل اللاحقة عند ربطها في مخرجات "استوديو YouTube" (I5ae4d، b/214917025).
  • منع أوامر Shell الخاصة بالترجمة على الإصدار 23 من واجهة برمجة التطبيقات (Ice380)
  • تمت إعادة تسمية FrameCpuTime إلى FrameDurationCpu وFrameUiTime إلى FrameDurationUi لتوضيح أنّ هذه العناصر هي مدد وليس طوابع زمنية، ولمطابقة البادئات. (I0eba3، b/216337830)

الإصدار 1.1.0-beta02

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

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

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

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

الإصدار 1.1.0-beta01

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

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

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

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

الإصدار 1.1.0-alpha13

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

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

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

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

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

  • تم إصلاح الخطأ الذي كان يتسبب في معالجة CompilationMode.Speed كـ None بشكل غير صحيح (I01137)

الإصدار 1.1.0-alpha12

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

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

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

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

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

  • تنشيط الجهاز في كل تكرار لضمان إمكانية اختبار واجهة المستخدم: يتطلب إيقاف شاشة القفل. (Ibfa28، b/180963442)
  • إصلاح أعطال متعددة في وضع تحليل أداء StackSampling على المحاكيات والأجهزة غير المزوّدة بإذن الوصول إلى الجذر (Icdbda، b/202719335)
  • تمت إزالة مهلة الانتظار التي تبلغ 0.5 ثانية في نهاية كل تكرار. إذا لاحظت عدم توفّر مقاييس مع هذا التغيير، يُرجى إبلاغنا بخطأ. (Iff6aa)
  • تقليل فرص فقدان البيانات، وخفض مساحة التخزين غير الضرورية الناتجة عن التتبّع (Id2544 وb/199324831 وb/204448861)
  • يمكنك تقليل حجم التتبُّع بنسبة% 40 تقريبًا من خلال التبديل إلى تنسيق تخزين مخطّط مكثّف. (Id5fb6، b/199324831)
  • عمليات تنفيذ محدَّثة لمقاييس بدء التشغيل وتنتهي دائمًا في نهاية سلسلة العرض وسيكون ذلك أكثر اتساقًا على مستوى إصدارات منصّة الإعلانات، وسيرتبط بشكلٍ أوثق بالقياسات داخل التطبيق. (Ic6b55)

الإصدار 1.1.0-alpha11

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

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

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

  • أصبح مقياس الأداء الماكرو الآن minSdkVersion من 23. (If2655)
  • إضافة BaselineProfileRule تجريبي جديد يمكنه إنشاء ملفات أساسية لرحلة المستخدِم المهمة في التطبيق ستتوفّر مستندات تفصيلية لاحقًا. (Ibbefa، b/203692160)
  • تتم إزالة متغير واجهة Metrics المتكررة الذي تمت إضافته للمتصلين في JavaScript، حيث تسبب في غموض في إكمال/حل الطريقة. سيحتاج مُتصلو Java إلى عرض Unit.Instance مرة أخرى من measureRepeated. إذا كان هذا الأمر يسبب لك إزعاجًا، يُرجى إبلاغنا بالخلل، ويمكننا إعادة النظر في هذا الأمر في إصدار مستقبلي. (Ifb23e وb/204331495)

الإصدار 1.1.0-alpha10

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

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

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

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

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

  • حلّ مشكلة عدم بدء عمليات التتبّع مبكرًا بما يكفي وعدم توفّر بيانات المقاييس من المتوقّع أن يؤدي ذلك إلى حلّ استثناءات "تعذّر قراءة أيّ مقاييس أثناء الاختبار القياسي" التي تسبّبت فيها المكتبة نفسها. (I6dfcb، b/193827052، b/200302931)
  • تمت إعادة تسمية FrameNegativeSlack إلى FrameOverrun لتوضيح معناها، أي مقدار تجاوز اللقطة لميزانيتها الزمنية. (I6c2aa، b/203008701)

الإصدار 1.1.0-alpha09

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

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

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

  • إتاحة إزالة ذاكرة التخزين المؤقت لصفحة Kernel بدون إذن الوصول إلى الجذر على واجهة برمجة التطبيقات 31/S والإصدارات الأحدث، ما سيزيد من دقة عمليات بدء StartupMode.COLD (Iecfdb، b/200160030)

الإصدار 1.1.0-alpha08

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

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

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

  • فعِّل مقاييس ماكرو التمرير للرجوع إلى واجهة برمجة التطبيقات 23 (If39c2، وb/183129298)
  • إضافة نوع جديد من المقاييس المستندة إلى عيّنات إلى واجهة المستخدم وإخراج JSON، مع التركيز على النِسب المئوية للعيّنات المتعدّدة لكلّ تكرار (I56247، b/199940612)
  • التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو YouTube") (I69249، b/197008210)

الإصدار 1.1.0-alpha07

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

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

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

  • تم رفع الحد الأدنى لمستوى واجهة برمجة التطبيقات إلى 21 ليعكس أدنى مستوى مقصود لواجهة برمجة التطبيقات ليتم دعمه في المستقبل. يستمر نقل الحد الأدنى الحالي لواجهة برمجة التطبيقات المتوافقة من خلال RequiredApi()‎، وهو حاليًا 29 (I440d6، b/183129298).

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

  • يعمل هذا الإعداد على إصلاح ProfileInstaller لتسهيل تشغيل التطبيقات التي تستخدم الملفات الشخصية الأساسية لمقاييس الأداء القصوى باستخدام CompilationMode.BaselineProfile. (I42657، b/196074999) ملاحظة: يجب أيضًا التحديث إلى androidx.profileinstaller:profileinstaller:1.1.0-alpha04 أو إصدار أحدث.
  • أصبحت مقاييس الأداء StartupMode.COLD + CompilationMode.None أكثر ثباتًا الآن. (I770cd، b/196074999)

الإصدار 1.1.0-alpha06

18 آب (أغسطس) 2021

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

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

  • تمت إضافة وسيطة أداة androidx.benchmark.iterations للسماح بالإلغاء اليدوي لعدد التكرارات عند الاختبار/إنشاء الملفات الشخصية محليًا. (6188be، b/194137879)

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

  • تم التبديل إلى Simpleperf باعتباره محلّل عينات تلقائي على واجهة برمجة التطبيقات 29 والإصدارات الأحدث. (Ic4b34، b/158303822)

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

  • لا يزال "CompilationMode.BaselineProfile" قيد التطوير. تجنَّب استخدامها لتحديد مدى جودة الملف الشخصي في الوقت الحالي.

الإصدار 1.1.0-alpha05

4 آب (أغسطس) 2021

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

تم إلغاء 1.1.0-alpha04 قبل إصداره بسبب عطل مؤقت. b/193827052

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

  • تم تبديل startActivityAndWait لبدء التشغيل من خلال am start، ما يقلل من مدة كل تكرار قياس بمقدار 5 ثوانٍ تقريبًا، مقابل إيقاف استخدام intent parcelables. (I5a6f5، b/192009149

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

  • يمكنك تقليل سرعة رصد عمليات الحدّ من السرعة بسبب الحرارة، و إعادة احتساب قاعدة البيانات الأساسية إذا تم رصد عمليات الحدّ من السرعة بشكل متكرر. (I7327b)
  • إصلاح FrameTimingMetric للعمل على الإصدار التجريبي من Android S (Ib60cc وb/193260119)
  • استخدِم EmptyActivity لإزالة التطبيق المستهدَف من حالة الإيقاف النهائي من أجل إتاحة استخدام CompilationMode.BaselineProfile بشكل أفضل. (Id7cac، b/192084204)
  • تم تغيير امتداد ملف التتبُّع إلى .perfetto-trace لمطابقة معيار المنصة. (I4c236، b/174663039)
  • تُخرج StartupTimingMetric الآن مقياس "fullDrawnMs" لقياس الوقت حتى يكتمل العرض في تطبيقك. لتحديد هذا المقياس لتطبيقك، يمكنك الاتصال بـ Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، كأن يتم مثلاً تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات التحقّق من إصدار الإصدار على ComponentActivity). يُرجى العلم أنّه يجب تنفيذ الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر startActivityAndWait لإجراء reportFullyDrawn). (If1141، b/179176560)
  • تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم في عمليات التتبُّع بمقدار 50 ملي ثانية (Ic8390، وb/193923003)
  • زيادة كبيرة في معدّل الاستطلاع عند إيقاف التتبّع، ما قد يؤدي إلى تقليل وقت تشغيل مقياس الأداء لبدء التشغيل بنسبة تزيد عن %30 (Idfbc1، b/193723768)

الإصدار 1.1.0-alpha03

16 حزيران (يونيو) 2021

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

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

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

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

    مثال:

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

الإصدار 1.1.0-alpha02

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

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

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

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

تمّت إضافة عناصر اختبارات الأداء على مستوى النظام (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro).

  • تسجيل مقاييس أداء بدء التشغيل أو الانتقال إلى الأسفل/الحركة من تطبيقك، محليًا أو في عملية التطوير المتكامل (CI)
  • تسجيل عمليات التتبّع وفحصها من داخل Android Studio

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

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

الإصدار 1.1.0-alpha01

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

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

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

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

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

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

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

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

الإصدار 1.0.0

الإصدار 1.0.0 من Benchmark

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

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

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

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

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

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

  • تثبيت الساعة
  • تحديد الأولوية تلقائيًا لسلاسل المحادثات
  • إتاحة اختبار أداء واجهة المستخدم، مثل نموذج RecyclerView
  • عمليات التحضير والتكرار المتوافقة مع ميزة "التجميع أثناء التنفيذ"
  • نتائج اختبار JSON لمعالجة ما بعد التحويل

الإصدار 1.0.0-rc01

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

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

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

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

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

  • تم إصلاح مشكلة عدم استقرار المقياس التي تؤدي إلى عدم اكتمال JIT قبل فترة التحضير بسبب إزالة الأولوية (b/140773023).
  • دليل الإخراج المُوحَّد بتنسيق JSON في المكوّن الإضافي لنظام Gradle المتوافق مع Android 3.5 و3.6

الإصدار 1.0.0-beta01

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

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

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

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

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

  • تمت إضافة الاعتماد على androidx.annotation:android-experimental-lint، لكي يُنتج رمز Java أخطاء lint بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما يوفّره التعليق التوضيحي التجريبي في Kotlin لمُستخدِمي Kotlin.
  • يتم الآن رصد استخدام additionalTestOutputDir وسيطة أداة القياس للإخراج بشكلٍ صحيح في الإصدار 3.6 من "مكوّن Android Gradle" لمعرفة الحالات التي سيتولى فيها "مكوّن Android Gradle" نسخ البيانات.
  • إصلاح عدم رصد معدّل تكرار الساعة في ملف JSON لطباعة -1 بشكل صحيح (b/141945670)

الإصدار 1.0.0-alpha06

18 أيلول (سبتمبر) 2019

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

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

  • تمت إضافة عملية تحقّق من استخدام الحزمة القديمة لبرنامج تشغيل الاختبار بشكل غير صحيح، ما يؤدي الآن إلى عرض رسالة خطأ أكثر فائدة.

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

  • أصبح التعليق التوضيحي التجريبي ExperimentalAnnotationReport متاحًا للجميع بشكل صحيح. يتطلب استخدام واجهة برمجة التطبيقات التجريبية BenchmarkState#report الآن هذا التعليق التوضيحي.

الإصدار 1.0.0-alpha05

5 أيلول (سبتمبر) 2019

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

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

  • تم وضع علامة "تجريبية" على واجهة برمجة التطبيقات BenchmarkState.reportData

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

  • عليك حل المشكلة المتعلّقة بالنص البرمجي لقفل الساعة الذي يتعذّر تفعيله على الأجهزة التي لم تتوفّر فيها برامج الأدوات المساعدة cut أو expr.
  • تم إصلاح مشكلة في مهمة ./gradlew lockClocks التي كانت تتعطل على الأجهزة التي تم الوصول إلى الجذر فيها باستخدام إصدار قديم من الأداة su، والذي لم يكن متوافقًا مع العلامة -c.

الإصدار 1.0.0-alpha04

7 آب (أغسطس) 2019

تم طرح الإصدارات androidx.benchmark:benchmark-common:1.0.0-alpha04 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha04. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

تمت أيضًا إضافة مستندات جديدة حول كيفية استخدام مكتبة Benchmark بدون Gradle، وذلك لاستخدامها مع أنظمة إنشاء مختلفة (مثل Bazel أو Buck) وعند تشغيلها في عملية التطوير المتكامل (CI). لمزيد من المعلومات، اطّلِع على مقالتَي إنشاء مقاييس الأداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المستمر.

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

  • مكوّن Gradle الإضافي
    • يتم الآن إيقاف تغطية الاختبار تلقائيًا وضبط AndroidBenchmarkRunner تلقائيًا (b/138374050).
    • تمت إضافة الدعم لنسخة جديدة من البيانات تستند إلى AGP، عند تشغيل مقاييس الأداء وعند استخدام AGP 3.6 أو إصدار أحدث
  • إضافات تنسيق JSON
    • عرض إجمالي وقت تنفيذ اختبار الأداء (b/133147694)
    • @Parameterized معايير الأداء التي تستخدِم سلسلة أسماء (مثل @Parameters(name = "size={0},depth={1}")) تعرِض الآن أسماء المَعلمات وقيمها لكل معيار أداء في إخراج JSON (b/132578772)
  • وضع المحاكاة (b/138785848)
    • تمت إضافة وضع "التشغيل التجريبي" لتشغيل كل حلقة لقياس الأداء مرة واحدة فقط، وذلك للتحقّق من الأخطاء أو الأعطال بدون التقاط القياسات. يمكن أن يكون ذلك مفيدًا، على سبيل المثال، لتشغيل مقاييس الأداء بسرعة في مرحلة ما قبل الإرسال للتأكّد من أنّها تعمل بشكل سليم.

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

  • تم تغيير بنية الوحدة، ما أدّى إلى تقسيم المكتبة (b/138451391).
    • تحتوي حزمة benchmark:benchmark-junit4 على فئات تعتمد على JUnit: AndroidBenchmarkRunner وBenchmarkRule، وكلتاهما تم نقلهما إلى حزمة androidx.benchmark.junit4.
    • يحتوي benchmark:benchmark-common على باقي المنطق، بما في ذلك BenchmarkState API
    • سيسمح هذا التقسيم للمكتبة بتوفير ميزة قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
  • يتم الآن التعامل مع تحذيرات الإعداد على أنّها أخطاء، وستؤدي إلى إيقاف الاختبار (b/137653596).
    • ويتم ذلك لزيادة التشجيع على إجراء قياسات دقيقة، خاصةً في عملية التطوير المتكامل.
    • يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام مَعلمة أداة القياس. على سبيل المثال: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

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

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

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

  • نشكر "سيرجي زاكاروف" على المساهمة في تحسينات ناتج JSON وحلّ المشاكل المتعلّقة بإيقاف الشاشة.

الإصدار 1.0.0-alpha03

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

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

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

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

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

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

الإصدار 1.0.0-alpha02

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

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

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

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

  • تمّت إعادة هيكلة مخطّط JSON. من المرجّح أن تقتصر التعديلات الإضافية على مخطّط JSON على ما يلي:

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

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

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

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

الإصدار 1.0.0-alpha01

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

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