Bu sayfada, Microbenchmark kitaplığını kullanırken Gradle olmayan bir derleme sisteminin yapılandırılması açıklanmaktadır.
Microbenchmark kitaplığı, doğrudan Android Gradle eklentisiyle entegrasyon sağlamak için bir Gradle eklentisi gönderse de bu eklentiyi Bazel veya Buck gibi diğer derleme sistemlerinde de kullanabilirsiniz.
Enstrümantasyon
AndroidBenchmarkRunner
veya bir alt sınıfı test manifestinin araç bloğunda belirterek araç çalıştırıcınız olarak kullanın:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" /> ... </manifest>
Doğru ölçümler elde etmek için karşılaştırmalarda hata ayıklaması mümkün olmamalıdır. Hata ayıklaması yapılabilir işaretini doğru şekilde ayarlamazsanız kitaplık, geçersiz sonuçları bildirmek yerine hata bildirir. Android Studio profil oluşturucularıyla kullanmak üzere yerel çalıştırmalar sırasında bu ayarı değiştirmeniz gerekebilir. Bunun için debuggable=true
gerekir.
Mikro karşılaştırmaları iki şekilde çalışacak şekilde oluşturabilirsiniz: kendi kendine enstrümantasyon sağlayan bir APK içinde veya bir test APK'sı başka bir APK ile.
Otomatik enstrümantasyon APK'ları
Kendi kendine enstrümantasyon sağlayan bir APK ile (com.android.library
içindeki bir androidTest
dizini için Gradle tarafından çıkış olarak) tek APK'nın Android manifestindeki hata ayıklama işlemini devre dışı bırakmanız gerekir:
<manifest package="com.example.library.test" ...> <instrumentation android:name="androidx.benchmark.junit4.AndroidBenchmarkRunner" android:targetPackage="com.example.library.test"/> <application android:debuggable="false"/> </manifest>
Test APK'sı tarafından kullanılan uygulama APK'sı
Derlemeniz iki APK (bir uygulama APK'sı ve bir test APK'sı) oluşturuyorsa uygulama APK'sını debuggable=false
olarak ayarlamanız gerekir.androidTest
com.android.app
Test APK'sının hata ayıklaması yapılabilir işaretini Android OS tarafından yoksayılır.
<!-- 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 ve Gradle, uygulama modülü APK'larının mikro karşılaştırmasını desteklemez. Bunun nedeni, APK'nın hata ayıklanamayan, optimize edilmiş veya küçültülmüş bir varyantına bağlı olan, ancak karşılaştırmalardan gelen çağrıları uygulama koduna bölmeden küçültmeden ek bir test dizinini desteklemenin karmaşıklığıdır.
Küçültme ve optimizasyon
Kullanıma sunulmak üzere olan bir performans elde etmek için karşılaştırmalarınızda küçültme ve optimizasyon kullanmanızı öneririz. Örnek kod için Karşılaştırma örneği projesine bakın.
Kod kapsamı
Karşılaştırmaları, kapsam devre dışı olarak ve JaCoCo gibi araçlar tarafından kitaplık veya DEX yönetimi olmaksızın çalıştırmanızı öneririz.
Bu nedenle, karşılaştırmaları diğer araç testlerinden bir kaynak kümesi olarak ayırmanızı ve yayın bağımlılıklarıyla ayrı ayrı oluşturmanızı öneririz. Böylece kapsam olan ve olmayan birden fazla test oluşturmak zorunda kalmazsınız.
Özellikle yerel olarak oluşturulan kitaplıkların dayalı olduğu kitaplıkların hata ayıklama varyantlarında kapsam etkinleştirilerek oluşturulabilir.
Testlerinizi çalıştırın
Testlerinizi komut satırından çalıştırabilir ve birlikte çalışacağı sınıfları aşağıdaki örnekte gösterildiği gibi belirtebilirsiniz:
adb shell am instrument -w com.example.benchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Çalışma zamanında Microbenchmark kitaplığını Gradle olmadan yapılandırmak için Microbenchmark enstrümantasyonu bağımsız değişkenleri bölümüne bakın.
Sizin için önerilenler
- Not: Bağlantı metni JavaScript kapalıyken gösterilir
- Mikro Karşılaştırma Yazma
- Temel Profiller oluşturma {:#creator-profile-rules}