ProfileInstaller
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
2 ottobre 2024 | 1.4.1 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza a ProfileInstaller, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Alla moda
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.3.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.4
Versione 1.4.1
2 ottobre 2024
androidx.profileinstaller:profileinstaller:1.4.1
viene rilasciato. La versione 1.4.1 contiene questi commit.
Correzioni di bug
- È stato corretto il supporto della registrazione del profilo di riferimento multi-processo segnalando più processi in sequenza. Questa correzione richiede l'aggiornamento a
androidx.benchmark:benchmark-macro:1.4.0-alpha02
nel modulo del profilo macrobenchmark/baseline e aandroidx.profileinstaller:profileinstaller:1.4.1
nell'app. (I0f519, b/366231469)
Versione 1.4.0
18 settembre 2024
androidx.profileinstaller:profileinstaller:1.4.0
viene rilasciato. La versione 1.4.0 contiene questi commit.
Modifiche importanti dalla versione 1.3.0
ProfileInstaller
ora supporta l'acquisizione/l'installazione di profili su API 35 e versioni successive. Gli aggiornamenti aProfileInstaller
non dovrebbero più essere necessari per gli aggiornamenti della versione della piattaforma. (6f9f6fa)- Corregge l'arresto anomalo durante l'inserimento di shader su Android U (API 34) e su emulatori. (I031ca, b/274314544)
- Correggi la transcodifica del flag del metodo nel formato del profilo
V_015S
. (aosp/2906631, aosp/2847740)
Versione 1.4.0-rc01
4 settembre 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01
viene rilasciata senza modifiche rispetto all'ultima release beta. La versione 1.4.0-rc01 contiene questi commit.
Versione 1.4.0-beta01
21 agosto 2024
androidx.profileinstaller:profileinstaller:1.4.0-beta01
viene rilasciato senza modifiche rispetto all'ultima versione alpha. La versione 1.4.0-beta01 contiene questi commit.
Versione 1.4.0-alpha02
7 agosto 2024
Viene rilasciato androidx.profileinstaller:profileinstaller:1.4.0-alpha02
. La versione 1.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto dell'API 35 a Profile Installer. (6f9f6fa)
Correzioni di bug
- È stato rimosso il riepilogo manuale dell'accesso alle nuove API di piattaforma, poiché questo avviene automaticamente tramite la definizione del modello API quando si utilizza R8 con AGP 7.3 o versioni successive (ad es. R8 versione 3.3) e per tutte le build quando si utilizza AGP 8.1 o versioni successive (ad es. D8 versione 8.1). I clienti che non utilizzano AGP sono invitati a eseguire l'aggiornamento alla versione 8.1 o successive di D8. Consulta questo articolo per ulteriori dettagli. (If6b4c, b/345472586)
Versione 1.4.0-alpha01
7 febbraio 2024
androidx.profileinstaller:profileinstaller:1.4.0-alpha01
viene rilasciato. La versione 1.4.0-alpha01 contiene questi commit.
Correzioni di bug
- È stato aggiunto il codice di errore per l'assenza di un profilo incorporato al verificatore del profilo. (Ifb109, b/313928520)
- Corregge l'arresto anomalo durante l'inserimento di shader su Android U (API 34) e su emulatori. (I031ca, b/274314544)
- È stato attivato il supporto per Android U nel programma di installazione del profilo. (Iaf177)
- È stato corretto il problema del programma di installazione del profilo su Android U perché il profilo corrente non era vuoto all'avvio del processo. (Ie3899)
- Correggi la transcodifica bitmap del metodo nel formato del profilo
V_015S
. (aosp/2906631) e (aosp/2847740)
Versione 1.3
Versione 1.3.1
3 maggio 2023
androidx.profileinstaller:profileinstaller:1.3.1
viene rilasciato. La versione 1.3.1 contiene questi commit.
Correzioni di bug
- È stato attivato il supporto per Android U nel programma di installazione del profilo (Iaf177)
- È stato corretto un errore di installazione del profilo su Android U dovuto al fatto che il profilo corrente non viene creato vuoto all'avvio del processo. (Ie3899)
Versione 1.3.0
22 marzo 2023
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.0
. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- È stato corretto un
NullPointerException
inProfileInstallReceiver
. (b/243851384) - È stata aggiunta l'API
ProfileVerifier
per verificare dall'interno dell'app se un profilo di riferimento è stato compilato, pianificato o se manca (I263a4, b/246653809) - Aggiunge una nuova trasmissione della shell che consente a Macrobenchmark di svuotare completamente i dati del profilo in memoria su disco, in modo che vengano inclusi nella generazione del profilo di riferimento. Questo è necessario per utilizzare la libreria di macrobenchmark per acquisire i profili di riferimento con
BaselineProfileRule
e valutare il rendimento del profilo utilizzandoCompilationMode.Partial(warmupIterations)
. - È stato aggiunto un codice di diagnostica per rilevare i profili di riferimento compressi. I profili di riferimento compressi non possono essere installati da Profileinstaller nei macrobenchmark o in produzione a causa dell'overhead della CPU e devono essere evitati durante la creazione dell'app aggiornando a Studio/AGP Electric Eel o alla versione
bundletool
1.13.1
(I86413, b/261998144) - Sono stati aggiunti hook per il macrobenchmark per acquisire i profili e eliminare la cache shader, che sono necessari per generare profili di riferimento o macrobenchmarking su dispositivi non rooted (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742)
Versione 1.3.0-rc01
8 marzo 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01
viene rilasciato senza modifiche dall'ultima versione beta. La versione 1.3.0-rc01 contiene questi commit.
Versione 1.3.0-beta01
8 febbraio 2023
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.0-beta01
. La versione 1.3.0-beta01 contiene questi commit.
Modifiche all'API
- Viene rimosso il supporto per la gestione dei profili compressi: l'apertura e la decompressione comportano una regressione di 10 ms nell'utilizzo della CPU durante l'avvio, pertanto è stata aggiunta una diagnostica per rilevare i profili di riferimento compressi in modo errato. (I86413, b/261998144)
Versione 1.3.0-alpha03
11 gennaio 2023
androidx.profileinstaller:profileinstaller:1.3.0-alpha03
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Correzioni di bug
- Consente la gestione dei profili di riferimento compressi o non compressi (Ic61a0)
- Correggere
MacrobenchmarkScope.dropShaderCache()
in modo che non abbia più arresti anomali correggendo il registry di trasmissione nel manifest di ProfileInstaller (I5c728, b/258619948)
Versione 1.3.0-alpha02
9 novembre 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un hook per i benchmark per eliminare la cache degli shader, in modo da garantire un rendimento costante per gli avvii a freddo, in particolare durante la compilazione con i profili delle iterazioni di riscaldamento. Questo aggiornamento è necessario per misurare gli avvii a freddo che utilizzano
benchmark-macro-junit4:1.2.0-alpha05
o versioni successive. Per le modifiche all'API della libreria di benchmark, fai riferimento alla pagina Benchmark 1.2.0-alpha07. (Ia5171, b/231455742)
Versione 1.3.0-alpha01
24 ottobre 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche all'API
- È stata aggiunta l'API
ProfileVerifier
per verificare dall'interno dell'app se un profilo di riferimento è stato compilato, pianificato o se manca (I263a4, b/246653809) - Aggiunge una nuova trasmissione della shell che consente a Macrobenchmark di svuotare completamente i dati del profilo in memoria su disco, in modo che vengano inclusi nella generazione del profilo di riferimento. È necessario per utilizzare la libreria macrobenchmark per acquisire profili di riferimento con
BaselineProfileRule
e valutare le prestazioni del profilo utilizzandoCompilationMode.Partial(warmupIterations)
. (Ie0a7d, b/250083467, b/253094958)
Versione 1.2.2
Versione 1.2.2
11 gennaio 2023
androidx.profileinstaller:profileinstaller:1.2.2
viene rilasciato. La versione 1.2.2 contiene questi commit.
Correzioni di bug
- Consente la gestione dei profili di riferimento compressi o non compressi (Ic61a0)
Versione 1.2.1
Versione 1.2.1
7 dicembre 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.1
. La versione 1.2.1 contiene questi commit.
Nuove funzionalità
- Abilita profileinstaller per S_V2 (API 32) e TIRAMISU (API 33) (b/254900303).
Versione 1.2.0
Versione 1.2.0
27 luglio 2022
androidx.profileinstaller:profileinstaller:1.2.0
viene rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- È stato aggiunto il supporto per il formato del profilo ART utilizzato su Android 12 e versioni successive.
- Aggiungi nuove API in
ProfileInstallReceiver
per ottenere risultati più coerenti conMacrobenchmarks
quando utilizzi i profili di riferimento.
Versione 1.2.0-rc01
15 giugno 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-rc01
. La versione 1.2.0-rc01 contiene questi commit.
- Questa versione è identica a
androidx.profileinstaller:profileinstaller:1.2.0-beta03
.
Versione 1.2.0-beta03
1° giugno 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta03
viene rilasciato. La versione 1.2.0-beta03 contiene questi commit.
Versione 1.2.0-beta02
18 maggio 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta02
viene rilasciato. La versione 1.2.0-beta02 contiene questi commit.
- Nessuna modifica necessaria per supportare le versioni di Compose 1.2.0-beta02.
Versione 1.2.0-beta01
11 maggio 2022
androidx.profileinstaller:profileinstaller:1.2.0-beta01
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Modifiche all'API
- Aggiungi nuove API in
ProfileInstallReceiver
per ottenere risultati più coerenti conMacrobenchmarks
quando utilizzi i profili di riferimento. (If2ae5, b/215740637)
Correzioni di bug
- Il programma di installazione di Profile genera un messaggio utile quando cerchi di utilizzare il formato
V_001
dei metadati su Android 12 e versioni successive. (aosp/1978526, b/217502387) - Il programma di installazione del profilo ora utilizza la versione
1.1.1
diandroidx.startup
. (aosp/2077099, b/229828376)
Versione 1.2.0-alpha02
26 gennaio 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Questa versione è identica a 1.2.0-alpha01
.
Versione 1.2.0-alpha01
12 gennaio 2022
androidx.profileinstaller:profileinstaller:1.2.0-alpha01
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Aggiunta del supporto per il formato del profilo ART utilizzato su Android 12 e versioni successive.
Versione 1.1.0
Versione 1.1.0
9 febbraio 2022
androidx.profileinstaller:profileinstaller:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
Versione 1.1.0-rc01
15 dicembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-rc01
viene rilasciato senza aggiornamenti dalla versione 1.1.0-beta04. La versione 1.1.0-rc01 contiene questi commit.
Versione 1.1.0-beta04
1° dicembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta04
viene rilasciato. La versione 1.1.0-beta04 contiene questi commit.
Versione 1.1.0-beta03
17 novembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta03
viene rilasciato. La versione 1.1.0-beta03 contiene questi commit.
Correzioni di bug
- Aggiornamento per il supporto di Compose 1.1.0-beta03
Versione 1.1.0-beta02
3 novembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- Aggiornamento per il supporto di Compose 1.1.0-beta02
Versione 1.1.0-beta01
27 ottobre 2021
androidx.profileinstaller:profileinstaller:1.1.0-beta01
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
- Nessuna modifica dalla versione 1.1.0-alpha07.
Versione 1.1.0-alpha07
13 ottobre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha07
. La versione 1.1.0-alpha07 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto di profm su Android N
Versione 1.1.0-alpha06
29 settembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha06
viene rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Correzioni di bug
- Risolvere i problemi di transcodifica di profileinstaller su N, O e O_MR1. (I12d75)
Versione 1.1.0-alpha05
15 settembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha05
viene rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
Correzioni di bug
- È stato corretto il problema di transcodifica del profilo per Android Nougat e Android Oreo per gli APK multidex.
Versione 1.1.0-alpha04
1° settembre 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha04
viene rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Correzioni di bug
- Correggi
ProfileInstaller
per semplificare l'esecuzione di MacroBenchmark da parte delle app che utilizzano i profili di riferimento utilizzandoCompilationMode.BaselineProfile
. (I42657, b/196074999)
Versione 1.1.0-alpha03
18 agosto 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha03
. La versione 1.1.0-alpha03 contiene questi commit.
Correzioni di bug
- Modifica il comportamento di ignoramento di profileinstaller per registrare PackageInfo.lastUpdatedTime in un file nella directory dei file dell'app e confrontarlo prima di installare il profilo nella successiva esecuzione. (Ib93d1)
- Modificare il formato del profilo sui dispositivi P, Q e R in modo che sia conforme ai requisiti ART (I84e89)
Versione 1.1.0-alpha02
4 agosto 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha02
. La versione 1.1.0-alpha02 contiene questi commit.
Aggiornato per essere compatibile con Compose 1.1.0-alpha01.
Versione 1.1.0-alpha01
21 luglio 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Correzioni di bug
- È stato corretto un bug che attivava la modalità rigorosa in alcune circostanze.
Versione 1.0
Versione 1.0.4
13 ottobre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.4
. La versione 1.0.4 contiene questi commit.
- Aggiornamento per supportare Compose 1.0.4
Versione 1.0.3
29 settembre 2021
androidx.profileinstaller:profileinstaller:1.0.3
viene rilasciato. La versione 1.0.3 contiene questi commit.
- Aggiornamento per supportare Compose 1.0.3
Versione 1.0.2
1° settembre 2021
androidx.profileinstaller:profileinstaller:1.0.2
viene rilasciato. La versione 1.0.2 contiene questi commit.
Correzioni di bug
- Transcodifica del profilo aggiunta per dispositivi P, Q, R. Ciò significa che questi dispositivi transcodificheranno il profilo, garantendo che il profilo scritto sia sempre utilizzabile da ART. In precedenza, la transcodifica veniva saltata su queste piattaforme, il che a volte impediva ad ART di elaborare il profilo di origine. Nessuna modifica alle API per sviluppatori.
Versione 1.0.1
4 agosto 2021
androidx.profileinstaller:profileinstaller:1.0.1
viene rilasciato. La versione 1.0.1 contiene questi commit.
Aggiornato per essere compatibile con Compose 1.0.1.
Versione 1.0.0
28 luglio 2021
androidx.profileinstaller:profileinstaller:1.0.0
viene rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
Il programma di installazione di Profile è una nuova libreria che consente alle librerie e alle applicazioni di definire "Regole del profilo" e di raggruppare le informazioni del profilo ART con un APK. Questa libreria installerà questi profili dopo l'avvio dell'applicazione. Questa opzione può essere utilizzata per migliorare le prestazioni dell'applicazione.
Per ulteriori informazioni su cosa sono queste regole del profilo e su come funzionano, consulta le note di rilascio dettagliate nella versione 1.0.0-beta01.
Versione 1.0.0-rc02
14 luglio 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc02
viene rilasciato. La versione 1.0.0-rc02 contiene questi commit.
Versione 1.0.0-rc01
1° luglio 2021
androidx.profileinstaller:profileinstaller:1.0.0-rc01
viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Si tratta di una release RC senza modifiche rispetto alla versione beta.
Versione 1.0.0-beta01
16 giugno 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.0-beta01
. La versione 1.0.0-beta01 contiene questi commit.
Scopo della raccolta
Profile Installer è una nuova libreria che consente alle librerie e alle applicazioni di definire "Regole del profilo" e raggruppare le informazioni del profilo ART con un APK. Questa libreria installerà i profili dopo il lancio dell'applicazione. Questo può essere utilizzato per migliorare le prestazioni dell'applicazione.
Questa installazione del profilo viene eseguita con la libreria androidx.startup. Se per qualsiasi motivo vuoi disattivare l'installazione del profilo, puoi modificare il file manifest per rimuoverlo:
<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>
Ciò è particolarmente utile se la tua app ha requisiti di avvio non banali e vuoi attivare manualmente l'installazione del profilo utilizzando l'API ProfileInstaller.writeProfile
.
Che cosa sono le regole del profilo?
Le regole del profilo per una raccolta sono specificate in un file di testo
baseline-prof.txt
situato nella directorysrc/main
o equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza a metodi o classi nella libreria. La sintassi di queste regole è un superset del formato del profilo ART leggibile da persone che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole possono avere come target metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola della classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
è uno o più dei caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato come "Hot", "Startup" o "Post Startup".<CLASS_DESCRIPTOR>
è il descrittore della classe a cui appartiene il metodo scelto come target. Ad esempio, la classeandroidx.compose.runtime.SlotTable
avrà un descrittoreLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
è la firma del metodo e include il nome, i tipi di parametro e i tipi di ritorno del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono contenere caratteri jolly (
**
,*
e?
) per consentire a una singola regola di includere più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e deve essere compilato in anticipo.Un metodo con il flag
S
indica che si tratta di un metodo chiamato all'avvio e che deve essere compilato in anticipo per evitare i costi della compilazione e dell'interpretazione del metodo al momento dell'avvio.Un metodo con il flag
P
indica che si tratta di un metodo chiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare il costo del caricamento della classe.
Come funziona?
Le librerie possono definire queste regole che verranno pacchettizzate negli elementi AAR. Quando viene creato un APK che include questi elementi, le regole vengono unite e utilizzate per creare un profilo ART binario compatto specifico per l'APK. ART può quindi sfruttare questo profilo quando l'APK è installato sui dispositivi per compilare in anticipo un sottoinsieme specifico dell'applicazione al fine di migliorarne le prestazioni, in particolare la prima esecuzione. Tieni presente che questo non avrà alcun effetto sulle applicazioni di debug.
I file delle regole devono essere denominati
baseline-prof.txt
e inseriti nella directory principale del set di origini principale (deve essere un file di pari livello del fileAndroidManifset.xml
)Al momento questi file verranno utilizzati soltanto se usi il plug-in Android Gradle 7.0 o versioni successive. Al momento questi file sono abilitati soltanto con un flag in
gradle.properties
:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
I profili richiedono un saldo
- I profili creati correttamente che danno la priorità ai metodi e alle classi che saranno nel percorso di avvio e sono fondamentali per le prestazioni produrranno i risultati migliori, tuttavia l'inclusione di troppi metodi o classi nei profili può avere un effetto netto negativo in termini di consumo di memoria e utilizzo del disco, quindi è consigliabile iniziare in modo conservativo se si definiscono le regole del profilo.