ساخت Microbenchmark بدون Gradle

این صفحه پیکربندی یک سیستم ساخت غیر Gradle را هنگام استفاده از کتابخانه Microbenchmark توضیح می‌دهد.

اگرچه کتابخانه Microbenchmark یک افزونه Gradle را برای ادغام مستقیم با افزونه Android Gradle ارسال می‌کند، اما می‌توانید از آن در سایر سیستم‌های ساخت مانند Bazel یا Buck نیز استفاده کنید.

ابزار دقیق

با مشخص کردن آن در بلوک ابزاردقیق مانیفست آزمایشی، از AndroidBenchmarkRunner یا یک زیر کلاس به‌عنوان ابزار دقیق خود استفاده کنید:

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

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

برای به دست آوردن اندازه‌گیری‌های دقیق، معیارها نباید قابل اشکال‌زدایی باشند. اگر پرچم قابل اشکال زدایی را به درستی تنظیم نکنید، کتابخانه به جای گزارش نتایج نامعتبر، خطا می دهد. ممکن است لازم باشد این تنظیم را در طول اجراهای محلی برای استفاده با نمایه‌کننده‌های Android Studio تغییر دهید، که به debuggable=true نیاز دارند.

شما می‌توانید Microbenchmark‌هایی را برای اجرا به دو صورت بسازید: در یک 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 تنظیم کنید. پرچم قابل اشکال زدایی 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 Studio و Gradle از microbenchmarking یک ماژول برنامه APK پشتیبانی نمی کنند. این به دلیل پیچیدگی پشتیبانی از دایرکتوری آزمایشی اضافی است که به یک نوع غیراشکال‌زدایی، بهینه‌سازی یا کوچک‌سازی شده APK بستگی دارد، اما بدون کوچک‌سازی، تماس‌ها را از معیارها به کد برنامه تبدیل می‌کند.

تالیف

توصیه می‌کنیم قبل از اجرای آزمایش‌ها با استفاده از دستور زیر، APK microbenchmark خود را کامپایل کنید:

adb shell cmd package compile -f -m speed com.example.benchmark

کوچک سازی و بهینه سازی

توصیه می‌کنیم از کوچک‌سازی و بهینه‌سازی برای معیارهای خود استفاده کنید تا عملکردی نزدیک به انتشار داشته باشید. برای مثال کد، پروژه نمونه بنچمارک را ببینید.

پوشش کد

ما توصیه می‌کنیم معیارهایی را با پوشش غیرفعال و بدون هیچ گونه کتابخانه یا انحراف DEX توسط ابزارهایی مانند JaCoCo اجرا کنید.

به همین دلیل، توصیه می‌کنیم معیارها را به‌عنوان یک مجموعه منبع از سایر آزمایش‌های ابزار دقیق جدا کنید و آنها را به‌طور جداگانه با وابستگی‌های انتشار بسازید. این از نیاز به ساخت بیش از یک بار تست، چه با پوشش و چه بدون پوشش جلوگیری می کند.

انواع اشکال‌زدایی کتابخانه‌هایی که معیار شما به آن‌ها وابسته است، به ویژه آنهایی که به صورت محلی ساخته شده‌اند، ممکن است با پوشش فعال ساخته شوند.

تست های خود را اجرا کنید

همانطور که در مثال زیر نشان داده شده است، می‌توانید تست‌های خود را از خط فرمان اجرا کنید و کلاس‌هایی را برای اجرا مشخص کنید:

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

برای پیکربندی کتابخانه Microbenchmark در زمان اجرا بدون Gradle، به آرگومان های ابزار دقیق Microbenchmark مراجعه کنید.

{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}