Programma di installazione profili
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
7 febbraio 2024 | 1.3.1 | - | - | 1.4.0-alpha01 |
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 artefatti necessari nel file build.gradle
per
l'app o il modulo:
Trendy
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.3.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Per ulteriori informazioni sulle dipendenze, vedi Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.4
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
- Aggiunto codice di errore per nessun profilo incorporato nello strumento di verifica del profilo. (Ifb109, b/313928520).
- È stato corretto l'arresto anomalo durante l'eliminazione degli wiper su Android U (API 34) e sugli emulatori. (I031ca, b/274314544).
- Supporto per Android U nel programma di installazione del profilo attivato. (Iaf177)
- Risolto il problema del programma di installazione del profilo su Android U che non funzionava perché il profilo corrente non è stato creato 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
- Supporto per Android U nel programma di installazione del profilo attivato (Iaf177)
- Risolto il problema del programma di installazione del profilo su Android U che non funzionava perché il profilo corrente non è stato creato vuoto all'avvio del processo. (Ie3899)
Versione 1.3.0
22 marzo 2023
androidx.profileinstaller:profileinstaller:1.3.0
viene rilasciato. 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 controllare dall'interno dell'app se un profilo di riferimento è stato compilato, pianificato o non è presente (I263a4, b/246653809) - Aggiunge una nuova trasmissione shell che consente a Macrobenchmark di eliminare completamente i dati del profilo in memoria su disco, da includere nella generazione del profilo di base. Questa operazione è necessaria 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 diagnostico per rilevare i profili di riferimento compressi. I profili di base compressi non possono essere installati da Profileinstall in Macrobenchmarks o in produzione a causa del sovraccarico della CPU e devono essere evitati quando si crea l'app aggiornandola a Studio/AGP Electric Eel o alla versione
bundletool
1.13.1
(I86413, b/261998144) - Sono stati aggiunti hook per macrobenchmark per acquisire i profili e rilasciare la cache dello Shader, 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
androidx.profileinstaller:profileinstaller:1.3.0-beta01
viene rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Modifiche alle API
- Rimuove il supporto per la gestione dei profili compressi: l'apertura e la decompressione porta a una regressione di 10 secondi nell'utilizzo della CPU durante l'avvio della CPU, quindi è stata aggiunta una diagnostica per rilevare 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)
- Correggi l'arresto anomalo di
MacrobenchmarkScope.dropShaderCache()
in modo che non si verifichi più l'arresto anomalo correggendo il registro delle trasmissioni nel file manifest del programma di installazione del profilo (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 in modo da eliminare la cache delloshar, in modo da garantire prestazioni coerenti per le startup a freddo, soprattutto durante la compilazione con profili da iterazioni di riscaldamento. Questo aggiornamento è necessario per misurare gli avvii a freddo utilizzando
benchmark-macro-junit4:1.2.0-alpha05
o versioni successive. Per le modifiche all'API della libreria di benchmark, consulta la pagina Benchmark 1.2.0-alpha07. (Ia5171, b/231455742)
Versione 1.3.0-alpha01
24 ottobre 2022
androidx.profileinstaller:profileinstaller:1.3.0-alpha01
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- È stata aggiunta l'API
ProfileVerifier
per controllare dall'interno dell'app se un profilo di riferimento è stato compilato, pianificato o non è presente (I263a4, b/246653809) - Aggiunge una nuova trasmissione shell che consente a Macrobenchmark di eliminare completamente i dati del profilo in memoria su disco, da includere nella generazione del profilo di base. Questa operazione è necessaria per utilizzare la libreria di macrobenchmark per acquisire i profili di riferimento con
BaselineProfileRule
e valutare il rendimento 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
androidx.profileinstaller:profileinstaller:1.2.1
viene rilasciato. La versione 1.2.1 contiene questi commit.
Nuove funzionalità
- Attiva il programma di installazione del profilo 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
- Aggiunto il supporto per il formato del profilo ART utilizzato su Android 12 e in futuro.
- 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
androidx.profileinstaller:profileinstaller:1.2.0-rc01
viene rilasciato. 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.
- Non sono necessarie modifiche 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 alle 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 del profilo genera un messaggio utile quando tenta di utilizzare il formato dei metadati
V_001
su Android 12 e versioni successive. (aosp/1978526, b/217502387) - Il programma di installazione del profilo ora utilizza
androidx.startup
versione1.1.1
. (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à
- Aggiungi il 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
- Aggiornato per supportare 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
- Aggiornato per supportare 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
androidx.profileinstaller:profileinstaller:1.1.0-alpha07
viene rilasciato. La versione 1.1.0-alpha07 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto per Prof 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
- Sono stati risolti i problemi di transcodifica del programma di installazione dei profili 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
- È stata corretta la transcodifica del profilo Android Nougat e del profilo 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 consentire alle app che utilizzano profili di riferimento di eseguire MacroBenchmark più facilmente conCompilationMode.BaselineProfile
. (I42657, b/196074999)
Versione 1.1.0-alpha03
18 agosto 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha03
viene rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Correzioni di bug
- Modifica il comportamento di ignorare del programma di installazione del profilo per registrare il valore PackageInfo.lastUpdatedTime in un file nella directory dei file dell'app e confrontarlo prima di installare il profilo alla successiva esecuzione. (Ib93d1)
- Regola il formato del profilo sui dispositivi P, Q, R per garantire la conformità ai requisiti ART (I84e89)
Versione 1.1.0-alpha02
4 agosto 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha02
viene rilasciato. 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
- Risolto il bug che in alcune circostanze attivava la modalità con restrizioni.
Versione 1.0
Versione 1.0.4
13 ottobre 2021
androidx.profileinstaller:profileinstaller:1.0.4
viene rilasciato. La versione 1.0.4 contiene questi commit.
- Aggiornato 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.
- Aggiornato 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. In questo modo, questi dispositivi transcodificano 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 fa sì che ART non riesca a 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 del profilo è una nuova libreria che consente a librerie e applicazioni di definire "regole del profilo" e di raggruppare le informazioni del profilo ART con un APK. Questa libreria installerà i profili dopo l'avvio dell'applicazione. Questa funzionalità può essere utilizzata per migliorare le prestazioni dell'applicazione.
Per ulteriori informazioni su queste regole del profilo e sul loro funzionamento, consulta le note di rilascio dettagliate all'indirizzo 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.
Questa è una release RC senza modifiche rispetto alla versione beta.
Versione 1.0.0-beta01
16 giugno 2021
androidx.profileinstaller:profileinstaller:1.0.0-beta01
viene rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Scopo della raccolta
Il programma di installazione del profilo è una nuova libreria che consente a librerie e applicazioni di definire "regole del profilo" e di raggruppare le informazioni del profilo ART con un APK. Questa libreria installerà i profili dopo l'avvio dell'applicazione. Questa funzionalità può essere utilizzata per migliorare le prestazioni dell'applicazione.
L'installazione di questo profilo viene eseguita con la libreria androidx.startup. Se per qualsiasi motivo desideri disabilitare 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 libreria sono specificate in un file di testo
baseline-prof.txt
che si trova insrc/main
o nella directory equivalente. Il file specifica una regola per riga, dove una regola in questo caso è un pattern per la corrispondenza con metodi o classi della libreria. La sintassi di queste regole è un soprainsieme del formato del profilo ART leggibile che viene utilizzato quando si utilizzaadb shell profman --dump-classes-and-methods ...
. Queste regole assumono una delle due forme per il targeting di metodi o classi.Una regola del metodo avrà il seguente pattern:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regola di classe avrà il seguente pattern:
<CLASS_DESCRIPTOR>
Qui
<FLAGS>
contiene uno o più caratteriH
,S
eP
per indicare se il metodo deve essere contrassegnato o meno 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 restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono includere caratteri jolly (
**
,*
e?
) in modo che una singola regola includa più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "ad accesso frequente" e deve essere compilato in anticipo.Un metodo con il flag
S
indica che si tratta di un metodo che viene richiamato all'avvio e deve essere compilato in anticipo per evitare i costi di compilazione e interpretazione del metodo all'avvio.Un metodo con il flag
P
indica che si tratta di un metodo che viene richiamato dopo l'avvio.Una classe presente in questo file indica che viene utilizzata durante l'avvio e deve essere preallocata nell'heap per evitare i costi di caricamento della classe.
Come funziona?
Le librerie possono definire queste regole che verranno pacchettizzate in artefatti AAR. Quando viene creato un APK che include questi artefatti, queste regole vengono unite e le regole unite vengono utilizzate per creare un profilo ART binario compatto specifico per l'APK. ART può quindi sfruttare questo profilo quando l'APK viene 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 ciò non avrà alcun effetto sulle applicazioni di cui è possibile eseguire il debug.
I file delle regole devono essere denominati
baseline-prof.txt
e posizionati nella directory radice del set di origine principale (dovrebbe essere un file di pari livello del fileAndroidManifset.xml
)Al momento questi file vengono utilizzati solo se usi il plug-in Android per Gradle 7.0 o versioni successive e al momento è abilitato solo con un flag nel tuo
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 priorità in modo corretto ai metodi e alle classi che saranno nel percorso di avvio e che saranno critiche per le prestazioni, daranno i risultati migliori; tuttavia, l'inclusione di troppi metodi o classi nei profili può avere un effetto negativo netto in termini di consumo di memoria e utilizzo del disco, quindi è consigliabile iniziare in modo conservativo se si definiscono le regole del profilo.