مقياس الأداء

يمكنك قياس أداء الرمز البرمجي بدقة داخل "استوديو Android".
آخر تحديث الإصدار المستقر إصدار محتمل الإصدار التجريبي الإصدار الأولي
‫7 أكتوبر 2026 1.5.0 - - 1.6.0-alpha01

تحديد الاعتماديات

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

Macrobenchmark

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

رائع

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

Kotlin

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

اختبار الأداء الدقيق

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

رائع

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

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

Kotlin

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

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

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

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

رائع

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

Kotlin

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

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

رائع

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

الملاحظات

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

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker لمزيد من المعلومات.

الإصدار 1.6

الإصدار ‎1.6.0-alpha01

‫7 أكتوبر 2026

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

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

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

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

  • تمت إضافة MemoryProfilingConfig إلى ExperimentalConfig للسماح بتفعيل ميزة "إنشاء ملفات تعريف الذاكرة" في Perfetto عند تنفيذ اختبارات Macrobenchmark. (Ibc931)

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

  • تم إصلاح خلل في أداة microbenchmark كان يؤدي أحيانًا إلى تخطّي التقاط سجلّ الإجراءات بحذر شديد لتجنُّب أخطاء ANR. (Ifc307)
  • تم إصلاح مشكلة التقاط الملف الشخصي للمرجع للعمليات التي لا تستخدم نمط تسمية :<suffix>. (I512ab)
  • يتم الآن الإبلاغ عن روابط تتبُّع المحلِّل ضمن قسم منفصل باسم "تتبُّعات التحليل" في ملخّصات IDE. (Id639f)
  • تم إصلاح خطأ في إفراغ الملفات الافتراضية كان يؤدي إلى ظهور Unable to flush profiles for <packagename>. (I48ccc)
  • تم إصلاح مشكلة المزامنة في سجلّات الإجراءات المضمّنة في تتبُّع النظام. Ifd2e33 b/537688349
  • المكوّن الإضافي Baseline Profile Gradle Plugin: تم تحسين CollectBaselineProfileTask لإتاحة العثور على ملفات test-result.pb في الأدلة الفرعية، ما يتيح التوافق مع منصة الاختبار المدمجة الجديدة. Id9c488 b/543799367

الإصدار 1.5

الإصدار 1.5.0

‫9 سبتمبر 2026

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

الإصدار ‎1.5.0-rc02

‫26 أغسطس 2026

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

الإصدار 1.5.0-rc01

‫12 أغسطس 2026

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

الإصدار ‎1.5.0-beta01

‫29 يوليو 2026

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

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

  • يمكن لـ "PerfettoCapture" و"PerfettoTraceRule" الآن تسجيل عمليات التتبُّع الجارية ودمجها في حزمة مستهدَفة. (I9a00b، b/497959820)

الإصدار 1.5.0-alpha07

‫1 يوليو 2026

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

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

  • تم تبسيط عملية تسجيل تتبُّع Perfetto على الجهاز. (I48810)
  • نقل واجهات برمجة التطبيقات التجريبية لإضافات TraceProcessor.runServer من androidx.benchmark:benchmark-macro إلى androidx.benchmark:benchmark-common، وإلى حزمة androidx.benchmark سيؤدي ذلك إلى إتاحة استخدامها في اختبارات الأداء الصغيرة في المستقبل. (Ie25bb، b/393640753)

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

  • تحديث تنفيذ traceprocessor (بالإضافة إلى التقاط Perfetto Trace غير المجمّع) لاستخدام الإصدار 56.0 من Perfetto‏ (I8fb9d)
  • اضبط androidx.benchmark.requireAot وandroidx.benchmark.requireAot على "صحيح" تلقائيًا. تضمن هذه الإعدادات التلقائية الأكثر أمانًا إجراء عملية التجميع قبل تشغيل اختبارات الأداء الدقيق (يتم تفعيلها تلقائيًا باستخدام مكوّن Gradle الإضافي الخاص باختبار الأداء عند استخدام الإصدار 8.4 من "مكوّن Android الإضافي لبرنامج Gradle" أو الإصدارات الأحدث)، وعدم استخدام measureRepeated في سلسلة التعليمات الرئيسية، حيث يمكن أن يؤدي ذلك إلى حدوث أخطاء ANR. (I1bc3c، b/379115078)
  • تمت زيادة مهلة إنهاء Perfetto من 5 إلى 30 ثانية (لجلسات Perfetto التي تم تسجيلها في مقياس الأداء فقط). تمت إضافة تسجيل أخطاء أكثر وضوحًا عند حدوث المشكلة. (If188f، b/435589290)

الإصدار 1.5.0-alpha06

‫6 مايو 2026

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

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

  • التعامل مع بيئات تعدد المستخدمين بشكل سليم عند نقل الملفات من دليل نتائج قياس الأداء إلى دليل نتائج الاختبار الإضافي (I90da5، b/489358149)

الإصدار 1.5.0-alpha05

‫25 مارس 2026

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

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

  • تم تعديل ArtMetric لمراعاة الحِزم ذات المستوى الأعلى، وهو أمر مهم بشكل خاص عند استخدام الإصدار 9.1 من "مكوّن Android الإضافي في Gradle" أو R8 أو إصدار أحدث، أو الخيار العام -repackageclasses. في السابق، كان يتعذّر على "ArtMetric" رصد عمليات تحميل الفئات هذه في قياسات "artClassLoad...". (If8a35، b/487402058)

الميزات الجديدة - تمت إضافة وسيطة جديدة للأدوات androidx.benchmark.requireLockedClocks تتيح تفعيل عملية التحقّق مما إذا كانت سرعات وحدة المعالجة المركزية (CPU) ثابتة للأجهزة التي تم عمل روت لها. (Id82e8، b/468039042)

الإصدار ‎1.5.0-alpha04

‫11 مارس 2026

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

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

  • تمّت إضافة JvmOverloads إلى PowerMetric.Energy وPowerMetric.Power (Iac0d0، b/481371562).

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

  • تم تعديل ArtMetric لمراعاة الحِزم ذات المستوى الأعلى، وهو أمر مهم بشكل خاص عند استخدام الإصدار 9.1 من "مكوّن Android الإضافي في Gradle" أو R8 أو إصدار أحدث، أو الخيار العام -repackageclasses. في السابق، كان يتعذّر على "ArtMetric" رصد عمليات تحميل الفئات هذه في قياسات "artClassLoad...". (I207ca، b/487402058)

الإصدار ‎1.5.0-alpha03

‫11 فبراير 2026

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

  • تم تعديلها لتعتمد على الإصدار التجريبي من UiAutomator 2.4.

الإصدار ‎1.5.0-alpha02

‫28 يناير 2026

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

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

  • تمّت إضافة دعم جزئي لإنشاء ملفات تعريف أساسية لوحدات Kotlin المتوافقة مع منصات متعددة. يمكن عادةً تحديد التبعيات على الملفات الشخصية باستخدام إعدادات baselineProfile Gradle في قسم التبعيات، ولكن لا يعمل ذلك حاليًا مع وحدات KMP.

    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // THIS DOES NOT WORK
          // baselineProfile(":yourProducerProject")
        }
      }
    }
    
  • بدلاً من ذلك، عليك تحديد التبعيات باستخدام إضافة baselineProfile **extension. (Ie19c4)

    plugins {
        id("org.jetbrains.kotlin.multiplatform")
        id("com.android.kotlin.multiplatform.library")
        id("androidx.baselineprofile.consumer")
    }
    
    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // ...
        }
      }
    }
    // Define dependencies
    // This works !
    baselineProfile {
      variants {
        androidMain {
          from(project(":yourProducerProject"))
        }
      }
    }
    

الإصدار 1.5.0-alpha01

‫17 ديسمبر 2025

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

  • يستخدم الإصدار 1.5 من Macrobenchmark الإصدار 2.4 من UiAutomator لتبسيط التفاعل مع التطبيق الذي يتم قياسه. يوسّع عنصر MacrobenchmarkScope الآن نطاق UiAutomatorTestScope، ما يتيح لك استخدام واجهات برمجة التطبيقات الحديثة UiAutomator مثل onElement { ... }.click().
  • لمزيد من المعلومات حول الإصدار 2.4 من UiAutomator، يُرجى الاطّلاع على المستندات.

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

  • لم يعُد المكوّن الإضافي Baseline Profile Gradle يتطلّب newDsl=false في الإصدار 9.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" ‏ (Iaaac7، b/443311090)
  • يمكنك توسيع نطاق إعدادات التتبُّع لتشمل حجم النواة (مثل صغير/كبير) في عمليات تتبُّع النظام/Perfetto التي تم تسجيلها في مقياس الأداء. (I8e397، b/457469959)

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

  • (في UiAutomator) تم تغيير انتظار startActivity إلى انتظار نافذة جديدة. (I35da6، b/440021797)
  • تثبيت واجهات برمجة التطبيقات BlackHole في androidx.benchmark (I2b67e، b/451749438)
  • أضِف @JvmOverloads لإنشاء دوال إنشاء مريحة لـ PerfettoTraceRule. (I1510a، b/443763207)

الإصدار 1.4

الإصدار 1.4.1

‫10 سبتمبر 2025

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

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

  • تم إصلاح perfettoSdkTracing=true (على سبيل المثال، عند تتبُّع Compose في اختبار قياس أداء مصغّر) الذي كان ينهي العملية المستهدفة إذا كانت قيد التشغيل، ولم يتم تحديد StartupMode. (Ib2c1f)

الإصدار 1.4.0

‫30 يوليو 2025

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

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

Microbenchmark

  • تم نقل مهام Gradle lockClocks وunlockClocks إلى المشاريع المرجعية بدلاً من المستوى الأعلى من أجل مراعاة عزل مشاريع Gradle.
  • تمت إعادة تصميم BenchmarkRule ليتم إنشاؤه فوق الكوروتين، ودعم سلوك yield() بشكل أفضل. من المفترض أن يقلّل ذلك بشكل كبير من خطر حدوث أخطاء ANR أثناء عمليات قياس الأداء، خاصةً عمليات CI الطويلة. ملاحظة: يجب تشغيل مقاييس أداء واجهة المستخدم باستخدام measureRepeatedOnMainThread

Macrobenchmark

  • تمت إضافة حل بديل في واجهة برمجة التطبيقات 34 والإصدارات الأحدث لأنّ CompilationMode.None() سيؤدي إلى أداء غير متّسق بسبب تجميع التطبيقات جزئيًا الآن من خلال ميزة "التحقّق" في وقت تشغيل Android بعد التشغيل الأول.
  • ميزة تجريبية: يمكن أن يسلّط Startup Insights الضوء على بعض المشاكل الشائعة في Macrobenchmark لبدء التشغيل من خلال تمرير MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))).
  • تمت إضافة ArtMetric التي يمكن استخدامها لرصد عملية تجميع أثناء التنفيذ وتحميل الفئات غير المحسَّن، وكلاهما مفيد للتحقّق من صحة تحسينات الملف الشخصي للمرجع.

ملفات تعريف المرجع

  • يجمع BaselineProfileRule الآن الملفات الشخصية للتطبيقات المتعددة العمليات.

التغييرات الأخرى

  • تم نقل TraceProcessor إلى مكتبة منفصلة (androidx.benchmark:benchmark-traceprocessor) ليتم استخدامه خارج مقاييس Macrobenchmark في حالات أخرى. يمكن أيضًا تشغيله على Desktop JVM من خلال تحديد ServerLifecycleManager الخاص بك.

الإصدار 1.4.0-rc01

‫18 يونيو 2025

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

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

  • تمت إضافة حل بديل لصور وقت التشغيل التي تتسبب في عدم قياس CompilationMode.None() لأسوأ أداء بعد التكرار الأول. لسوء الحظ، يتطلّب هذا الحلّ البديل تأخيرًا لمدة 5 ثوانٍ لإتلاف صورة وقت التشغيل عمدًا في بداية كل مجموعة اختبارات macrobenchmark (I4a4f1).

الإصدار 1.4.0-beta02

‫4 يونيو 2025

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

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

  • تمت إضافة BaselineProfileConfig.Builder لتسهيل استدعاء BaselineProfileRule.collectWithResults() لمطوّري Java. (I94905)

الإصدار ‎1.4.0-beta01

‫7 مايو 2025

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

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

  • تمت إضافة صيغة الدالة الإنشائية PerfettoTraceRule التي تقبل PerfettoConfig (Ie53ba)

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

  • تم تعديل تنسيق رابط إحصاءات بدء التشغيل TraceProcessor لاستخدام المكوّن الإضافي الصحيح، وفاصل أكثر وضوحًا (: أقصر من %3A، وكلاهما متوافق) (Ie18ef)
  • استخدِم دائمًا ميزة "فرض الإيقاف" لإنهاء العمليات، حتى عند الوصول إلى الجذر وإنهاء تطبيقات النظام. يصلح الاستثناءات في النموذج: Expected no stdout/stderr from killall ... No such process. (Idca2c)

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

  • تمت إضافة معالج استثناء الخادم الوكيل لـ TraceProcessorHttpServer (I480f5)

الإصدار 1.4.0-alpha11

‫9 أبريل 2025

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

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

  • تم تغيير مهلة وسيطة TraceProcessor: المدة إلى timeoutMs long لسهولة استخدام المتصل بلغة Java. (I9fbb5)
  • وضع علامة على الدالة الإنشائية TraceProcessor على أنّها داخلية يجب أن يستخدم المتصلون TraceProcessor.startServer أو TraceProcessor.runServer. (Ia8c5b)

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

  • عند إنهاء التطبيق باستخدام MacrobenchmarkScope.killProcess، يجب التحقّق من نتائج أمر الإنهاء لمنع حدوث خطأ صامت وخطأ في المهلة. (I84555)

تحديثات الاعتماديات

  • تستهدف هذه المكتبة الآن مستوى اللغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 من KGP أو إصدارًا أحدث. (Idb6b5)

الإصدار ‎1.4.0-alpha10

‫26 مارس 2025

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

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

  • تمت زيادة المهلة التلقائية لتحميل خادم TraceProcessor والاستعلام إلى 120 ثانية (بدلاً من 60/30 ثانية سابقًا)، وأصبح من الممكن ضبط كليهما باستخدام مَعلمة مهلة واحدة. (Ifec87)

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

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

الإصدار ‎1.4.0-alpha09

‫12 مارس 2025

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

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

  • تمت إضافة TraceProcessor وSession API مع مقابض قابلة للإغلاق، لتسهيل الاستخدام مع مراحل النشاط المخصّصة. وهذه أيضًا خطوة نحو تسهيل استخدام Coroutine وJava API. تم الآن وضع علامة "تجريبية" على دوال الإضافة إلى TraceProcessor.runServer {}، لأنّه من المرجّح أن يتم نقلها وجعلها غير تجريبية في المستقبل. (I358b4)

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

  • تم إصلاح مشكلة عدم عمل ميزة "القياس" و"التقاط بيانات ملف Baseline Profile" مع الإصدار 36 من واجهة برمجة التطبيقات بسبب تغيير في pgrep toybox يتطلّب الآن -a لطباعة سطر الأوامر الكامل. (Idc991)
  • فلترة الإعدادات التلقائية للتتبُّع من أجل تقليل خطر فقدان البيانات في عمليات التتبُّع على مستويات واجهة برمجة التطبيقات الأحدث (I54e8a)
  • تمت إضافة وسيطة قياس تجريبية androidx.benchmark.killExistingPerfettoRecordings، والتي يمكن ضبطها على false للسماح بمواصلة التقاط تتبُّع Perfetto الحالي. يتم تلقائيًا إيقاف عمليات تتبُّع Perfetto الحالية على الجهاز لمنع حدوث تداخل. (I02a3c)
  • سيصبح حقل JSON‏ context.osCodenameAbbreviated الآن REL لإصدارات نظام التشغيل التي تم طرحها في المستوى 35 من واجهة برمجة التطبيقات والإصدارات الأحدث، لأنّ النظام الأساسي الأساسي لم يعُد يتيح استخدام الأسماء الرمزية غير الرقمية. (Ib17fd)
  • تم إصلاح عطل في "FrameTimingMetric" عند حدوث إعادة مزامنة للإطارات. (I7c6f4، b/394610806)
  • لم يعُد من المفترض أن يكون Choreographer#doFrame هو الجزء العلوي من إطار حزمة التكديس في سلسلة التعليمات الرئيسية لـ FrameTimingQuery. (Iee0e0، b/340206285)

الإصدار ‎1.4.0-alpha08

‫12 فبراير 2025

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

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

  • تم نقل واجهات برمجة التطبيقات الخاصة بإضافة TraceProcessor.runSession() لتكون تجريبية، لأنّها من المرجّح أن تصبح دوال إنشاء ملموسة في النهاية على Android. (Ib0528، b/393640753)
  • أصبحت معظم عمليات تنفيذ Startup Insights الآن علنية/تجريبية، وتم نقلها إلى العنصر TraceProcessor. راجِع StartupInsights. (I0aa00)
  • إيقاف BenchmarkRule.runWithTimingDisabled {} نهائيًا واستخدام BenchmarkRule.runWithMeasurementDisabled {} بدلاً منه، لأنّه يصف السلوك بشكل أكثر وضوحًا، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسية MicrobenchmarkScope لأنّه لا يمكن إعادة تعريف الدالة runWithMeasurementDisabled لفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716)
  • تم نقل مكتبات قياس الأداء إلى Kotlin 2.0. (I9d1e0)
  • تمت إزالة وسيطة أداة androidx.benchmark.startupProfiles.enable. لم يعُد هذا الإعداد مفيدًا، إذ يمكن التحكّم فيه من خلال الوسيطة includeInStartupProfile في BaselineProfileRule.collect(). (I39eb4)

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

  • تم تقليل عدد استدعاءات الدوال الداخلية في Microbenchmark أثناء إنشاء الملفات الشخصية، وذلك لتوضيح سجلّ الإجراءات مثلاً (Ifaed8)
  • إصلاح افتراضي للأعطال: "تعذّر إيقاف [ProcessPid(processName=perfetto, pid=...)]". الآن، ستسجّل أداة Benchmark رسالة بدلاً من التعطّل عندما يتعذّر إيقاف عملية Perfetto في الخلفية قبل تشغيل الأداة. (I37d3e، b/323601788)
  • تم إصلاح الخطأ IllegalStateExceptions الذي يحمل التصنيف "pm dump-profiles stdout المتوقّع" والذي نتج عن التدقيق الصارم في تنسيق الناتج. (I358dc)

الإصدار ‎1.4.0-alpha07

‫29 يناير 2025

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

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

  • يقدّم BaselineProfileRule الآن واجهة برمجة تطبيقات collectWithResults(...) تتضمّن قائمة بالمسارات المؤدية إلى الملفات الشخصية المحسوبة. (I056f8)
  • تمت إضافة وسيطة قياس حالة التطبيق androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline، والتي يمكن ضبطها على "خطأ" لإيقاف سلوك "الاستثناء عند انتهاء الموعد النهائي" لـ measureRepeatedOnMainThread من أجل إجراء الاختبارات المحلية. ولا يُنصح بذلك في حالات أخرى، لأنّه يزيد من احتمالية حدوث أخطاء ANR أثناء الاختبارات. (Idbeec، b/353226476)

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

  • تمت إضافة @JvmOverloads إلى دالة الإنشاء MicrobenchmarkConfig. (I13fd3)
  • تمت إعادة تصميم BenchmarkRule ليتم إنشاؤه فوق الكوروتين، ودعم سلوك yield() بشكل أفضل. أدت عملية إعادة الهيكلة هذه إلى إزالة العديد من واجهات برمجة التطبيقات التجريبية في BenchmarkState، ولكن ستتم إضافة بدائل لها حسب الحاجة. بالإضافة إلى ذلك، أضفنا runWithMeasurementDisabled لتوضيح السلوك (يتم إيقاف جميع عمليات القياس مؤقتًا). سيتم إيقاف runWithTimingDisabled نهائيًا في المستقبل. (I19837، b/389149423، b/311242861)
  • انقل PerfettoTraceProcessor إلى TraceProcessor في عنصر androidx.benchmark:benchmark-traceprocessor جديد، واجعل معظم واجهة برمجة التطبيقات غير تجريبية. يجب تعديل أي TraceMetric مخصّص أو أي شيء يقرأ من عمليات التتبُّع لاستخدام عملية الاستيراد الجديدة TraceProcessor. تعمل واجهة برمجة التطبيقات TraceProcessor الجديدة تمامًا مثل الواجهة القديمة، ولكنّها مكتبة واجهة مستقلة (تشبه إلى حدّ ما طبقة androidx.sqlite من Room) مع تنفيذ خاص بنظام التشغيل Android مضمّن في أداة قياس الأداء الكلي. يمكن استخدام العنصر الجديد على جهاز JVM أيضًا، ولكن عليك حاليًا بدء نسختك الخاصة من ملف TraceProcessor الثنائي وتوفير منفذ للاتصال به. (I3a767، I62563، b/381134564)

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

  • عرض رسالة خطأ أكثر وضوحًا عندما يتعذّر على MacrobenchmarkScope.startActivityAndWait بدء العملية المستهدَفة (ربما بسبب تعطُّل العملية المستهدَفة)، بدلاً من الرسالة الأكثر غموضًا "يتعذّر تأكيد اكتمال بدء النشاط" (I3539b)
  • تم إصلاح العديد من أخطاء البنية في أمثلة Kotlin، وتمييز البنية في العديد من أمثلة Java / build.gradle. (Ib3808)
  • تم توضيح مستندات المَعلمتَين ArtMetric وCaptureInfo. (I96e60)

الإصدار ‎1.4.0-alpha06

‫11 ديسمبر 2024

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

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

  • تمت إزالة استخدام @Language("sql") في PerfettoTraceProcessor.Session.query()، لأنّ ميزة تمييز/تحليل الاستوديو معطّلة. (Idc2fa، b/377733398)

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

  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن إمكانية القيم الفارغة في JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I46810، b/326456246)
  • تم تصحيح ArtMetric للإبلاغ عن تحميل الفئة (وليس تهيئتها)، وتم تحسين المستندات لتوضيح سلوك وقت التشغيل. (I9915c)
  • في ميزة "المستخدمون المتعدّدون" على Android، نفِّذ الأوامر بصفتك مستخدمًا رئيسيًا على الأجهزة التي تم الوصول إلى جذرها فقط. (I88b44)

الإصدار ‎1.4.0-alpha05

‫13 نوفمبر 2024

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

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

  • تم إصلاح مشكلة في المستوى 34 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، حيث كان أداء CompilationMode.None() غير متّسق ولا يمثّل الأداء الأولي في أسوأ الحالات. يساعد هذا في حلّ مشكلة تغيير في النظام الأساسي يسمح لحالة تجميع verify في ART بتجميع التطبيقات جزئيًا (يؤثر فقط في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (Ie48d0)
  • تم إصلاح مشكلة كانت تؤدي إلى التقاط بيانات تتبُّع (قصيرة بشكل خاص) لا تُبلغ عن القياس من "مقاييس Macrobenchmark" المدمجة، وذلك بسبب اقتطاع اسم العملية ضمن بيانات تتبُّع Perfetto. تعمل أداة Macrobenchmark الآن على حلّ هذه المشكلة من خلال البحث عن اسم الحزمة المقتطَع في جميع طلبات البحث المضمّنة، بالإضافة إلى اسم الحزمة المتوقّع. يُرجى العِلم أنّ عمليات تنفيذ TraceMetric المخصّصة أو المتصلين المباشرين الآخرين بـ PerfettoSession.query يمكنهم تنفيذ هذا السلوك نفسه من خلال تغيير process.name LIKE "$packageName" في طلب بحث Perfetto ليصبح (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))") بدلاً من ذلك. (I5bf01، b/377565760)

الإصدار ‎1.4.0-alpha04

‫30 أكتوبر 2024

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

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

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

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

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

الإصدار 1.4.0-alpha03

‫16 أكتوبر 2024

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

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

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

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

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

الإصدار 1.4.0-alpha02

‫2 أكتوبر 2024

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

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

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

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

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

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

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

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

  firebaseTestLab {

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

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

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

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

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

الإصدار 1.4.0-alpha01

‫18 سبتمبر 2024

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

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

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

لتفعيل الميزة في مقياس أداء بدء التشغيل:

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

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

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

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

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

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

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

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

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

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

الإصدار 1.3

الإصدار 1.3.4

‫26 مارس 2025

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

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

  • تم إصلاح حالات عدم التوافق مع ميزة "عزل مشاريع Gradle" في المكوّن الإضافي لنظام Gradle الخاص بـ Benchmark Baseline. (b/404523257)

الإصدار 1.3.3

‫16 أكتوبر 2024

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

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

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

الإصدار 1.3.2

‫2 أكتوبر 2024

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

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

  • تم إصلاح مشكلة عدم قدرة مختبر Firebase الافتراضي (FTL) على استرداد ملفات نتائج الملف الشخصي للمرجع أو اختبار الأداء الكبير من Baseline Profile Gradle Plugin. (I2f678، b/285187547)

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

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

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

  firebaseTestLab {

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

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

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

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

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

الإصدار 1.3.1

‫18 سبتمبر 2024

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

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

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

الإصدار 1.3.0

‫21 أغسطس 2024

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

التغييرات في مكتبة Microbenchmark منذ الإصدار 1.2.0

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

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

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

تغييرات على المكوّن الإضافي لنظام Gradle منذ الإصدار 1.2.0 / عملية تسجيل "ملف Baseline Profile"

  • تمت زيادة الحد الأقصى المقترَح لإصدار 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 قبل الإصدار ‎8.3.0-alpha15 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (I1d2af، b/313992099)
  • تم إصلاح عنوان URL الأساسي وملف تعريف بدء التشغيل في نهاية مهمة الإنشاء. (I802e5، b/313976958)

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

  • التقاط بيانات التتبُّع
    • تم تقليل خطأ EXITCODE 2 عند بدء perfetto من خطأ إلى تحذير مسجَّل
    • تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلّب واجهة برمجة التطبيقات 28) (Ia0af2، b/341852305)
    • تفعيل تتبُّع علامات porter تلقائيًا في مقاييس الأداء ويؤدي ذلك إلى تسجيل نقاط تتبُّع قفل التنشيط، على سبيل المثال. (Icfe44، b/286551983)
    • زيادة المهلة الزمنية لبدء تسجيل التتبُّع لتجنُّب الأعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841، b/329145808)
    • تمت إضافة واجهات برمجة تطبيقات عامة PerfettoTraceProcessor.Session.queryMetrics مع صيغ JSON وtextproto وproto الثنائية (غير المرمّزة). تتيح لك هذه الميزات الاستعلام عن المقاييس المضمّنة في TraceProcessor (I54d7f، b/304038382)
    • فعِّل خيار حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر عدم توفّر البيانات في بداية عملية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
  • الردّ بتنسيق JSON
    • تمت إضافة معلومات إضافية في سياق مقياس الأداء في مخرجات JSON:
      • ‫context.artMainlineVersion - إصدار عدد صحيح من وحدة Art الرئيسية (إذا كانت متوفّرة على الجهاز، -1 بخلاف ذلك)
      • ‫context.build.id - يساوي android.os.Build.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 ليتوافق مع ترتيب أولوية المقاييس، وتقليل تأثير إيقاف/استئناف المقاييس ذات الأولوية المنخفضة بشكل كبير على نتائج المقاييس ذات الأولوية الأعلى. على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطة قياس الأداء cpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند حدوث إيقاف مؤقت أو استئناف. (I39c2e، b/286306579، b/307445225)
  • تم تقليل احتمال تسبُّب تجميع عيّنات من تسلسل استدعاء الدوال في حدوث خطأ measureRepeatedOnMainThread من خلال نقل عملية تحويل تجميع عيّنات من تسلسل استدعاء الدوال خارج سلسلة التعليمات الرئيسية، وذلك لتجنُّب تجاوز المهلة المحدّدة لسلسلة التعليمات الرئيسية. (I487a8، b/342237318)
  • تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة التطبيقات الجديدة للنظام الأساسي لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 من AGP أو الإصدارات الأحدث (مثل الإصدار 3.3 من R8) ولجميع الإصدارات عند استخدام الإصدار 8.1 من AGP أو الإصدارات الأحدث (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
  • تمت إضافة عملية التحقّق من إصدار "مكوّن Android الإضافي لبرنامج Gradle" لإرسال اسم الحزمة كمعلَمة instr. قبل الإصدار 8.4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق قياس الأداء من خلال وسيطات قياس الأداء. (0c72a3f)

الإصدار ‎1.3.0-beta02

‫10 يوليو 2024

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

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

  • يتم التعامل مع رمز الخروج 2 بشكل سلس عند بدء Perfetto لتسجيل تحذير، ولكن تتم المتابعة.

الإصدار 1.3.0-beta01

‫12 يونيو 2024

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

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

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

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

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

الإصدار 1.3.0-alpha05

‫14 مايو 2024

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

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

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

الإصدار 1.3.0‎-alpha04

‫1 مايو 2024

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

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

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

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

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

الإصدار 1.3.0-alpha03

‫17 أبريل 2024

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

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

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

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

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

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

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

الإصدار 1.3.0-alpha02

‫20 مارس 2024

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

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

  • إتاحة استخدام R8 التجريبي في اختبارات الأداء الدقيق من خلال قواعد Proguard المضمّنة يُرجى العِلم أنّ هذا الدعم تجريبي، ويتطلّب الإصدار 8.3 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" لإزالة البيانات غير الضرورية من اختبارات وحدات المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين 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 في مقاييس الأداء لسلسلة التعليمات الرئيسية (مثل تلك التي تتفاعل مع واجهات مستخدم Views أو Compose)، خاصةً أثناء تشغيل مجموعات كبيرة من الاختبارات في بيئة التكامل المستمر (CI). (I5c86d)
  • تمت إضافة FrameTimingGfxInfoMetric، وهو تنفيذ تجريبي بديل لـ FrameTimingMetric مع مقاييس واردة مباشرةً من النظام الأساسي، بدلاً من استخراجها من تتبُّع Perfetto. (I457cb، b/322232828)
  • إضافة إمكانية تفريغ ملف شخصي في ART أثناء تكرارات warmUp الفردية (I17923)
  • أجرينا عدة تغييرات على واجهة برمجة التطبيقات TraceSectionMetric:
    • إضافة Mode.Min، Mode.Max
    • إضافة وسيطة التصنيف لتجاهل اسم القسم باعتباره تصنيف مقياس
    • تمت إضافة اسم الوضع إلى الناتج لتوضيح معنى المقياس
    • تم تغيير القيمة التلقائية إلى المجموع، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة يجب الانتباه إلى هذه التغييرات في استخدام CI، لأنّها قد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل. (Ic1e82، b/301892382، b/301955938)

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

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

الإصدار 1.2

الإصدار 1.2.4

‫17 أبريل 2024

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

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

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

الإصدار 1.2.3

‫24 يناير 2024

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

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

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

الإصدار 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)
  • تمت إضافة خصائص لتفعيل دمج عمليات تشغيل اختبارات Android Studio (b/309805233)، (b/309116324)

الإصدار 1.2.0

‫18 أكتوبر 2023

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

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

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

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

Macrobenchmark

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

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

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

    • تمت إضافة TraceSectionMetric التجريبية التي تتيح استخراج توقيت بسيط من مجموعات trace("") {} في تطبيقك، أو TraceMetric للاستفادة من إمكانية طلب البحث الكاملة في Perfetto TraceProcessor.
    • تمت إضافة PowerMetric التجريبية لتسجيل معلومات استخدام الطاقة
    • تمت إضافة مقياس تجريبي MemoryCountersMetric لاحتساب أخطاء الصفحة
    • تمت إضافة واجهة برمجة التطبيقات التجريبية PerfettoTraceProcessor، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
  • الإصلاحات

    • تم إصلاح الأعطال التي تحدث عند تثبيت الملفات الشخصية أو استخراجها من تطبيق مثبَّت من حِزم APK متعددة (على سبيل المثال، من حِزمة تطبيق).
    • تم إصلاح مشكلة تجاهل FrameTimingMetric للإطارات التي تتضمّن معرّفات إطارات غير متسقة (بشكل عام، الإطارات أثناء التموجات على الإصدار 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) (I747d2، b/279088460)
    • تم إصلاح أخطاء التحليل في عمليات التتبُّع التي يزيد حجمها عن 64 ميغابايت (Ief831، b/269949822)
    • تم توضيح الأخطاء التي تحدث عندما لا يتم ضبط نسخة نظام التشغيل على الجهاز (خاصةً المحاكي) بشكل صحيح للتتبُّع أو التجميع
    • تخطّي التحقّق من مستوى البطارية للأجهزة التي لا تحتوي على بطارية (الأجهزة الصغيرة والكبيرة)
    • تحسين إخراج الملفات، مع ظهور أخطاء أكثر وضوحًا لأدلة الإخراج غير الصالحة، وإعدادات تلقائية أكثر أمانًا
    • تحسين ثبات StartupMode.COLD من خلال إسقاط ذاكرة التخزين المؤقت للتظليل باستمرار (يتم عرضها أيضًا من خلال MacrobenchmarkScope.dropShaderCache)
    • تم إصلاح خيار leanback الاحتياطي لـ "startActivityAndWait".

Microbenchmark

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

الإصدار 1.2.0-rc02

‫6 أكتوبر 2023

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

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

  • تم إصلاح مخرجات ملف Benchmark لكي لا يتم إيقاف عملية نسخ ملف المكوّن الإضافي 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) تم توضيح تصنيف سجلّ الإجراءات عند ربطه في نتائج اختبارات "استوديو Android"، وتم إصلاح أسماء ملفات سجلّ الإجراءات لتكون فريدة على الجهاز/المضيف، وبذلك لن يتم استبدالها عند تشغيل أكثر من مقياس أداء واحد. (I08e65، b/285912360)
  • يضمن هذا الخيار أنّ الجهاز يكون نشطًا عند تسجيل ملف تعريف أساسي. (I503fc)

الإصدار ‎1.2.0-beta05

‫30 أغسطس 2023

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

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

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

الإصدار ‎1.2.0-beta04

‫23 أغسطس 2023

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

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

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

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

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

الإصدار ‎1.2.0-beta03

‫9 أغسطس 2023

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

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

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

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

  • تمت إعادة تسمية وسيطة أداة fullTracing.enable إلى perfettoSdkTracing.enable لضمان الاتساق مع اسم العنصر المصدَّق عليه والمراجع الأخرى. سيستمر استخدام fullTracing.enable كخيار احتياطي. (I7cc00)
  • ستظهر الآن نقاط التتبُّع الداخلية لمكتبة قياس الأداء (بما في ذلك تتبُّع الحلقات/المراحل الدقيقة لقياس الأداء) في عارض تتبُّع نظام Studio، وسيتم تضمينها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
  • تمت إزالة خطأ NOT-PROFILEABLE في اختبارات macrobenchmark على الإصدار 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 لإصدارَي واجهة برمجة التطبيقات 26 و28 (I0a328، b/282191686)
  • تمت إضافة تفاصيل إلى خطأ إعادة ضبط عملية التجميع لاقتراح تحديث المحاكي، لأنّ بعض المحاكيات قد حلّت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
  • اجعل androidx.test.uiautomator:uiautomator:2.2.0 تبعية api بدلاً من implementation. (I1981e)

الإصدار 1.2.0-beta01

‫18 يوليو 2023

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

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

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

الإصدار ‎1.2.0-alpha16

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

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

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

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

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

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

الإصدار 1.2.0-alpha15

‫7 يونيو 2023

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

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

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

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

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

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

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

الإصدار ‎1.2.0-alpha14

‫3 مايو 2023

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

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

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

الإصدار 1.2.0-alpha13

‫5 أبريل 2023

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

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

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

الإصدار 1.2.0‎-alpha12

‫22 مارس 2023

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

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

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

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

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

الإصدار 1.2.0-alpha11

‫8 مارس 2023

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

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

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

الإصدار 1.2.0-alpha10

‫22 فبراير 2023

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

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

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

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

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

الإصدار ‎1.2.0-alpha09

‫11 يناير 2023

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

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

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

الإصدار 1.2.0-alpha08

‫7 ديسمبر 2022

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

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

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

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

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

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

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

الإصدار 1.2.0-alpha07

‫9 نوفمبر 2022

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

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

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

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

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

الإصدار ‎1.2.0-alpha06

‫24 أكتوبر 2022

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

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

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

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

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

الإصدار ‎1.2.0-alpha05

‫5 أكتوبر 2022

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

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

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

الإصدار 1.2.0-alpha04

‫21 سبتمبر 2022

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

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

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

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

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

    في build.gradle:

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

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

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

    على سبيل المثال، في ملف build.gradle الخاص بوحدة macrobenchmark:

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

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

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

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

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

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

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

الإصدار 1.1.1

الإصدار 1.1.1

‫9 نوفمبر 2022

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

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

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

الإصدار 1.1.0

الإصدار 1.1.0

‫15 يونيو 2022

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

  • هذا الإصدار مطابق للإصدار androidx.benchmark:benchmark-*:1.1.0-rc03.

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

الإصدار 1.1.0-rc03

‫1 يونيو 2022

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

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

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

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

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

  • إتاحة ميزة "الأجهزة المُدارة من خلال Gradle" عند إنشاء "ملفات شخصية للمرجع" باستخدام Macrobenchmarks (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>، ثم تجاوز خطوة تجميع macrobenchmark.

    على سبيل المثال، في ملف build.gradle الخاص باختبارات Macrobenchmark:

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

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

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

    على سبيل المثال، في ملف build.gradle الخاص بوحدة macrobenchmark:

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

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

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

الإصدار 1.1.0-rc01

‫20 أبريل 2022

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

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

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

الإصدار ‎1.1.0-beta06

‫6 أبريل 2022

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

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

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

الإصدار ‎1.1.0-beta05

‫23 مارس 2022

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

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

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

الإصدار ‎1.1.0-beta04

‫23 فبراير 2022

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

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

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

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

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

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

  • تمت فلترة قواعد "الملف الشخصي للمرجع" لاستهداف الإصدار 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 إلى مكتبة macrobenchmark ضمن علامة تجريبية للسماح برصد حالات نقص البيانات الصوتية (Ib5972)
  • لم يعُد BaselineProfileRule يقبل حظر setup لأنّ هذه الوظيفة كانت مماثلة لوظيفة profileBlock. (Ic7dfe، b/215536447)

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

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

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

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

الإصدار ‎1.1.0-beta02

‫26 يناير 2022

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

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

  • أصبحت نتائج Microbenchmark Stack Sampling / سجلّ الإجراءات Profile مرتبطة الآن بمخرجات &quot;استوديو Android&quot;، على غرار مخرجات جمع البيانات الأخرى، ولا تمنع مقياس التخصيص. (Idcb65، b/214440748، b/214253245)
  • تطبع BaselineProfileRule الآن الأمر adb pull في logcat ومخرجات Studio لسحب ملف نصي تم إنشاؤه من BaselineProfile. (f08811)

الإصدار ‎1.1.0-beta01

‫12 يناير 2022

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

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

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

الإصدار 1.1.0-alpha13

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

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

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

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

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

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

الإصدار ‎1.1.0-alpha12

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

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

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

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

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

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

الإصدار 1.1.0-alpha11

‫3 نوفمبر 2021

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

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

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

الإصدار ‎1.1.0-alpha10

‫27 أكتوبر 2021

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

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

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

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

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

الإصدار 1.1.0-alpha09

‫13 أكتوبر 2021

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

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

  • إتاحة إزالة ذاكرة التخزين المؤقت لصفحة Kernel بدون الوصول إلى الجذر في واجهة برمجة التطبيقات 31/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)
  • التبديل إلى مقاييس النقطة العائمة في جميع مكتبات الاختبار (تم اقتطاعها في واجهة مستخدم "استوديو Android") (I69249، b/197008210)

الإصدار 1.1.0-alpha07

‫1 سبتمبر 2021

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

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

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

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

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

الإصدار 1.1.0-alpha06

‫18 أغسطس 2021

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

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

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

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

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

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

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

الإصدار ‎1.1.0-alpha05

‫4 أغسطس 2021

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

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

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

  • تم التبديل إلى startActivityAndWait لتفعيل التشغيل من خلال am start، ما يقلّل وقت كل تكرار للقياس بمقدار 5 ثوانٍ تقريبًا، ولكن لن يكون من الممكن استخدام حِزم الأهداف. (I5a6f5، b/192009149

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

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

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

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

تمت إضافة عناصر Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro)

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

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

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

الإصدار ‎1.1.0-alpha01

‫10 يونيو 2020

تم إصدار "androidx.benchmark:benchmark-common:1.1.0-alpha01" و"androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01" و"androidx.benchmark:benchmark-junit4:1.1.0-alpha01". يتضمّن الإصدار 1.1.0-alpha01 هذه التعديلات.

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

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

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

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

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

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

الإصدار 1.0.0

الإصدار 1.0.0 من معيار الأمان

‫20 نوفمبر 2019

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

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

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

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

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

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

الإصدار ‎1.0.0-rc01

‫23 أكتوبر 2019

تم إصدار "androidx.benchmark:benchmark-common:1.0.0-rc01" و"androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01" و"androidx.benchmark:benchmark-junit4:1.0.0-rc01". يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.

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

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

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

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

الإصدار ‎1.0.0-beta01

‫9 أكتوبر 2019

تم إصدار "androidx.benchmark:benchmark-common:1.0.0-beta01" و"androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01" و"androidx.benchmark:benchmark-junit4:1.0.0-beta01". يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.

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

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

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

  • تمت إضافة تبعية androidx.annotation:android-experimental-lint، لكي ينتج عن رمز Java أخطاء في أداة التحقّق من الأخطاء بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما يوفّره تعليق Kotlin التوضيحي التجريبي لمتصلي Kotlin.
  • يرصد الآن بشكل صحيح استخدام وسيطة additionalTestOutputDir للأدوات من أجل الإخراج في الإصدار 3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك لمعرفة الوقت الذي سيتولّى فيه المكوّن الإضافي لنظام 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)
    • تمت إضافة إمكانية نسخ البيانات الجديدة المستندة إلى Android Gradle Plugin عند تنفيذ اختبارات الأداء وعند استخدام الإصدار 3.6 أو الإصدارات الأحدث من Android Gradle Plugin
  • إضافات إلى تنسيق JSON
    • إخراج إجمالي وقت تشغيل اختبار قياس الأداء (b/133147694)
    • @Parameterized benchmarks that use a name string (for example @Parameters(name = "size={0},depth={1}")) now output parameter names and values per benchmark in the JSON output (b/132578772)
  • وضع التشغيل التجريبي (b/138785848)
    • تمت إضافة وضع "التشغيل التجريبي" لتشغيل كل حلقة قياس أداء مرة واحدة فقط، وذلك للتحقّق من الأخطاء أو الأعطال بدون تسجيل القياسات. يمكن أن يكون ذلك مفيدًا، على سبيل المثال، لتشغيل مقاييس الأداء بسرعة في مرحلة ما قبل الإرسال للتأكّد من أنّها تعمل بشكل صحيح.

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha03

‫2 يوليو 2019

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

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

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

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

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

الإصدار ‎1.0.0-alpha02

‫6 يونيو 2019

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

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

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

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

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

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

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

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

الإصدار ‎1.0.0-alpha01

‫7 مايو 2019

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