ProfileInstaller (Profil Yükleyici)

  
Kitaplığın, ART tarafından okunacak derleme izlerinin önceden doldurulmasını sağlar.
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
7 Şubat 2024 1.3.1 - - 1.4.0-alpha01

Bağımlılıkları bildirme

ProfileInstaller üzerinde bir bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Uygulamanızın veya modülünüz için build.gradle dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:

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 edinmek için Derleme bağımlılıkları ekleme konusuna bakın.

Geri bildirim

Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sayı oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 1.4

Sürüm 1.4.0-alpha01

7 Şubat 2024

androidx.profileinstaller:profileinstaller:1.4.0-alpha01 yayınlandı. Sürüm 1.4.0-alpha01 bu kayıtları içerir.

Hata Düzeltmeleri

  • Profil doğrulayıcıya yerleştirilmiş profil yok için hata kodu eklendi. (Ifb109, b/313928520)
  • Android U'da (API 34) gölgelendiriciler bırakılırken ve emülatörlerde yaşanan kilitlenme düzeltildi. (I031ca, b/274314544)
  • Profil yükleyicide Android U desteği etkinleştirildi. (Iaf177)
  • İşlem başlatıldığında mevcut profilin boş oluşturulmaması nedeniyle Android U'da profil yükleyicinin başarısız olması düzeltildi. (Ie3899)
  • V_015S profili biçiminde bit eşlem kod dönüştürme yöntemi için düzeltme uygulandı. (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ı. 1.3.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Profil yükleyicide Android U desteği etkinleştirildi (Iaf177)
  • İşlem başlatıldığında mevcut profilin boş oluşturulmaması nedeniyle Android U'da profil yükleyicinin başarısız olması 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 kayıtları içerir.

1.2.0'dan sonraki ö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 olmadan yayınlandı. 1.3.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.3.0-beta01

8 Şubat 2023

androidx.profileinstaller:profileinstaller:1.3.0-beta01 yayınlandı. 1.3.0-beta01 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Sıkıştırılmış profillerin işlenmesine yönelik desteği kaldırıyor. Hataların açılması ve sıkıştırılması, başlatma sırasında CPU kullanımında 10 ms'lik bir gerileme oluşmasına neden oluyor. Bunun yerine, yanlış sıkıştırılmış referans profilleri keşfetmek için bir teşhis eklendi. (I86413, b/261998144)

Sürüm 1.3.0-alpha03

11 Ocak 2023

androidx.profileinstaller:profileinstaller:1.3.0-alpha03 yayınlandı. Sürüm 1.3.0-alpha03 bu kayıtları içerir.

Hata Düzeltmeleri

  • Sıkıştırılmış veya sıkıştırılmamış referans profillerin işlenmesine olanak tanır (Ic61a0)
  • Profil yükleyici manifestindeki yayın kaydını düzelterek (I5c728, b/258619948) artık kilitlenmemesi için MacrobenchmarkScope.dropShaderCache() sorununu düzeltin

Sürüm 1.3.0-alpha02

9 Kasım 2022

androidx.profileinstaller:profileinstaller:1.3.0-alpha02 yayınlandı. Sürüm 1.3.0-alpha02 bu kayıtları içerir.

API Değişiklikleri

  • Özellikle ısınma yinelemelerinden profillerle derleme yapıldığında, soğuk başlatmalarda tutarlı bir performans sağlamak amacıyla gölgelendirici önbelleği bırakmak için karşılaştırmalar için bir kanca eklendi. Bu güncelleme, benchmark-macro-junit4:1.2.0-alpha05 veya sonraki sürümleri kullanarak 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ı. Sürüm 1.3.0-alpha01 bu kayıtları içerir.

API Değişiklikleri

  • Temel profil derlenmiş, planlanmış veya eksik olup olmadığını kontrol etmek için ProfileVerifier API'si eklendi (I263a4, b/246653809)
  • Makrobenchmark'ın, referans profil oluşturma sürecine dahil edilmek üzere bellek içi profil verilerini diskte tamamen temizlemesini sağlayan yeni bir kabuk yayını ekler. Bu, BaselineProfileRule ile temel profilleri yakalamak ve CompilationMode.Partial(warmupIterations) kullanarak profil performansını değerlendirmek üzere makro karşılaştırma kitaplığının kullanılması 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ı. 1.2.2 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Sıkıştırılmış veya sıkıştırılmamış referans profillerin işlenmesine olanak tanır (Ic61a0)

Sürüm 1.2.1

Sürüm 1.2.1

7 Aralık 2022

androidx.profileinstaller:profileinstaller:1.2.1 yayınlandı. 1.2.1 sürümü bu kayıtları 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 kayıtları içerir.

1.1.0'dan sonraki önemli değişiklikler

  • Android 12 ve sonraki sürümlerde kullanılan ART profili biçimi için destek eklendi.
  • Temel 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ı. 1.2.0-rc01 sürümü bu kayıtları içerir.

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

Sürüm 1.2.0-beta03

1 Haziran 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta03 yayınlandı. 1.2.0-beta03 sürümü bu kayıtları içerir.

Sürüm 1.2.0-beta02

18 Mayıs 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta02 yayınlandı. 1.2.0-beta02 sürümü bu kayıtları içerir.

  • Compose 1.2.0-beta02 sürümlerinin desteklenmesi için hiçbir değişiklik gerekmez.

Sürüm 1.2.0-beta01

11 Mayıs 2022

androidx.profileinstaller:profileinstaller:1.2.0-beta01 yayınlandı. 1.2.0-beta01 sürümü bu kayıtları içerir.

API Değişiklikleri

  • Temel 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ı. Sürüm 1.2.0-alpha02 bu kayıtları içerir.

Bu sürüm, 1.2.0-alpha01 ile 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 kayıtları içerir.

Yeni Özellikler

  • Android 12'de ve sonrasında kullanılan ART profili biçimi için destek ekleyin.

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 kayıtları 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 yapılmadan yayınlanmıştır. 1.1.0-rc01 sürümü bu kayıtları içerir.

Sürüm 1.1.0-beta04

1 Aralık 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta04 yayınlandı. 1.1.0-beta04 sürümü bu kayıtları içerir.

Sürüm 1.1.0-beta03

17 Kasım 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta03 yayınlandı. 1.1.0-beta03 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Compose 1.1.0-beta03'ü desteklemek için güncellendi

Sürüm 1.1.0-beta02

3 Kasım 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta02 yayınlandı. 1.1.0-beta02 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Compose 1.1.0-beta02'yi desteklemek için güncellendi

Sürüm 1.1.0-beta01

27 Ekim 2021

androidx.profileinstaller:profileinstaller:1.1.0-beta01 yayınlandı. 1.1.0-beta01 sürümü bu kayıtları içerir.

  • 1.1.0-alpha07 sürümünden bu yana değişiklik yok.

Sürüm 1.1.0-alpha07

13 Ekim 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha07 yayınlandı. Sürüm 1.1.0-alpha07 bu kayıtları içerir.

Yeni Özellikler

  • Android N'de 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 kayıtları içerir.

Hata Düzeltmeleri

  • N, O ve O_MR1'deki 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ı. Sürüm 1.1.0-alpha05 bu kayıtları 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ı. Sürüm 1.1.0-alpha04 bu kayıtları içerir.

Hata Düzeltmeleri

  • Temel profil kullanan uygulamaların CompilationMode.BaselineProfile kullanarak MacroBenchmarks çalıştırmasını kolaylaştırmak için ProfileInstaller sorunları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ı. Sürüm 1.1.0-alpha03 bu kayıtları içerir.

Hata Düzeltmeleri

  • PackageInfo.lastUpdatedTime değerini uygulamanın dosya dizinindeki bir dosyaya kaydetmek ve bir sonraki çalıştırmada profili yüklemeden önce bu dosyayı karşılaştırmak için profile yükleyici atlama davranışını değiştirin. (Ib93d1)
  • P, Q, R cihazlarda profil biçimini ART gereksinimlerine uyacak şekilde ayarlayın (I84e89)

Sürüm 1.1.0-alpha02

4 Ağustos 2021

androidx.profileinstaller:profileinstaller:1.1.0-alpha02 yayınlandı. Sürüm 1.1.0-alpha02 bu kayıtları içerir.

Compose 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ı. Sürüm 1.1.0-alpha01 bu kayıtları içerir.

Hata Düzeltmeleri

  • Bazı durumlarda yüksek düzey modunu tetikleyen 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 kayıtları içerir.

  • Compose 1.0.4'ü desteklemek için 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 kayıtları içerir.

  • Compose 1.0.3'ü desteklemek için 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 kayıtları 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ürerek yazılı profilin ART tarafından her zaman kullanılabilmesini sağlar. Daha önce kod dönüştürme bu platformlarda atlanıyordu. Bu da bazen ART'nin kaynak profilini 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 kayıtları içerir.

Compose 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 kayıtları içerir.

1.0.0'ın temel özellikleri

Profil yükleyici, kitaplıkların ve uygulamaların "Profil Kuralları" tanımlamasına ve ART profili bilgilerini bir APK ile paketlemesine olanak tanıyan yeni bir kitaplıktır. Söz konusu kitaplık, uygulama başlatıldıktan sonra söz konusu profilleri 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ığıyla ilgili daha fazla bilgi için lütfen 1.0.0-beta01 adresindeki ayrıntılı sürüm notlarına bakın.

Sürüm 1.0.0-rc02

14 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc02 yayınlandı. 1.0.0-rc02 sürümü bu kayıtları içerir.

Sürüm 1.0.0-rc01

1 Temmuz 2021

androidx.profileinstaller:profileinstaller:1.0.0-rc01 yayınlandı. 1.0.0-rc01 sürümü bu kayıtları içerir.

Bu, beta sürümünde değişiklik yapılmamış 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ı. 1.0.0-beta01 sürümü bu kayıtları içerir.

Kütüphanenin Amacı

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

Bu profil yüklemesi androidx.startup kitaplığıyla yapıldı. Herhangi bir nedenle profil yüklemesini devre dışı bırakmak isteyen kullanıcı, manifest dosyasını değiştirerek dosyayı 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ın önemsiz başlatma gereksinimleri varsa ve ProfileInstaller.writeProfile API'yi kullanarak profil yüklemesini manuel olarak tetiklemek istiyorsanız yararlı olur.

Profil kuralları nedir?

  • Bir kitaplığa ilişkin profil kuralları, src/main veya eşdeğer dizinde bulunan baseline-prof.txt metin dosyasında belirtilir. Dosya, satır başına bir kural belirtir. Bu örnekte, bir kural kitaplıktaki yöntemler veya sınıflarla eşleştirme kalıbıdır. Bu kuralların söz dizimi, adb shell profman --dump-classes-and-methods ... kullanılırken kullanılan, kullanıcılar tarafından 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>
    
  • Bir sınıf kuralı 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şaretlenmemesi gerektiğini belirtmek için H, S ve P karakterlerinden bir veya daha fazlasını içerir.

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

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

  • Tek bir kuralın birden fazla yöntemi veya sınıfı kapsamasını sağlamak 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 "sıcak" bir yöntem olduğunu ve önceden derlenmesi gerektiğini belirtir.

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

  • P işaretine sahip bir yöntem, bunun başlatma sonrasında ç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ığında önceden ayrılması gerektiğini gösteriyor.

Nasıl çalışır?

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

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

  • Şu an için bu dosyalar yalnızca Android Gradle Plugin 7.0+ kullanıyorsanız ve şu anda yalnızca gradle.properties içinde bir bayrak ile etkinleştirilmiş durumda kullanılmaktadır:

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

Profiller için denge gerekir

  • Başlangıç yolunda yer alacak yöntem ve sınıfları doğru şekilde önceliklendiren, düzgün şekilde hazırlanmış profiller en iyi sonuçları verir. Ancak profillere çok fazla yöntem veya sınıf eklemek, bellek kullanımı ve disk kullanımı açısından olumsuz bir etkiye neden olabilir. Bu nedenle, kendi profil kurallarınızı tanımlarken tedbirli bir şekilde başlamanız önerilir.