Temel Profiller Oluşturma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Temel Profiller, Jetpack Compose performansını en üst düzeye çıkarmak için gereklidir.
Kritik kullanıcı yolculuklarınızı (CUJ) önceden derlemek, Compose kullanıcı arayüzünüzün sorunsuz bir şekilde oluşturulmasını sağlar.
Jetpack Macrobenchmark kitaplığını ve BaselineProfileRule aracını kullanarak her uygulama sürümü için otomatik olarak profil oluşturun. Temel Profiller'i kullanırken derleme iyileştirmelerinden yararlanmak için com.android.tools.build:gradle:8.0.0 veya daha yeni bir sürümü kullanmanızı öneririz.
Yeni bir Baseline Profile oluşturmak için genel adımlar şunlardır:
Temel profil modülünü ayarlayın.
Temel Profiller oluşturmaya yardımcı olan JUnit testini tanımlayın.
Optimize etmek istediğiniz kritik kullanıcı yolculuklarını (CUJ) ekleyin.
Temel profili oluşturun.
Referans profilini oluşturduktan sonra, hız iyileştirmelerini ölçmek için fiziksel bir cihaz kullanarak karşılaştırma yapın.
AGP 8.2 veya sonraki sürümlerle yeni bir Baseline Profile oluşturma
Yeni bir Baseline Profili oluşturmanın en kolay yolu, Android Studio Iguana ve Android Gradle Eklentisi (AGP) 8.2'den itibaren kullanılabilen Baseline Profili modül şablonunu kullanmaktır.
Android Studio Baseline Profile Generator modül şablonu, yeni bir modül oluşturma işlemini otomatikleştirerek Baseline Profile'lar oluşturup karşılaştırmanızı sağlar. Şablonu çalıştırdığınızda tipik derleme yapılandırması, Baseline Profile oluşturma ve doğrulama kodunun çoğu oluşturulur. Şablon, uygulama başlatma süresini ölçmek için temel profil oluşturup karşılaştırma yapacak kod oluşturur.
Baseline Profile modülünü ayarlama
Temel Profil modülü şablonunu çalıştırmak için aşağıdaki adımları uygulayın:
File > New > New Module'u (Dosya > Yeni > Yeni Modül) seçin.
Hedef uygulama: Temel Profil'in oluşturulduğu uygulama. Projenizde yalnızca tek bir uygulama modülü varsa bu listede yalnızca bir öğe bulunur.
Modül adı: Oluşturulan Baseline Profile modülü için istediğiniz ad.
Package name: Temel Profil modülü için istediğiniz paket adı.
Dil: Oluşturulan kodun Kotlin mi yoksa Java mı olmasını istediğinizi belirtir.
Derleme yapılandırması dili: Derleme yapılandırması komut dosyalarınız için Kotlin Komut Dosyası (KTS) veya Groovy kullanmak isteyip istemediğiniz.
Gradle tarafından yönetilen cihaz kullanma: Uygulamanızı test etmek için Gradle tarafından yönetilen cihazlar kullanıp kullanmadığınızı gösterir.
Finish'i (Son) tıklayın. Yeni modül oluşturulur. Kaynak denetimi kullanıyorsanız yeni oluşturulan modül dosyalarını kaynak denetimine eklemeniz istenebilir.
Temel profil oluşturucuyu tanımlama
Yeni oluşturulan modül, hem Baseline Profile'ı oluşturup karşılaştıran hem de yalnızca temel uygulama başlatmayı test eden testler içerir. Bunları, kritik kullanıcı yolculuklarını ve gelişmiş başlangıç iş akışlarını içerecek şekilde genişletmenizi öneririz. Uygulama başlatmayla ilgili tüm testlerin includeInStartupProfile, true olarak ayarlanmış bir rule bloğunda olduğundan emin olun. Bununla birlikte, optimum performans için uygulama başlatmayla ilgili olmayan testlerin Başlatma Profiline dahil edilmediğinden emin olun. Uygulama başlatma optimizasyonları, Temel Profil'in Başlangıç Profili adlı özel bir bölümünü tanımlamak için kullanılır.
Bu CUJ'leri, oluşturulan Temel Profil ve karşılaştırma kodunun dışında soyutlarsanız her ikisi için de kullanılabilirler ve bu sayede kodun bakımı kolaylaşır. Bu, CUJ'lerinizde yapılan değişikliklerin tutarlı bir şekilde kullanıldığı anlamına gelir.
Temel Profili oluşturma ve yükleme
Temel profil modülü şablonu, temel profili oluşturmak için yeni bir çalıştırma yapılandırması ekler. Ürün türlerini kullanıyorsanız Android Studio, her tür için ayrı Temel Profiller oluşturabilmeniz amacıyla birden fazla çalıştırma yapılandırması oluşturur.
Şekil 2. Bu yapılandırmayı çalıştırmak, Baseline Profile'ı oluşturur.
Temel Profil Oluştur çalıştırma yapılandırması tamamlandığında, oluşturulan Temel Profil'i profili oluşturulan modüldeki src/variant/generated/baselineProfiles/baseline-prof.txt dosyasına kopyalar. Varyant seçenekleri, yayınlanan derleme türü veya yayınlanan derleme türünü içeren bir derleme değişkenidir.
Oluşturulan temel profil, ilk olarak build/outputs konumunda oluşturulur. Tam yol, profili oluşturulan uygulamanın varyantına veya türüne ve profil oluşturma için Gradle tarafından yönetilen bir cihaz mı yoksa bağlı bir cihaz mı kullandığınıza göre belirlenir. Şablon tarafından oluşturulan kod ve derleme yapılandırmalarının kullandığı adları kullanırsanız Temel Profil, build/outputs/managed_device_android_test_additional_output/nonminifiedrelease/pixel6Api31/BaselineProfileGenerator_generate-baseline-prof.txt dosyasında oluşturulur. Oluşturulan Temel Profil'in bu sürümünü manuel olarak hedef modüllere kopyalamadığınız sürece (önerilmez) bu sürümle doğrudan etkileşim kurmanız gerekmez.
AGP 8.1 ile yeni bir Baseline Profile oluşturma
Baseline Profile modül şablonunu kullanamıyorsanız yeni bir Baseline Profile oluşturmak için Macrobenchmark modül şablonunu ve Baseline Profile Gradle eklentisini kullanın. Bu araçları Android Studio Giraffe ve AGP 8.1'den itibaren kullanmanızı öneririz.
Macrobenchmark modül şablonunu ve Baseline Profile Gradle eklentisini kullanarak yeni bir Baseline Profile oluşturma adımları aşağıda verilmiştir:
Oluşturucu, uygulamanızla uygulama başlatmanın ötesinde etkileşimler içerebilir.
Bu sayede, uygulamanızın çalışma zamanı performansını (ör. listeleri kaydırma, animasyonları çalıştırma ve Activity içinde gezinme) optimize edebilirsiniz.
Kritik kullanıcı yolculuklarını iyileştirmek için @BaselineProfileRule kullanan testlerin diğer örneklerini inceleyin.
Baseline Profile Gradle eklentisini (libs.plugins.androidx.baselineprofile) ekleyin. Eklenti, Baseline Profile'lar oluşturmayı ve gelecekte bunları yönetmeyi kolaylaştırır.
Baseline Profile oluşturmak için terminalde :app:generateBaselineProfile veya :app:generateVariantBaselineProfile Gradle görevlerini çalıştırın.
Oluşturucuyu root erişimli bir fiziksel cihazda, emülatörde veya Gradle tarafından yönetilen cihazda enstrümantasyon testi olarak çalıştırın. Gradle tarafından yönetilen cihaz kullanıyorsanız Temel Profil oluşturucu için kök erişimine ihtiyacınız olduğundan aosp değerini systemImageSource olarak ayarlayın.
Oluşturma görevinin sonunda Baseline Profile, app/src//generated/baselineProfiles dizinine kopyalanır.
Şablon kullanmadan yeni bir Baseline Profile oluşturma
Baseline Profile Gradle eklentisini doğrudan kullanarak Baseline Profile oluşturma adımları:
Yeni bir com.android.test modülü oluşturun (ör. :baseline-profile).
:baseline-profile için build.gradle.kts dosyasını yapılandırın:
androidx.baselineprofile eklentisini uygulayın.
targetProjectPath, :app modülüne işaret etmelidir.
İsteğe bağlı olarak Gradle tarafından yönetilen cihaz (GMD) ekleyin. Aşağıdaki örnekte bu değer pixel6Api31 olarak gösterilmiştir. Belirtilmezse eklenti, emülasyonu yapılan veya fiziksel bir bağlı cihaz kullanır.
Aşağıdaki örnekte gösterildiği gibi istediğiniz yapılandırmayı uygulayın.
Kotlin
plugins{id("com.android.test")id("androidx.baselineprofile")}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath=":app"// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device="Pixel 6"apiLevel=31systemImageSource="aosp"}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices+="pixel6Api31"// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevices=false}
Modern
plugins{id'com.android.test'id'androidx.baselineprofile'}android{defaultConfig{...}// Point to the app module, the module that you're generating the Baseline Profile for.targetProjectPath':app'// Configure a GMD (optional).testOptions.managedDevices.devices{pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice){device'Pixel 6'apiLevel31systemImageSource'aosp'}}}dependencies{...}// Baseline Profile Gradle plugin configuration. Everything is optional. This// example uses the GMD added earlier and disables connected devices.baselineProfile{// Specifies the GMDs to run the tests on. The default is none.managedDevices['pixel6Api31']// Enables using connected devices to generate profiles. The default is// `true`. When using connected devices, they must be rooted or API 33 and// higher.useConnectedDevicesfalse}
:baseline-profile test modülünde bir Baseline Profile testi oluşturun. Aşağıdaki örnek, uygulama başlatma için temel profil oluşturan bir testtir.
plugins{id("com.android.application")id("androidx.baselineprofile")}android{// There are no changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile(project(":baseline-profile"))}
Modern
plugins{id'com.android.application'id'androidx.baselineprofile'}android{// No changes to the `android` block....}dependencies{...// Add a `baselineProfile` dependency on the `:baseline-profile` module.baselineProfile':baseline-profile'}
:app:generateBaselineProfile veya :app:generateVariantBaselineProfile Gradle görevlerini çalıştırarak profili oluşturun.
Oluşturma görevinin sonunda Baseline Profile, app/src/variant/generated/baselineProfiles dizinine kopyalanır.
Bu komutu Android Studio'da çalıştırdığınızda derleme çıkışı, Temel Profil'in sağladığı hız iyileştirmeleriyle ilgili ayrıntıları içerir:
StartupBenchmarks_startupCompilationBaselineProfiles
timeToInitialDisplayMs min 161.8, median 178.9, max 194.6
StartupBenchmarks_startupCompilationNone
timeToInitialDisplayMs min 184.7, median 196.9, max 202.9
Gerekli tüm kod yollarını yakalama
Uygulama başlatma sürelerini ölçmek için kullanılan iki temel metrik şunlardır:
Tam görüntüleme süresi (TTFD): TTID'ye ek olarak, ilk kare görüntülendikten sonra eşzamansız olarak yüklenen içeriğin görüntülenmesi için geçen süre.
TTFD, ComponentActivity sınıfının reportFullyDrawn yöntemi çağrıldığında raporlanır. reportFullyDrawn hiç çağrılmazsa bunun yerine TTID raporlanır. reportFullyDrawn çağrısını, eşzamansız yükleme tamamlanana kadar geciktirmeniz gerekebilir. Örneğin, kullanıcı arayüzü dinamik bir lazy list içeriyorsa liste, ilk çizildikten sonra ve dolayısıyla kullanıcı arayüzü tamamen çizilmiş olarak işaretlendikten sonra tamamlanan bir arka plan görevi tarafından doldurulabilir. Bu gibi durumlarda, kullanıcı arayüzü tamamen çizilmiş duruma ulaştıktan sonra çalışan kod, Temel Profil'e dahil edilmez.
Liste doldurma işlemini Temel Profil'e dahil etmek için getFullyDrawnReporter kullanarak FullyDrawnReporter öğesini alın ve uygulama kodunuzda buna bir raporlayıcı ekleyin. Arka plan görevi listeyi doldurmayı tamamladığında raporlayıcıyı serbest bırakın. FullyDrawnReporter, tüm raporlayıcılar serbest bırakılana kadar reportFullyDrawn yöntemini çağırmaz. Bu sayede, Temel Profil listeyi doldurmak için gereken kod yollarını içerir. Bu, uygulamanın kullanıcıya yönelik davranışını değiştirmez ancak Temel Profil'in gerekli tüm kod yollarını içermesini sağlar.
Tamamen çizilmiş durumu belirtmek için aşağıdaki Compose API'lerini kullanın:
ReportDrawn, composable'ınızın etkileşime hemen hazır olduğunu gösterir.
ReportDrawnWhen, composable'ınızın etkileşime hazır olduğunu belirtmek için list.count > 0 gibi bir yüklem alır.
ReportDrawnAfter, tamamlandığında composable'ınızın etkileşime hazır olduğunu gösteren bir askıya alma yöntemi kullanır.
Sizin için önerilenler
Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2026-10-21 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2026-10-21 UTC."],[],[]]