إنشاء مقاييس أداء مصغَّرة بدون استخدام Gradle

تصف هذه الصفحة تهيئة نظام إصدار غير Gradle عند استخدام مكتبة مقاييس الأداء المصغّرة.

على الرغم من أنّ مكتبة MicroMeasurement توفّر مكوّنًا إضافيًا من Gradle للدمج مباشرةً مع مكوّن Gradle الإضافي في Android، يمكنك أيضًا استخدامه في أنظمة تصميم أخرى، مثل Bazel أو Buck.

قياس حالة التطبيق بشأن الأجهزة

يمكنك استخدام AndroidBenchmarkRunner أو فئة فرعية كمشغّل للأجهزة من خلال تحديدها في مجموعة قياس حالة التطبيق ضمن بيان الاختبار:

<manifest
    package="com.example.library.test" ...>

    <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" />
    ...
</manifest>

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

يمكنك إنشاء مقاييس أداء مصغَّرة لتنفيذها بطريقتين: ضمن ملف APK للأداة الذاتية أو من خلال اختبار حزمة APK اختباري لأداة APK أخرى.

حِزم APK للأدوات الذاتية

باستخدام حزمة APK للضبط الذاتي، كإخراج من Gradle لدليل androidTest من com.android.library، عليك إيقاف إمكانية تصحيح الأخطاء في بيان Android الفردي لحزمة APK:

<manifest
    package="com.example.library.test" ...>

    <instrumentation
        android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner"
        android:targetPackage="com.example.library.test"/>

    <application android:debuggable="false"/>
</manifest>

تم قياس حزمة APK للتطبيق من خلال حزمة APK تجريبية.

إذا كان الإصدار ينتج ملفَّي APK، وهما حزمة APK للتطبيق وحزمة APK تجريبية، كإخراج من Gradle لدليل androidTest من حزمة com.android.app، عليك ضبط ملف APK للتطبيق على debuggable=false. يتجاهل نظام التشغيل Android علامة تصحيح الأخطاء لحزمة APK التجريبية.

<!-- Test manifest. -->
<manifest
    package="com.example.android.app.test" ...>

    <instrumentation
        android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner"
        android:targetPackage="com.example.android.app"/>
    <!-- This debuggable is ignored by the OS. -->
</manifest>

<!-- App being tested. -->
<manifest
    package="com.example.android.app" ...>

    <application android:debuggable="false"/>
</manifest>

لا يوفّر كل من "استوديو Android" ومنصة Gradle إمكانية قياس الأداء الجزئي لحزمة APK الخاصة بوحدة التطبيق. ويرجع ذلك إلى التعقيد في إتاحة دليل اختبار إضافي يعتمد على متغير APK غير قابل للتصحيح أو محسَّن أو مصغَّر من حزمة APK، ولكن بدون أن يؤدي تصغيره إلى إحداث خلل في طلبات البيانات من مقاييس الأداء إلى رمز التطبيق.

تصغير الحجم والتحسين

ننصحك باستخدام تقليص الأحجام وتحسين الأداء من أجل الحصول على أداء في وقت قريب من إصداره. على سبيل المثال، يمكنك الاطّلاع على مشروع نموذج قياس الأداء.

تغطية الرمز

نقترح إجراء مقاييس أداء مع إيقاف التغطية وبدون استخدام أي مكتبة أو DEX باستخدام أدوات مثل JaCoCo.

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

قد يتم تصحيح الأخطاء في إصدارات المكتبات التي يعتمد عليها مقياسك، وخاصةً المكتبات التي تم إنشاؤها محليًا، مع تفعيل التغطية.

إجراء الاختبارات

يمكنك إجراء اختباراتك من سطر الأوامر وتحديد الفئات التي سيتم تشغيلها معها، كما هو موضّح في المثال التالي:

adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

لضبط مكتبة مقاييس الأداء الصغرى في وقت التشغيل بدون Gradle، يُرجى الاطّلاع على وسيطات أدوات قياس الأداء المصغّرة.