این صفحه پیکربندی سیستم ساخت غیرGradle را هنگام استفاده از کتابخانه Microbenchmark شرح میدهد.
اگرچه کتابخانه Microbenchmark یک افزایه Gradle را برای ادغام مستقیم با افزایه Android Gradle ارائه میدهد، میتوانید از آن در سیستمهای ساخت دیگر مانند Bazel یا Buck نیز استفاده کنید.
سازآرایی
از AndroidBenchmarkRunner یا یک زیرکلاس بهعنوان اجراکننده ابزار دقیق خود استفاده کنید
با مشخص کردن آن در بلوک ابزار دقیق مانیفست آزمایشی:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
برای دریافت اندازهگیریهای دقیق، محکها نباید قابلاشکالزدایی باشند. اگر پرچم قابلاشکالزدایی را بهدرستی تنظیم نکنید، کتابخانه بهجای گزارش نتایج نامعتبر، خطا نشان میدهد. ممکن است لازم باشد این تنظیم را درطول اجراهای محلی برای استفاده با نمایههای «استودیو Android» که به debuggable=true نیاز دارند، تغییر دهید.
میتوانید Microbenchmarks را برای اجرا به دو روش بسازید: در یک APK خودابزار، یا با یک APK آزمایشی که APK دیگری را ابزار میکند.
فایلهای APK خودابزارساز
با APK خودابزار—بهعنوان خروجی Gradle برای دایرکتوری androidTest از com.android.library—باید debuggable را در مانیفست 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 Studio و Gradle از محکزنی خرد APK واحد برنامه پشتیبانی نمیکنند. این بهدلیل پیچیدگی پشتیبانی از یک دایرکتوری آزمایشی اضافی است که به یک متغیر غیرقابلاشکالزدایی، بهینهشده، یا کوچکشده از APK بستگی دارد، اما بدون اینکه کوچکسازی تماسها را از محکها به کد برنامه قطع کند.
گردآوریشده
توصیه میکنیم قبلاز اجرای آزمایشها، APK ریز محک خود را بااستفاده از فرمان زیر کامپایل کنید:
adb shell cmd package compile -f -m speed com.example.benchmarkکوچکسازی و بهینهسازی
توصیه میکنیم برای محکهایتان از کوچکسازی و بهینهسازی استفاده کنید تا عملکردی نزدیک به نسخه نهایی دریافت کنید. برای کد نمونه، پروژه نمونه Benchmark را ببینید.
پوشش کد
توصیه میکنیم محکها را با پوشش غیرفعال و بدون هیچگونه کتابخانه یا DEX mangling توسط ابزارهایی مانند JaCoCo اجرا کنید.
به همین دلیل، توصیه میکنیم محکها را بهعنوان مجموعه منبع از سایر آزمایشهای ابزار دقیق جدا کنید و آنها را بهطور جداگانه با وابستگیهای نسخه بسازید. این کار از ساختن آزمایشها بیشاز یک بار، هم با پوشش و هم بدون پوشش، جلوگیری میکند.
انواع اشکالزدایی کتابخانههایی که محک شما به آنها وابسته است، بهویژه آنهایی که بهصورت محلی ساخته شدهاند، ممکن است با فعال بودن پوشش ساخته شوند.
اجرای آزمایشها
میتوانید آزمایشهایتان را از خط فرمان اجرا کنید و کلاسهایی را که باید با آنها اجرا شود مشخص کنید، همانطور که در مثال زیر نشان داده شده است:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunnerبرای پیکربندی کتابخانه Microbenchmark در زمان اجرا بدون Gradle، آرگومانهای ابزار دقیق Microbenchmark را ببینید.
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- نوشتن Microbenchmark
- ایجاد «نمایههای مبنا» {:#creating-profile-rules}