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-alpha02di modul profil dasar pengukuran/macrobenchmark danandroidx.profileinstaller:profileinstaller:1.4.1di 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
ProfileInstallerkini mendukung pengambilan/penginstalan profil di API 35+. Update keProfileInstallertidak 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
NullPointerExceptiondalamProfileInstallReceiver. (b/243851384) - Menambahkan
ProfileVerifierAPI 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
bundletoolversi1.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-alpha05atau 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
ProfileVerifierAPI 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
ProfileInstallReceiveruntuk mendapatkan hasil yang lebih konsisten denganMacrobenchmarkssaat 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
ProfileInstallReceiveruntuk mendapatkan hasil yang lebih konsisten denganMacrobenchmarkssaat menggunakan profil dasar pengukuran. (If2ae5, b/215740637)
Perbaikan Bug
- Profile Installer akan menampilkan pesan yang berguna saat mencoba menggunakan format metadata
V_001di Android 12 dan yang lebih baru. (aosp/1978526, b/217502387) - Profile Installer sekarang menggunakan
androidx.startupversi1.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
ProfileInstalleruntuk 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.txtyang berada disrc/mainatau 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, danPuntuk 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.SlotTableakan 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(): BooleanpadaLayoutNodememiliki 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
Hmenunjukkan bahwa metode ini adalah metode "hot", dan harus dikompilasi sebelumnya.Metode yang memiliki flag
Smenunjukkan 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
Pmenunjukkan 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.txtdan ditempatkan di direktori utama set sumber utama Anda (harus berupa file seinduk ke fileAndroidManifset.xmlAnda)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.