این صفحه پیکربندی یک سیستم ساخت غیر 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 مراجعه کنید.
{% کلمه به کلمه %}برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- یک Microbenchmark بنویسید
- ایجاد نمایه های پایه {:#creating-profile-rules}