ProfileInstaller (Profil Yükleyici)
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.
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
ProfileInstallReceiver
öğesinde birNullPointerException
düzeltildi. (b/243851384)- 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 veCompilationMode.Partial(warmupIterations)
kullanarak profil performansını değerlendirmek üzere makro karşılaştırma kitaplığının kullanılması için gereklidir. - Sıkıştırılmış referans profilleri algılamak için teşhis kodu eklendi. Sıkıştırılmış temel profiller, Makrobenchmark'larda veya üretimde CPU ek yükü nedeniyle Profileloader tarafından yüklenemez ve uygulamanızı oluştururken bunu Studio/AGP Electric Eel ya da
bundletool
sürümüne1.13.1
(I86413, b/261998144) güncelleyerek bundan kaçınılmalıdır - Rootlanmamış cihazlarda (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/23145574) Temel Profiller veya makro karşılaştırmalar oluşturmak için gerekli olan, profilleri ve gölgelendirici önbelleği yakalamak amacıyla makro karşılaştırma için kancalar eklendi
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 veCompilationMode.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çinProfileInstallReceiver
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çinProfileInstallReceiver
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çinProfileInstaller
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 bulunanbaseline-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çinH
,S
veP
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ındaLandroidx/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
üzerindekifun isPlaced(): Boolean
yöntemiisPlaced()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.