Baseline Profile Gradle eklentisi, oluşturma ve yönetme işini kolaylaştırır. Temel Profiller. Hedeflerinize ulaşmanız için gerçekleştirebilirsiniz:
- Uygulamanız için yeni temel profiller oluşturun.
- Kitaplığınız için yeni Temel Profiller oluşturun.
- Temel profil oluşturma işlemini özelleştirin.
Bu sayfada, özelleştirerek Baseline Profile Gradle eklentisinin nasıl kullanılacağı açıklanmaktadır. Temel Profillerinizin oluşturulması.
Eklenti gereksinimleri
- AGP 8.0 veya sonraki sürümler
- Bağımlılık durumu En son Gradle eklentisi sürümü
Temel Profiller oluşturmak için Gradle Tarafından Yönetilen Cihazlar kullanma
Gradle Yönetilen Cihazı (GMD) kullanmak için:
Temel Profilinizi oluşturun, build.gradle.kts
yapılandırmasına bir tane ekleyin
profil üretici modülünün (muhtemelen :baselineprofile
test modülü)
aşağıdaki örnekte gösterilmektedir:
Kotlin
android { testOptions.managedDevices.devices { create<com.android.build.api.dsl.ManagedVirtualDevice>("pixel6Api31") { device = "Pixel 6" apiLevel = 31 systemImageSource = "aosp" } } }
Eski
android { testOptions.managedDevices.devices { pixel6Api31(ManagedVirtualDevice) { device 'Pixel 6' apiLevel = 31 systemImageSource 'aosp' } } }
Temel Profil'e ekleyerek Temel Profiller oluşturmak için GMD'yi kullanın.
Gradle eklentisi yapılandırması aşağıdaki gibi build.gradle.kts
:baselineprofile
test modülü:
Kotlin
baselineProfile { managedDevices += "pixel6Api31" }
Eski
baselineProfile { managedDevices = ['pixel6Api31'] }
Temel Profiller oluşturmak için GMD kullandığınızda useConnectedDevices
öğesini şuna ayarlayın:
:baselineprofile
test modülünüzde false
:
Kotlin
baselineProfile { ... useConnectedDevices = false }
Groovy
baselineProfile { ... useConnectedDevices false }
Farklı varyantlar için temel profiller oluşturun
Temel profilleri varyant, tür başına veya tek dosya olarak oluşturabilirsiniz.
tüm varyantlar için geçerlidir. Bu davranışı, uygulama veya kitaplık modülünün build.gradle.kts
bölümünde aşağıdaki örnekte gösterildiği gibi birleştirme ayarı üzerinden kontrol edebilirsiniz.
Kotlin
baselineProfile { mergeIntoMain = true }
Groovy
baselineProfile { mergeIntoMain true }
Tüm varyantlar için oluşturulan profilleri tek bir profilde birleştirmek üzere
mergeIntoMain
- true
. Varyant başına Referans Değer oluşturulamaz
Profiller bu ayar true
olduğunda, dolayısıyla adlı tek bir Gradle görevi vardır
generateBaselineProfile
. Profilin çıkışı şudur:
src/main/generated/baselineProfiles
Birleştirmeyi devre dışı bırakmak ve varyant başına bir profiliniz olması için mergeIntoMain
değerini şu değere ayarlayın:
false
. Bu durumda varyanta özel birden fazla Gradle görevi vardır. Örneğin,
Örneğin, ücretsiz ve ücretli olmak üzere iki tat seçeneği olduğunda,
sürüm derleme türü olarak, görevler şunlardır:
* `generateFreeReleaseBaselineProfile`
* `generatePaidReleaseBaselineProfile`
* `generateReleaseBaselineProfile`
Her varyant için birleştirme davranışını belirtmek üzere aşağıdaki kodu kullanın:
Kotlin
baselineProfile { variants { freeRelease { mergeIntoMain = true } } }
Eski
baselineProfile { variants { freeRelease { mergeIntoMain true } } }
Yukarıdaki örnekte, işaretin true
olarak ayarlandığı varyantların tümü
src/main/generated/baselineProfiles
ile birleştirilirken,
işaretin false
olarak ayarlandığı varyantlar klasörde tutulur
src/<variant>/generated/baselineProfiles
.
Varsayılan olarak mergeIntoMain
, kitaplıklar için true
ve uygulamalar için false
olarak ayarlanır.
Yeni bir sürüm derlenirken Temel Profilleri otomatik olarak oluştur
Temel Profilleri her sürümde otomatik olarak oluşturulacak şekilde yapılandırabilirsiniz
derlemesini kullanmak için generateBaselineProfile
görevini manuel olarak kullanabilirsiniz. Entegre
otomatik oluşturma işlemiyle birlikte, en güncel profil sürüm derlemesine dahil edilir.
Sürüm derlemeleri için otomatik oluşturmayı etkinleştirmek üzere automaticGenerationDuringBuild
işaretini kullanın:
Kotlin
baselineProfile { automaticGenerationDuringBuild = true }
Eski
baselineProfile { automaticGenerationDuringBuild true }
automaticGenerationDuringBuild
işaretinin true
olarak ayarlanması,
Her sürüm derlemesi için yeni bir Temel Profil oluşturma. Bunun anlamı,
./gradlew:app:assembleRelease
gibi bir derleme sürümü derleme görevi çalıştırmak
:app:generateReleaseBaselineProfile
öğesini de tetikler ve Temel Profili başlatır
araçları test eder ve bunların üzerinde çalışacakları Temel Profil yapısını oluşturur.
Otomatik oluşturma, kullanıcıların en iyi performans avantajını elde etmesine yardımcı olsa da
nedeniyle derleme süresini uzatır.
testler.
Bu davranışı varyant başına da belirtebilirsiniz. Aşağıdaki örnekte gösterildiği gibi:
Kotlin
baselineProfile { variants { freeRelease { automaticGenerationDuringBuild = true } } }
Eski
baselineProfile { variants { freeRelease { automaticGenerationDuringBuild true } } }
Önceki örnekte, assembleFreeRelease
başlatılırken generateFreeReleaseBaselineProfile
görevi çalışır. Bu, kullanıcının istediği zaman
örnek, dağıtım için her zaman profil oluşturan bir release
ve dahili test için bir releaseWithoutProfile
derlemesi olarak kabul edilir.
Temel Profilleri kaynaklarda depolayın
Temel Profilleri kaynak dizinde saveInSrc
aracılığıyla depolayabilirsiniz
uygulama veya kitaplık modülünün build.gradle.kts
öğesinde işaretini kaldırın:
true
: Temel Profil şurada depolanır:src/<variant>/generated/baselineProfiles
. Bu sayede, oluşturulan en son profili kaynaklarınızla birlikte gönderebilirsiniz.false
: Temel Profil, derlemedeki ara dosyalarda depolanır dizin. Böylece, kodunuzu uygulamaya koyarken en son oluşturulmuş bir profildir.
Kotlin
baselineProfile { saveInSrc = true }
Eski
baselineProfile { saveInSrc true }
Bu davranışı varyant başına da belirtebilirsiniz:
Kotlin
baselineProfile { variants { freeRelease { saveInSrc = true } } }
Eski
baselineProfile { variants { freeRelease { saveInSrc true } } }
Profil kurallarını filtrele
Temel Profil Gradle eklentisi, oluşturulan temel profil kurallarını filtrelemenize olanak tanır. Bu, özellikle hariç tutmak istediğiniz kitaplıklar için diğer bağımlılıklarının parçası olan sınıf ve yöntemler için örnek uygulama veya kitaplığın kendisidir. Filtreler belirli verileri içerebilir veya hariç tutabilir ve sınıfları kullanıyor. Yalnızca hariç tutmaları belirttiğinizde yalnızca Referans Değerle eşleşir Profil kuralları hariç tutulur ve diğer her şey dahil edilir.
Filtre özellikleri aşağıdakilerden herhangi biri olabilir:
- Belirtilen paketle eşleşecek çift joker karakterlerle biten paket adı ve
tüm alt paketleri içerir. Örneğin,
com.example.**
şununla eşleşir:com.example.method
vecom.example.method.bar
. - Yalnızca belirtilen paketle eşleşmesi için joker karakterle biten paket adı. Örneğin,
örnek,
com.example.*
com.example.method
ile eşleşiyor ancak eşleşmiyorcom.example.method.bar
. - Belirli bir sınıfla eşleşen sınıf adları (ör.
com.example.MyClass
).
Aşağıdaki örneklerde, belirli paketlerin nasıl dahil edileceği ve hariç tutulacağı gösterilmektedir:
Kotlin
baselineProfile { filter { include("com.somelibrary.widget.grid.**") exclude("com.somelibrary.widget.grid.debug.**") include("com.somelibrary.widget.list.**") exclude("com.somelibrary.widget.list.debug.**") include("com.somelibrary.widget.text.**") exclude("com.somelibrary.widget.text.debug.**") } }
Eski
baselineProfile { filter { include 'com.somelibrary.widget.grid.**' exclude 'com.somelibrary.widget.grid.debug.**' include 'com.somelibrary.widget.list.**' exclude 'com.somelibrary.widget.list.debug.**' include 'com.somelibrary.widget.text.**' exclude 'com.somelibrary.widget.text.debug.**' } }
Farklı varyantlar için filtre kurallarını aşağıdaki gibi özelleştirin:
Kotlin
// Non-specific filters applied to all the variants. baselineProfile { filter { include("com.myapp.**") } } // Flavor-specific filters. baselineProfile { variants { free { filter { include("com.myapp.free.**") } } paid { filter { include("com.myapp.paid.**") } } } } // Build-type-specific filters. baselineProfile { variants { release { filter { include("com.myapp.**") } } } } // Variant-specific filters. baselineProfile { variants { freeRelease { filter { include("com.myapp.**") } } } }
Eski
// Non-specific filters applied to all the variants. baselineProfile { filter { include 'com.myapp.**' } } // Flavor-specific filters. baselineProfile { variants { free { filter { include 'com.myapp.free.**' } } paid { filter { include 'com.myapp.paid.**' } } } } // Build-type specific filters. baselineProfile { variants { release { filter { include 'com.myapp.**' } } } } // Variant-specific filters. baselineProfile { variants { freeRelease { filter { include 'com.myapp.**' } } } }
Kuralları BaselineProfileRule.collect()
içinde filterPredicate
bağımsız değişkenini kullanarak da filtreleyebilirsiniz ancak Gradle kullanmanızı öneririz
alt paketleri filtrelemenin daha basit bir yolunu sağladığından ve
tek bir yerden kontrol etmenize yardımcı olur.
Karşılaştırma ve Temel Profil oluşturma türlerini özelleştirme
Baseline Profile Gradle eklentisi, yeni reklam oluşturmak için ek derleme türleri
karşılaştırmak için kullanabilirsiniz. Bu derleme türlerinin önünde
benchmark
ve nonMinified
. Örneğin, release
derleme türü için
eklentisi benchmarkRelease
ve nonMinifiedRelease
derleme türlerini oluşturur.
Bu derleme türleri belirli kullanım alanına göre otomatik olarak yapılandırılır ve
ve genellikle herhangi bir özelleştirme gerektirmez. Ancak bazı durumlarda
bazı özel seçenekler uygulamak (örneğin bir
yapılandırmalısınız.
Otomatik olarak oluşturulan derleme türlerini, derleme türü özellikleri; kullanılamayan mülkler geçersiz kılınır. Aşağıdaki örnekte ek derleme türlerinin ve geçersiz kılınan özellikler:
Kotlin
android { buildTypes { release { ... } create("benchmarkRelease") { // Customize properties for the `benchmarkRelease` build type here. // For example, you can change the signing config (by default // it's the same as for the `release` build type). signingConfig = signingConfigs.getByName("benchmarkRelease") } create("nonMinifiedRelease") { // Customize properties for the `nonMinifiedRelease` build type here. signingConfig = signingConfigs.getByName("nonMinifiedRelease") // From Baseline Profile Gradle plugin 1.2.4 and higher, you can't // customize the following properties, which are always overridden to // avoid breaking Baseline Profile generation: // // isJniDebuggable = false // isDebuggable = false // isMinifyEnabled = false // isShrinkResources = false // isProfileable = true // enableAndroidTestCoverage = false // enableUnitTestCoverage = false } } }
Eski
android { buildTypes { release { ... } benchmarkRelease { // Customize properties for the `benchmarkRelease` build type here. // For example, you can change the signing config (by default it's the // same as for the `release` build type.) signingConfig = signingConfigs.benchmarkRelease } nonMinifiedRelease { // Customize properties for the `nonMinifiedRelease` build type here. signingConfig = signingConfigs.nonMinifiedRelease // From Baseline Profile Gradle plugin 1.2.4 and higher, you can't use // the following properties, which are always overridden to avoid breaking // Baseline Profile generation: // // isJniDebuggable = false // isDebuggable = false // isMinifyEnabled = false // isShrinkResources = false // isProfileable = true // enableAndroidTestCoverage = false // enableUnitTestCoverage = false } } }
Ek notlar
Temel Profil oluştururken dikkat etmeniz gereken bazı ek noktalar vardır:
Derlenmiş referans profilleri 1,5 MB'tan küçük olmalıdır. Bu iletişim kaynak dosyalarınızdaki metin biçimine uygulanır. Bu, daha büyük oldu. İkili Referans Değerinizin boyutunu doğrulayın Profili aşağıdaki çıktı yapısında bulun ve APK için
assets/dexopt/baseline.prof
veya AAB içinBUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof
.Uygulamanın çok fazla kısmını derleyen geniş kapsamlı kurallar, başlangıcı yavaşlatabilir nedeniyle kaybolabilir. Referans Değer ile yeni başlıyorsanız Profiller, bunu düşünmeyin. Ancak uygulamanıza ve daha fazla yolculuk eklemek, olduğunu görebiliriz. Uygulamanızın performansını test etmek için farklı ve performansın geri dönmediğini doğrulayarak eklemeleri gerekir.