ProfileInstaller
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
2 Oktober 2024 | 1.4.1 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada ProfileInstaller, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.4.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.4.1") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.4
Versi 1.4.1
2 Oktober 2024
androidx.profileinstaller:profileinstaller:1.4.1
dirilis. Versi 1.4.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki dukungan untuk perekaman Profil Dasar Pengukuran multiproses dengan memberikan sinyal ke beberapa proses secara berurutan. Perbaikan ini memerlukan update ke
androidx.benchmark:benchmark-macro:1.4.0-alpha02
di modul profil dasar pengukuran/macrobenchmark danandroidx.profileinstaller:profileinstaller:1.4.1
di aplikasi. (I0f519, b/366231469)
Versi 1.4.0
18 September 2024
androidx.profileinstaller:profileinstaller:1.4.0
dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
ProfileInstaller
kini mendukung pengambilan/penginstalan profil di API 35+. Update keProfileInstaller
tidak lagi diperlukan untuk update versi platform. (6f9f6fa)- Memperbaiki error saat menempatkan shader di Android U (API 34), serta di emulator. (I031ca, b/274314544)
- Memperbaiki transcoding flag metode dalam format profil
V_015S
. (aosp/2906631, aosp/2847740)
Versi 1.4.0-rc01
4 September 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01
dirilis tanpa perubahan dari rilis beta terakhir. Versi 1.4.0-rc01 berisi commit ini.
Versi 1.4.0-beta01
21 Agustus 2024
androidx.profileinstaller:profileinstaller:1.4.0-beta01
dirilis tanpa perubahan dari versi alfa terakhir. Versi 1.4.0-beta01 berisi commit ini.
Versi 1.4.0-alpha02
7 Agustus 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha02
dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Fitur Baru
- Menambahkan dukungan API 35 ke Profile Installer. (6f9f6fa)
Perbaikan Bug
- Menghapus garis besar manual akses ke API platform baru karena hal ini terjadi secara otomatis melalui pemodelan API saat menggunakan R8 dengan AGP 7.3 atau yang lebih baru (misalnya, R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (misalnya, D8 versi 8.1). Klien yang tidak menggunakan AGP disarankan untuk mengupdate ke D8 versi 8.1 atau yang lebih baru. Baca artikel ini untuk informasi selengkapnya. (If6b4c, b/345472586)
Versi 1.4.0-alpha01
7 Februari 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha01
dirilis. Versi 1.4.0-alpha01 berisi commit ini.
Perbaikan Bug
- Menambahkan kode error untuk profil yang tidak disematkan ke pemverifikasi profil. (Ifb109, b/313928520)
- Memperbaiki error saat menempatkan shader di Android U (API 34), serta di emulator. (I031ca, b/274314544)
- Mengaktifkan dukungan untuk Android U di penginstal profil. (Iaf177)
- Memperbaiki penginstal profil di Android U yang gagal karena profil saat ini tidak dibuat kosong saat proses dimulai. (Ie3899)
- Memperbaiki transcoding bitmap metode dalam format profil
V_015S
. (aosp/2906631) dan (aosp/2847740)
Versi 1.3
Versi 1.3.1
3 Mei 2023
androidx.profileinstaller:profileinstaller:1.3.1
dirilis. Versi 1.3.1 berisi commit ini.
Perbaikan Bug
- Mengaktifkan dukungan untuk Android U di penginstal profil (Iaf177)
- Memperbaiki penginstal profil di Android U yang gagal karena profil saat ini tidak dibuat kosong saat proses dimulai. (Ie3899)
Versi 1.3.0
22 Maret 2023
androidx.profileinstaller:profileinstaller:1.3.0
dirilis. Versi 1.3.0 berisi commit berikut ini.
Perubahan penting sejak versi 1.2.0
- Memperbaiki
NullPointerException
dalamProfileInstallReceiver
. (b/243851384) - Menambahkan
ProfileVerifier
API untuk memeriksa dari dalam aplikasi apakah profil dasar pengukuran telah dikompilasi, dijadwalkan, atau hilang (I263a4, b/246653809) - Menambahkan siaran shell baru yang memungkinkan Macrobenchmark menghapus data profil dalam memori pada disk agar disertakan dalam pembuatan profil dasar pengukuran. Tindakan ini diperlukan agar library macrobenchmark dapat digunakan untuk mengambil profil dasar pengukuran dengan
BaselineProfileRule
, dan mengevaluasi performa profil menggunakanCompilationMode.Partial(warmupIterations)
. - Menambahkan kode diagnostik untuk mendeteksi profil dasar pengukuran yang dikompresi. Profil dasar pengukuran yang dikompresi tidak dapat diinstal oleh Profileinstaller di Macrobenchmark atau dalam produksi karena overhead CPU, dan harus dihindari saat mem-build aplikasi dengan mengupdate ke Studio/AGP Electric Eel atau
bundletool
versi1.13.1
(I86413, b/261998144) - Menambahkan hook untuk macrobenchmark guna mengambil profil dan menghapus cache shader, yang diperlukan untuk membuat Profil Dasar Pengukuran atau macrobenchmarking di perangkat yang tidak di-root (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742)
Versi 1.3.0-rc01
8 Maret 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01
dirilis tanpa perubahan sejak versi beta terakhir. Versi 1.3.0-rc01 berisi commit ini.
Versi 1.3.0-beta01
8 Februari 2023
androidx.profileinstaller:profileinstaller:1.3.0-beta01
dirilis. Versi 1.3.0-beta01 berisi commit ini.
Perubahan API
- Menghapus dukungan untuk menangani profil yang dikompresi - membuka dan mendekompresi akan menyebabkan regresi md selama 10 detik dalam penggunaan CPU selama startup, jadi sebagai gantinya, diagnostik ditambahkan untuk menemukan profil dasar pengukuran yang salah kompresi. (I86413, b/261998144)
Versi 1.3.0-alpha03
11 Januari 2023
androidx.profileinstaller:profileinstaller:1.3.0-alpha03
dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perbaikan Bug
- Memungkinkan penanganan profil dasar pengukuran yang dikompresi atau tidak dikompresi (Ic61a0)
- Memperbaiki
MacrobenchmarkScope.dropShaderCache()
agar tidak lagi error dengan memperbaiki registry siaran dalam manifes profileinstaller (I5c728, b/258619948)
Versi 1.3.0-alpha02
9 November 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha02
dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Perubahan API
- Menambahkan hook untuk benchmark guna menghapus cache shader, guna memastikan performa yang konsisten untuk cold startup, terutama saat mengompilasi dengan profil dari iterasi pemanasan. Update ini diperlukan untuk mengukur cold startup menggunakan
benchmark-macro-junit4:1.2.0-alpha05
atau yang lebih baru. Untuk perubahan API library Benchmark, lihat halaman Benchmark 1.2.0-alpha07. (Ia5171, b/231455742)
Versi 1.3.0-alpha01
24 Oktober 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Perubahan API
- Menambahkan
ProfileVerifier
API untuk memeriksa dari dalam aplikasi jika profil dasar pengukuran telah dikompilasi, dijadwalkan, atau hilang (I263a4, b/246653809) - Menambahkan siaran shell baru yang memungkinkan Macrobenchmark menghapus data profil dalam memori pada disk agar disertakan dalam pembuatan profil dasar pengukuran. Tindakan ini diperlukan agar library macrobenchmark dapat digunakan untuk mengambil profil dasar pengukuran dengan
BaselineProfileRule
, dan mengevaluasi performa profil menggunakanCompilationMode.Partial(warmupIterations)
. (Ie0a7d, b/250083467, b/253094958)
Versi 1.2.2
Versi 1.2.2
11 Januari 2023
androidx.profileinstaller:profileinstaller:1.2.2
dirilis. Versi 1.2.2 berisi commit ini.
Perbaikan Bug
- Memungkinkan penanganan profil dasar pengukuran yang dikompresi atau tidak dikompresi (Ic61a0)
Versi 1.2.1
Versi 1.2.1
7 Desember 2022
androidx.profileinstaller:profileinstaller:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Fitur Baru
- Mengaktifkan profileinstaller untuk S_V2 (API 32) dan TIRAMISU (API 33) (b/254900303).
Versi 1.2.0
Versi 1.2.0
27 Juli 2022
androidx.profileinstaller:profileinstaller:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
- Menambahkan dukungan untuk format profil ART yang digunakan di Android 12 dan yang lebih baru.
- Menambahkan API baru di
ProfileInstallReceiver
untuk mendapatkan hasil yang lebih konsisten denganMacrobenchmarks
saat menggunakan profil dasar pengukuran.
Versi 1.2.0-rc01
15 Juni 2022
androidx.profileinstaller:profileinstaller:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
- Versi ini sama persis dengan
androidx.profileinstaller:profileinstaller:1.2.0-beta03
.
Versi 1.2.0-beta03
1 Juni 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta03
dirilis. Versi 1.2.0-beta03 berisi commit ini.
Versi 1.2.0-beta02
18 Mei 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta02
dirilis. Versi 1.2.0-beta02 berisi commit ini.
- Tidak ada perubahan yang diperlukan untuk mendukung versi Compose 1.2.0-beta02.
Versi 1.2.0-beta01
11 Mei 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta01
dirilis. Versi 1.2.0-beta01 berisi commit ini.
Perubahan API
- Menambahkan API baru di
ProfileInstallReceiver
untuk mendapatkan hasil yang lebih konsisten denganMacrobenchmarks
saat menggunakan profil dasar pengukuran. (If2ae5, b/215740637)
Perbaikan Bug
- Profile Installer akan menampilkan pesan yang berguna saat mencoba menggunakan format metadata
V_001
di Android 12 dan yang lebih baru. (aosp/1978526, b/217502387) - Profile Installer sekarang menggunakan
androidx.startup
versi1.1.1
. (aosp/2077099, b/229828376)
Versi 1.2.0-alpha02
26 Januari 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha02
dirilis. Versi 1.2.0-alpha02 berisi commit ini.
Versi ini sama persis dengan 1.2.0-alpha01
.
Versi 1.2.0-alpha01
12 Januari 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk format profil ART yang digunakan di Android 12 dan yang lebih baru.
Versi 1.1.0
Versi 1.1.0
9 Februari 2022
androidx.profileinstaller:profileinstaller:1.1.0
dirilis. Versi 1.1.0 berisi commit ini.
Versi 1.1.0-rc01
15 Desember 2021
androidx.profileinstaller:profileinstaller:1.1.0-rc01
dirilis tanpa perubahan sejak versi 1.1.0-beta04. Versi 1.1.0-rc01 berisi commit ini.
Versi 1.1.0-beta04
1 Desember 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta04
dirilis. Versi 1.1.0-beta04 berisi commit ini.
Versi 1.1.0-beta03
17 November 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta03
dirilis. Versi 1.1.0-beta03 berisi commit ini.
Perbaikan Bug
- Diupdate agar mendukung Compose 1.1.0-beta03
Versi 1.1.0-beta02
3 November 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta02
dirilis. Versi 1.1.0-beta02 berisi commit ini.
Perbaikan Bug
- Diupdate agar mendukung Compose 1.1.0-beta02
Versi 1.1.0-beta01
27 Oktober 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta01
dirilis. Versi 1.1.0-beta01 berisi commit ini.
- Tidak ada perubahan sejak versi 1.1.0-alpha07.
Versi 1.1.0-alpha07
13 Oktober 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha07
dirilis. Versi 1.1.0-alpha07 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk profm di Android N
Versi 1.1.0-alpha06
29 September 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha06
dirilis. Versi 1.1.0-alpha06 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah transcoding profileinstaller di N, O, dan O_MR1. (I12d75)
Versi 1.1.0-alpha05
15 September 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha05
dirilis. Versi 1.1.0-alpha05 berisi commit ini.
Perbaikan Bug
- Memperbaiki transcoding profil Android Nougat dan Android Oreo untuk apk multidex.
Versi 1.1.0-alpha04
1 September 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha04
dirilis. Versi 1.1.0-alpha04 berisi commit ini.
Perbaikan Bug
- Memperbaiki
ProfileInstaller
untuk mempermudah aplikasi menggunakan profil dasar pengukuran guna menjalankan MacroBenchmarks menggunakanCompilationMode.BaselineProfile
. (I42657, b/196074999)
Versi 1.1.0-alpha03
18 Agustus 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha03
dirilis. Versi 1.1.0-alpha03 berisi commit ini.
Perbaikan Bug
- Mengubah perilaku lewati profileinstaller untuk mencatat log PackageInfo.lastUpdatedTime di file dalam direktori file aplikasi, dan membandingkannya sebelum menginstal profil pada proses berikutnya. (Ib93d1)
- Menyesuaikan format profil di perangkat P, Q, R agar sesuai dengan persyaratan ART (I84e89)
Versi 1.1.0-alpha02
4 Agustus 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha02
dirilis. Versi 1.1.0-alpha02 berisi commit ini.
Diupdate agar kompatibel dengan Compose 1.1.0-alpha01.
Versi 1.1.0-alpha01
21 Juli 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha01
dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug yang akan memicu mode ketat dalam situasi tertentu.
Versi 1.0
Versi 1.0.4
13 Oktober 2021
androidx.profileinstaller:profileinstaller:1.0.4
dirilis. Versi 1.0.4 berisi commit ini.
- Diupdate agar mendukung Compose 1.0.4
Versi 1.0.3
29 September 2021
androidx.profileinstaller:profileinstaller:1.0.3
dirilis. Versi 1.0.3 berisi commit ini.
- Diupdate agar mendukung Compose 1.0.3
Versi 1.0.2
1 September 2021
androidx.profileinstaller:profileinstaller:1.0.2
dirilis. Versi 1.0.2 berisi commit ini.
Perbaikan Bug
- Menambahkan transcoding profil untuk perangkat P, Q, R. Perubahan ini berarti bahwa perangkat ini akan melakukan transcoding profil, memastikan bahwa profil tertulis selalu dapat digunakan oleh ART. Sebelumnya, transcoding akan dilewati di platform ini, yang terkadang menyebabkan ART tidak dapat memproses profil sumber. Tidak ada perubahan pada API developer.
Versi 1.0.1
4 Agustus 2021
androidx.profileinstaller:profileinstaller:1.0.1
dirilis. Versi 1.0.1 berisi commit ini.
Diupdate agar kompatibel dengan Compose 1.0.1.
Versi 1.0.0
28 Juli 2021
androidx.profileinstaller:profileinstaller:1.0.0
dirilis. Versi 1.0.0 berisi commit ini.
Fitur utama 1.0.0
Profile Installer adalah library baru yang memungkinkan library dan aplikasi menentukan “Aturan Profil” dan memaketkan informasi profil ART dengan APK, dan library ini akan menginstal profil tersebut setelah peluncuran aplikasi. Ini dapat digunakan untuk meningkatkan performa aplikasi.
Lihat catatan rilis mendetail di 1.0.0-beta01 untuk mengetahui informasi selengkapnya tentang pengertian aturan profil ini dan cara kerjanya.
Versi 1.0.0-rc02
14 Juli 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc02
dirilis. Versi 1.0.0-rc02 berisi commit ini.
Versi 1.0.0-rc01
1 Juli 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc01
dirilis. Versi 1.0.0-rc01 berisi commit ini.
Ini adalah rilis RC dan tidak ada perubahan dari versi beta.
Versi 1.0.0-beta01
16 Juni 2021
androidx.profileinstaller:profileinstaller:1.0.0-beta01
dirilis. Versi 1.0.0-beta01 berisi commit ini.
Tujuan Library
Profile Installer adalah library baru yang memungkinkan library dan aplikasi menentukan “Aturan Profil” dan memaketkan informasi profil ART dengan APK, dan library ini akan menginstal profil tersebut setelah peluncuran aplikasi. Ini dapat digunakan untuk meningkatkan performa aplikasi.
Penginstalan profil ini dilakukan dengan library androidx.startup. Jika karena alasan apa pun seseorang ingin menonaktifkan penginstalan profil, mereka dapat mengubah manifes untuk menghapusnya:
<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>
Hal ini sangat berguna jika aplikasi Anda memiliki persyaratan startup yang tidak umum dan Anda ingin memicu penginstalan profil secara manual menggunakan ProfileInstaller.writeProfile
API.
Apa itu aturan profil?
Aturan profil untuk library ditentukan dalam file teks
baseline-prof.txt
yang berada disrc/main
atau direktori yang setara. File ini menetapkan aturan per baris. Dalam hal ini, aturan adalah pola untuk pencocokan dengan metode atau class dalam library. Sintaksis untuk aturan ini adalah superset dari format profil ART yang dapat dibaca manusia yang digunakan saat menggunakanadb shell profman --dump-classes-and-methods ...
. Aturan ini menggunakan salah satu dari dua bentuk untuk ditarget, yaitu metode atau class.Aturan metode akan memiliki pola berikut:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Dan aturan class akan memiliki pola berikut:
<CLASS_DESCRIPTOR>
Di sini,
<FLAGS>
adalah satu atau beberapa karakterH
,S
, danP
untuk menunjukkan apakah metode ini harus ditandai sebagai "Hot", "Startup", atau "Post Startup".<CLASS_DESCRIPTOR>
adalah deskripsi untuk class tempat metode yang ditargetkan berada. Misalnya, classandroidx.compose.runtime.SlotTable
akan memiliki deskripsiLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
adalah tanda tangan metode, dan menyertakan nama, jenis parameter, serta jenis nilai yang ditampilkan metode. Misalnya, metodefun isPlaced(): Boolean
padaLayoutNode
memiliki tanda tanganisPlaced()Z
.Pola ini dapat memiliki karakter pengganti (
**
,*
, dan?
) agar memiliki satu aturan yang mencakup beberapa metode atau class.
Apa fungsi aturan tersebut?
Metode yang memiliki flag
H
menunjukkan bahwa metode ini adalah metode "hot", dan harus dikompilasi sebelumnya.Metode yang memiliki flag
S
menunjukkan bahwa ini adalah metode yang dipanggil saat memulai, dan harus dikompilasi terlebih dahulu untuk menghindari biaya kompilasi dan penafsiran metode tersebut pada waktu mulai.Metode yang memiliki flag
P
menunjukkan bahwa ini adalah metode yang dipanggil setelah memulai.Class yang ada dalam file ini menunjukkan bahwa class digunakan saat memulai dan harus dialokasikan sebelumnya di heap untuk menghindari biaya pemuatan class.
Bagaimana cara kerjanya?
Library dapat menentukan aturan ini yang akan dikemas dalam artefak AAR. Saat APK kemudian dibuat dengan menyertakan artefak ini, aturan ini digabung menjadi satu dan aturan yang digabungkan digunakan untuk membuat profil ART biner ringkas yang khusus untuk APK. ART kemudian dapat memanfaatkan profil ini saat APK diinstal pada perangkat untuk mengompilasi subset aplikasi tertentu terlebih dahulu guna meningkatkan performa aplikasi, terutama saat dijalankan pertama kali. Perhatikan bahwa tindakan ini tidak akan berpengaruh pada aplikasi yang dapat di-debug.
File aturan harus diberi nama
baseline-prof.txt
dan ditempatkan di direktori utama set sumber utama Anda (harus berupa file seinduk ke fileAndroidManifset.xml
Anda)Saat ini file tersebut hanya akan digunakan jika Anda menggunakan Plugin Android Gradle 7.0+, dan saat ini hanya diaktifkan dengan flag di
gradle.properties
:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
Profil memerlukan keseimbangan
- Profil yang dibuat dengan benar yang memprioritaskan metode dan class dengan benar yang akan berada di jalur startup dan performa penting akan memberikan hasil terbaik, tetapi menyertakan terlalu banyak metode atau class dalam profil dapat berdampak negatif bersih dalam hal penggunaan memori dan penggunaan disk. Jadi, sebaiknya mulailah secara hati-hati jika menetapkan aturan profil Anda sendiri.