ProfilYükleyici

  
Kitaplıkların, ART tarafından okunacak derleme izlerini önceden doldurmasını sağlar.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
7 Ağustos 2024 1.3.1 - - 1.4.0-alfa02

Bağımlılıkları bildirme

ProfileLoader'a bağımlılık eklemek için belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.

build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin. uygulamanız veya modülünüz:

Modern

dependencies {
    implementation "androidx.profileinstaller:profileinstaller:1.3.1"
}

Kotlin

dependencies {
    implementation("androidx.profileinstaller:profileinstaller:1.3.1")
}

Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme bölümüne bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.

Yeni sayı oluştur

Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.

Sürüm 1.4

Sürüm 1.4.0-alpha02

7 Ağustos 2024

androidx.profileinstaller:profileinstaller:1.4.0-alpha02 yayınlandı. Sürüm 1.4.0-alpha02 bu kaydetmeleri içerir.

Yeni Özellikler

  • Profil Yükleyici'ye api 35 desteği eklendi. (6f9f6fa)

Hata Düzeltmeleri

  • Bu durum, AGP 7.3 veya sonraki bir sürümle R8 kullanılırken (ör. R8 sürüm 3.3) ve AGP 8.1 veya sonraki sürümler kullanılırken tüm derlemeler (ör. D8 sürümü 8.1) için API modellemesi aracılığıyla otomatik olarak gerçekleştirildiğinden, yeni platform API'lerine erişimin manuel olarak özetlenmesi kaldırıldı. AGP kullanmayan müşterilerin D8 sürümüne 8.1 veya daha yeni bir sürüme geçmeleri önerilir. Daha fazla bilgi için bu makaleyi inceleyin. (If6b4c, b/345472586)

Sürüm 1.4.0-alpha01

7 Şubat 2024

androidx.profileinstaller:profileinstaller:1.4.0-alpha01 yayınlandı. 1.4.0-alpha01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Profil doğrulayıcıya yerleştirilmiş profil yok için hata kodu eklendi. (Ifb109, b/313928520)
  • Android U (API 34) ve emülatörlerde gölgelendirici bırakılırken oluşan kilitlenmeler düzeltildi. (I031ca, b/274314544)
  • Profil yükleyicide Android U desteği etkinleştirildi. (Iaf177)
  • İşlem başladığında mevcut profilin boş oluşturulmaması nedeniyle Android U'daki profil yükleyicinin başarısız olması sorunu düzeltildi. (Ie3899)
  • V_015S profili biçimindeki bit eşlem kod dönüştürme yöntemini düzeltin. (aosp/2906631) ve (aosp/2847740)

Sürüm 1.3

Sürüm 1.3.1

3 Mayıs 2023

androidx.profileinstaller:profileinstaller:1.3.1 yayınlandı. Sürüm 1.3.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Profil yükleyicide Android U desteği etkinleştirildi (Iaf177)
  • İşlem başladığında mevcut profilin boş oluşturulmaması nedeniyle Android U'daki profil yükleyicinin başarısız olması sorunu düzeltildi. (Ie3899)

Sürüm 1.3.0

22 Mart 2023

androidx.profileinstaller:profileinstaller:1.3.0 yayınlandı. 1.3.0 sürümü bu kaydetmeleri içerir.

1.2.0'dan bu yana önemli değişiklikler

Sürüm 1.3.0-rc01

8 Mart 2023

androidx.profileinstaller:profileinstaller:1.3.0-rc01, son beta sürümünden bu yana hiçbir değişiklik yapılmadan yayınlandı. Sürüm 1.3.0-rc01 bu kaydetmeleri içerir.

Sürüm 1.3.0-beta01

8 Şubat 2023

androidx.profileinstaller:profileinstaller:1.3.0-beta01 yayınlandı. Sürüm 1.3.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • Sıkıştırılmış profilleri işleme desteğini kaldırır. Sıkıştırılmış profillerin açılması ve açılması, başlatma sırasında CPU kullanımında 10 saniyelik ms regresyona neden olur. Dolayısıyla, bunun yerine yanlış şekilde sıkıştırılmış temel profilleri keşfetmek için bir tanılama eklendi. (I86413, b/261998144)

Sürüm 1.3.0-alpha03

11 Ocak 2023

androidx.profileinstaller:profileinstaller:1.3.0-alpha03 yayınlandı. 1.3.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Sıkıştırılmış veya sıkıştırılmamış referans profillerin (Ic61a0) işlenmesini etkinleştirir
  • Profil yükleyici manifestindeki (I5c728, b/258619948) yayın kaydını düzelterek MacrobenchmarkScope.dropShaderCache() uygulamasının kilitlenmesini önlemek için sorunları giderin

Sürüm 1.3.0-alpha02

9 Kasım 2022

androidx.profileinstaller:profileinstaller:1.3.0-alpha02 yayınlandı. 1.3.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Baştan başlatma işlemlerinde (özellikle de ısınma iterasyonlarından elde edilen profillerle derleme yaparken) tutarlı performans sağlamak amacıyla, gölgelendirici önbelleğini düşürmek için karşılaştırmalara kanca eklendi. Bu güncelleme, benchmark-macro-junit4:1.2.0-alpha05 veya sonraki bir sürümü kullanan baştan başlatmaları ölçmek için gereklidir. Karşılaştırma kitaplığının API değişiklikleri için lütfen Karşılaştırma 1.2.0-alpha07 sayfasına bakın. (Ia5171, b/231455742)

Sürüm 1.3.0-alpha01

24 Ekim 2022

androidx.profileinstaller:profileinstaller:1.3.0-alpha01 yayınlandı. 1.3.0-alpha01 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Bir temel profilin derlenmiş, planlanmış veya eksik olup olmadığının uygulama içinden kontrol edilmesi için ProfileVerifier API'si eklendi (I263a4, b/246653809)
  • Macrobenchmark'ın referans profil oluşturmaya dahil edilmek üzere bellek içi profil verilerini diske tamamen temizlemesini sağlayan yeni bir kabuk yayını ekler. Bu işlem, makro karşılaştırma kitaplığını kullanarak BaselineProfileRule ile temel profilleri yakalamak ve CompilationMode.Partial(warmupIterations) kullanarak profil performansını değerlendirmek için gereklidir. (Ie0a7d, b/250083467, b/253094958)

Sürüm 1.2.2

Sürüm 1.2.2

11 Ocak 2023

androidx.profileinstaller:profileinstaller:1.2.2 yayınlandı. Sürüm 1.2.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Sıkıştırılmış veya sıkıştırılmamış referans profillerin (Ic61a0) işlenmesini etkinleştirir

Sürüm 1.2.1

Sürüm 1.2.1

7 Aralık 2022

androidx.profileinstaller:profileinstaller:1.2.1 yayınlandı. Sürüm 1.2.1 bu kaydetmeleri içerir.

Yeni Özellikler

  • S_V2 (API 32) ve TIRAMISU (API 33) (b/254900303) için profil yükleyiciyi etkinleştirin.

Sürüm 1.2.0

Sürüm 1.2.0

27 Temmuz 2022

androidx.profileinstaller:profileinstaller:1.2.0 yayınlandı. 1.2.0 sürümü bu kaydetmeleri içerir.

1.1.0'dan bu yana önemli değişiklikler

  • Android 12 ve sonraki sürümlerde kullanılan ART profili biçimi için destek eklendi.
  • Referans profilleri kullanırken Macrobenchmarks ile daha tutarlı sonuçlar elde etmek için ProfileInstallReceiver uygulamasına yeni API'ler ekleyin.

Sürüm 1.2.0-rc01

15 Haziran 2022

androidx.profileinstaller:profileinstaller:1.2.0-rc01 yayınlandı. Sürüm 1.2.0-rc01 bu kaydetmeleri içerir.

  • Bu sürüm, androidx.profileinstaller:profileinstaller:1.2.0-beta03 sürümüyle aynı.

Sürüm 1.2.0-beta03

1 Haziran 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta03 yayınlandı. Sürüm 1.2.0-beta03 bu kaydetmeleri içerir.

Sürüm 1.2.0-beta02

18 Mayıs 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta02 yayınlandı. Sürüm 1.2.0-beta02 bu kaydetmeleri içerir.

  • Değişiklik yok. Compose 1.2.0-beta02 sürümlerini desteklemek için gerekti.

Sürüm 1.2.0-beta01

11 Mayıs 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta01 yayınlandı. Sürüm 1.2.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • Referans profilleri kullanırken Macrobenchmarks ile daha tutarlı sonuçlar elde etmek için ProfileInstallReceiver uygulamasına yeni API'ler ekleyin. (If2ae5, b/215740637)

Hata Düzeltmeleri

  • Profil Yükleyici, Android 12 ve sonraki sürümlerde meta veri V_001 biçimini kullanmaya çalışırken faydalı bir mesaj verir. (aosp/1978526, b/217502387)
  • Profil Yükleyici artık androidx.startup 1.1.1 sürümünü kullanıyor. (aosp/2077099, b/229828376)

Sürüm 1.2.0-alpha02

26 Ocak 2022

androidx.profileinstaller:profileinstaller:1.2.0-alpha02 yayınlandı. 1.2.0-alpha02 sürümü bu kaydetmeleri içerir.

Bu sürüm, 1.2.0-alpha01 sürümüyle aynı.

Sürüm 1.2.0-alpha01

12 Ocak 2022

androidx.profileinstaller:profileinstaller:1.2.0-alpha01 yayınlandı. Sürüm 1.2.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Android 12 ve sonraki sürümlerde kullanılan ART profili biçimi için destek eklendi.

Sürüm 1.1.0

Sürüm 1.1.0

9 Şubat 2022

androidx.profileinstaller:profileinstaller:1.1.0 yayınlandı. 1.1.0 sürümü bu kaydetmeleri içerir.

Sürüm 1.1.0-rc01

15 Aralık 2021

androidx.profileinstaller:profileinstaller:1.1.0-rc01, 1.1.0-beta04 sürümünden bu yana güncelleme olmadan yayınlandı. Sürüm 1.1.0-rc01 bu kaydetmeleri içerir.

Sürüm 1.1.0-beta04

1 Aralık 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta04 yayınlandı. Sürüm 1.1.0-beta04 bu kaydetmeleri içerir.

Sürüm 1.1.0-beta03

17 Kasım 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta03 yayınlandı. Sürüm 1.1.0-beta03 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Compose 1.1.0-beta03'ü destekleyecek şekilde güncellendi

Sürüm 1.1.0-beta02

3 Kasım 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta02 yayınlandı. Sürüm 1.1.0-beta02 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Compose 1.1.0-beta02'yi destekleyecek şekilde güncellendi

Sürüm 1.1.0-beta01

27 Ekim 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta01 yayınlandı. Sürüm 1.1.0-beta01 bu kaydetmeleri içerir.

  • 1.1.0-alpha07'den beri değişiklik yok.

Sürüm 1.1.0-alpha07

13 Ekim 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha07 yayınlandı. 1.1.0-alpha07 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Android N sürümüne profm desteği eklendi

Sürüm 1.1.0-alpha06

29 Eylül 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha06 yayınlandı. 1.1.0-alpha06 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • N, O ve O_MR1'de profil yükleyici kod dönüştürme sorunlarını düzeltin. (I12d75)

Sürüm 1.1.0-alpha05

15 Eylül 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha05 yayınlandı. 1.1.0-alpha05 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Multidex apk'ler için Android Nougat ve Android Oreo profili kod dönüştürme işlemi düzeltildi.

Sürüm 1.1.0-alpha04

1 Eylül 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha04 yayınlandı. 1.1.0-alpha04 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Referans profilleri kullanan uygulamaların CompilationMode.BaselineProfile ile MacroBenchmarks çalıştırmasını kolaylaştırmak için ProfileInstaller hatasını düzeltin. (I42657, b/196074999)

Sürüm 1.1.0-alpha03

18 Ağustos 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha03 yayınlandı. 1.1.0-alpha03 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Uygulamanın dosya dizinindeki bir dosyada PackageInfo.lastUpdatedTime ve bunu, profili bir sonraki çalıştırmada yüklemeden önce karşılaştırmaktır. (Ib93d1)
  • P, Q, R cihazlardaki profil biçimini ART gereksinimlerine uygun olacak şekilde ayarlayın (I84e89)

Sürüm 1.1.0-alpha02

4 Ağustos 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha02 yayınlandı. 1.1.0-alpha02 sürümü bu kaydetmeleri içerir.

Oluşturma 1.1.0-alpha01 ile uyumlu olacak şekilde güncellendi.

Sürüm 1.1.0-alpha01

21 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha01 yayınlandı. 1.1.0-alpha01 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bazı durumlarda yüksek düzey modunu tetikleyebilecek hata düzeltildi.

Sürüm 1.0

Sürüm 1.0.4

13 Ekim 2021

androidx.profileinstaller:profileinstaller:1.0.4 yayınlandı. 1.0.4 sürümü bu kaydetmeleri içerir.

  • Compose 1.0.4'ü destekleyecek şekilde güncellendi

Sürüm 1.0.3

29 Eylül 2021

androidx.profileinstaller:profileinstaller:1.0.3 yayınlandı. 1.0.3 sürümü bu kaydetmeleri içerir.

  • Compose 1.0.3'ü destekleyecek şekilde güncellendi

Sürüm 1.0.2

1 Eylül 2021

androidx.profileinstaller:profileinstaller:1.0.2 yayınlandı. 1.0.2 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • P, Q, R cihazlar için profil kod dönüştürme özelliği eklendi. Bu değişiklik, bu cihazların profilin kodunu dönüştüreceği ve yazılı profilin ART tarafından her zaman kullanılabilmesini sağlayacağı anlamına gelir. Daha önce kod dönüştürme işlemi bu platformlarda atlanıyordu. Bu durum, ART'ın bazen kaynak profili işleyememesine neden oluyordu. Geliştirici API'lerinde değişiklik yapılmamıştır.

Sürüm 1.0.1

4 Ağustos 2021

androidx.profileinstaller:profileinstaller:1.0.1 yayınlandı. 1.0.1 sürümü bu kaydetmeleri içerir.

Oluşturma 1.0.1 ile uyumlu olacak şekilde güncellendi.

Sürüm 1.0.0

28 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.0.0 yayınlandı. 1.0.0 sürümü bu kaydetmeleri içerir.

1.0.0'ın temel özellikleri

Profil yükleyici, kitaplıkların ve uygulamaların "Profil Kuralları"nı tanımlamasına ve ART profil bilgilerini bir APK ile paketlemesine olanak tanıyan yeni bir kitaplıktır. Bu kitaplık, söz konusu profilleri uygulama başlatıldıktan sonra yükler. Bu özellik, uygulama performansını iyileştirmek için kullanılabilir.

Bu profil kurallarının ne olduğu ve nasıl çalıştığı hakkında daha fazla bilgi edinmek için lütfen 1.0.0-beta01 adresindeki ayrıntılı sürüm notlarına göz atın.

Sürüm 1.0.0-rc02

14 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc02 yayınlandı. Sürüm 1.0.0-rc02 bu kaydetmeleri içerir.

Sürüm 1.0.0-rc01

1 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc01 yayınlandı. Sürüm 1.0.0-rc01 bu kaydetmeleri içerir.

Bu, beta sürümünde değişiklik içermeyen bir RC sürümüdür.

Sürüm 1.0.0-beta01

16 Haziran 2021

androidx.profileinstaller:profileinstaller:1.0.0-beta01 yayınlandı. Sürüm 1.0.0-beta01 bu kaydetmeleri içerir.

Kütüphanenin Amacı

Profil yükleyici, kitaplıkların ve uygulamaların "Profil Kuralları"nı tanımlamasına ve ART profil bilgilerini bir APK ile paketlemesine olanak tanıyan yeni bir kitaplıktır. Bu kitaplık, söz konusu profilleri uygulama başlatıldıktan sonra yükler. Bu özellik, uygulama performansını iyileştirmek için kullanılabilir.

Profil yükleme işlemi androidx.startup kitaplığıyla gerçekleştirilmiştir. Herhangi bir nedenle profil yüklemeyi devre dışı bırakmak isteyen kişiler, manifest dosyasında değişiklik yaparak bunu kaldırabilir:


       <provider
           android:name="androidx.startup.InitializationProvider"
           android:authorities="${applicationId}.androidx-startup"
           android:exported="false"
           tools:node="merge">
           <meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
                     tools:node="remove" />
       </provider>

Bu, özellikle uygulamanız için önemli olmayan başlatma gereksinimleri varsa ve profil yükleme işlemini ProfileInstaller.writeProfile API'yi kullanarak manuel olarak tetiklemek istiyorsanız yararlıdır.

Profil kuralları nedir?

  • Bir kitaplığa ilişkin profil kuralları, src/main veya eşdeğer dizinde bulunan bir metin dosyasında (baseline-prof.txt) belirtilir. Dosya, her satır için bir kural belirtir. Bu durumda kural, kitaplıktaki yöntemler veya sınıflarla eşleştirmeye yönelik bir kalıptır. Bu kuralların söz dizimi, adb shell profman --dump-classes-and-methods ... kullanılırken kullanılan, okunabilir ART profili biçiminin üst kümesidir. Bu kurallar, yöntemleri veya sınıfları hedeflemek için iki biçimden birini alır.

  • Bir yöntem kuralı aşağıdaki kalıba sahip olur:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Sınıf kuralı da aşağıdaki kalıba sahip olur:

    <CLASS_DESCRIPTOR>
    
  • Burada <FLAGS>, bu yöntemin "Popüler", "Başlangıç" veya "Başlangıç Sonrası" olarak işaretlenip işaretlenmeyeceğini belirtmek için H, S ve P karakterlerinden bir veya daha fazlasını göstermektedir.

  • <CLASS_DESCRIPTOR>, hedeflenen yöntemin ait olduğu sınıfın tanımlayıcısıdır. Örneğin, androidx.compose.runtime.SlotTable sınıfının tanımlayıcısı Landroidx/compose/runtime/SlotTable; olur.

  • <METHOD_SIGNATURE>, yöntemin imzasıdır ve yöntemin adını, parametre türlerini ve döndürme türlerini içerir. Örneğin, LayoutNode sitesindeki fun isPlaced(): Boolean yöntemi isPlaced()Z imzasına sahiptir.

  • Tek bir kuralın birden fazla yöntem veya sınıfı kapsaması için bu kalıplar joker karakterler (**, * ve ?) içerebilir.

Kurallar ne işe yarar?

  • H işaretine sahip bir yöntem, bu yöntemin "çalışıyor" olduğunu gösterir yöntemidir ve önceden derlenmesi gerekir.

  • S işaretine sahip bir yöntem, bu yöntemin başlangıçta çağrılan bir yöntem olduğunu ve derleme ve başlatma sırasında yöntemi yorumlama maliyetinden kaçınmak için önceden derlenmesi gerektiğini belirtir.

  • P işaretine sahip bir yöntem, bunun başlatmadan sonra çağrılan bir yöntem olduğunu gösterir.

  • Bu dosyada bulunan bir sınıf, başlangıç sırasında kullanıldığını ve sınıf yükleme maliyetinden kaçınmak için yığına önceden ayrılması gerektiğini belirtir.

Nasıl çalışır?

  • Kitaplıklar, AAR yapılarında paketlenecek bu kuralları tanımlayabilir. Ardından, bu yapıları içeren bir APK oluşturulduğunda bu kurallar birleştirilir ve birleştirilmiş kurallar, APK'ya özel küçük bir ikili ART profili oluşturmak için kullanılır. ART, özellikle ilk çalıştırmada uygulamanın performansını iyileştirmek amacıyla uygulamanın belirli bir alt kümesini önceden derlemek için APK cihazlara yüklendiğinde bu profilden yararlanabilir. Bunun, hata ayıklaması yapılabilecek uygulamalar üzerinde herhangi bir etkisi olmayacağını unutmayın.

  • Kural dosyaları baseline-prof.txt olarak adlandırılmalı ve ana kaynak kümenizin kök dizinine yerleştirilmelidir (AndroidManifset.xml dosyanızla eşdüzey bir dosya olmalıdır)

  • Şu anda bu dosyalar yalnızca Android Gradle Plugin 7.0+ kullanıyorsanız ve şu anda yalnızca gradle.properties üzerinde bir işaret ile etkinleştirildiğinde kullanılır:

    # Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs
    android.experimental.enableArtProfiles=true
    

Profiller için denge gerekiyor

  • Başlangıç yolunda ve performans açısından kritik öneme sahip olacak yöntemlerin ve sınıfların doğru şekilde önceliklendirilmesini sağlayan, düzgün şekilde oluşturulmuş profiller en iyi sonuçları verir. Ancak profillere çok fazla yöntem veya sınıf eklemek, bellek tüketimi ve disk kullanımı açısından olumsuz yönde bir etkiye neden olabilir. Bu nedenle, kendi profil kurallarınızı tanımlarken dikkatli bir şekilde başlamanız önerilir.