ProfileInstaller
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
7 agosto 2024 | 1.3.1 | - | - | 1.4.0-alpha02 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza su ProfileInstaller, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.
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 saperne di più sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Versione 1.4
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 al programma di installazione del profilo. (6f9f6fa)
Correzioni di bug
- È stata rimossa la definizione manuale dell’accesso alle nuove API della piattaforma poiché ciò avviene automaticamente tramite la modellazione 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). Si consiglia ai clienti che non utilizzano AGP di eseguire l'aggiornamento alla versione D8 8.1 o successiva. Consulta questo articolo per ulteriori dettagli. (If6b4c, b/345472586)
Versione 1.4.0-alpha01
7 febbraio 2024
Viene rilasciato androidx.profileinstaller:profileinstaller:1.4.0-alpha01
. La versione 1.4.0-alpha01 contiene questi commit.
Correzioni di bug
- È stato aggiunto il codice di errore per nessun profilo incorporato nello strumento di verifica del profilo. (Ifb109, b/313928520)
- Correzioni degli arresti anomali durante l'eliminazione di Shader su Android U (API 34) e sugli emulatori. (I031ca, b/274314544)
- È stato attivato il supporto di 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 il metodo di transcodifica bitmap nel formato del profilo
V_015S
. (aosp/2906631) e (aosp/2847740)
Versione 1.3
Versione 1.3.1
3 maggio 2023
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.1
. 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 il problema del programma di installazione del profilo su Android U perché il profilo corrente non era 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) - Aggiunta l'API
ProfileVerifier
per verificare dall'interno dell'app se un profilo di riferimento è stato compilato, pianificato o mancante (I263a4, b/246653809) - Aggiunge una nuova trasmissione shell che consente a Macrobenchmark di cancellare completamente i dati del profilo in memoria su disco, da includere 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)
. - È stato aggiunto un codice diagnostico per rilevare i profili di riferimento compressi. I profili di riferimento compressi non possono essere installati da Profile Installer in Macrobenchmarks o in produzione a causa dell'overhead della CPU e devono essere evitati durante la creazione dell'app eseguendo l'aggiornamento a Studio/AGP Electric Eel o alla versione
bundletool
1.13.1
(I86413, b/261998144) - Aggiunti hook per macrobenchmark per acquisire profili e dropper cache, necessari per generare profili di base 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 alle API
- Rimuove il supporto per la gestione di profili compressi. L'apertura e la decompressione portano a una regressione di 10 secondi di utilizzo della CPU durante l'avvio, pertanto è stata aggiunta una diagnostica per rilevare profili di riferimento compressi in modo errato. (I86413, b/261998144)
Versione 1.3.0-alpha03
11 gennaio 2023
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.0-alpha03
. La versione 1.3.0-alpha03 contiene questi commit.
Correzioni di bug
- Abilita la gestione di profili di riferimento compressi o non compressi (Ic61a0)
- Correggi
MacrobenchmarkScope.dropShaderCache()
per non arrestarsi più in modo anomalo correggendo il registry broadcast nel manifest del programma di installazione del profilo (I5c728, b/258619948)
Versione 1.3.0-alpha02
9 novembre 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.3.0-alpha02
. La versione 1.3.0-alpha02 contiene questi commit.
Modifiche alle API
- È stato aggiunto un hook per consentire ai benchmark di rilasciare la cache dello shaker al fine di garantire prestazioni coerenti per gli avvii a freddo, soprattutto in caso di compilazione con profili da iterazioni di warmup. 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 alle API
- È stata aggiunta l'API
ProfileVerifier
per verificare dall'app se un profilo di riferimento è stato compilato, pianificato o mancante (I263a4, b/246653809) - Aggiunge una nuova trasmissione shell che consente a Macrobenchmark di cancellare completamente i dati del profilo in memoria su disco, da includere 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.2
. La versione 1.2.2 contiene questi commit.
Correzioni di bug
- Abilita la gestione di 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à
- Attiva il programma di installazione di profili per S_V2 (API 32) e TIRAMISU (API 33) (b/254900303).
Versione 1.2.0
Versione 1.2.0
27 luglio 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0
. 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 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
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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-beta03
. La versione 1.2.0-beta03 contiene questi commit.
Versione 1.2.0-beta02
18 maggio 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-beta02
. 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-beta01
. 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 di profili 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-alpha02
. 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.2.0-alpha01
. 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 in futuro.
Versione 1.1.0
Versione 1.1.0
9 febbraio 2022
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0
. 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-beta04
. La versione 1.1.0-beta04 contiene questi commit.
Versione 1.1.0-beta03
17 novembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-beta03
. La versione 1.1.0-beta03 contiene questi commit.
Correzioni di bug
- Aggiornamento per supportare Compose 1.1.0-beta03
Versione 1.1.0-beta02
3 novembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-beta02
. 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-beta01
. 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à
- Aggiunto il supporto per il profilo su Android N
Versione 1.1.0-alpha06
29 settembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha06
. La versione 1.1.0-alpha06 contiene questi commit.
Correzioni di bug
- Risolvi i problemi di transcodifica del programma di installazione di profile su N, O e O_MR1. (I12d75)
Versione 1.1.0-alpha05
15 settembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha05
. La versione 1.1.0-alpha05 contiene questi commit.
Correzioni di bug
- È stata corretta la transcodifica del profilo Android Nougat e Android Oreo per gli APK multidex.
Versione 1.1.0-alpha04
1° settembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha04
. La versione 1.1.0-alpha04 contiene questi commit.
Correzioni di bug
- Correggi
ProfileInstaller
per consentire alle app che usano profili di riferimento di eseguire più facilmente MacroBenchmarks 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 del programma di installazione del programma per registrare il PackageInfo.lastUpdatedTime in un file nella directory dei file dell'app e prima di installare il profilo nell'esecuzione successiva. (Ib93d1)
- Regola il formato del profilo sui dispositivi P, Q e R in base 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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.1.0-alpha01
. La versione 1.1.0-alpha01 contiene questi commit.
Correzioni di bug
- È stato corretto il bug che in determinate circostanze attivava la modalità con restrizioni.
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
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.3
. La versione 1.0.3 contiene questi commit.
- Aggiornamento per supportare Compose 1.0.3
Versione 1.0.2
1° settembre 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.2
. La versione 1.0.2 contiene questi commit.
Correzioni di bug
- Transcodifica del profilo aggiunta per dispositivi P, Q, R. Questa modifica significa che 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 porta ART a non essere in grado di elaborare il profilo di origine. Nessuna modifica alle API per sviluppatori.
Versione 1.0.1
4 agosto 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.1
. La versione 1.0.1 contiene questi commit.
Aggiornato per essere compatibile con Compose 1.0.1.
Versione 1.0.0
28 luglio 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.0
. La versione 1.0.0 contiene questi commit.
Funzionalità principali di 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 sul loro funzionamento, consulta le note di rilascio dettagliate all'indirizzo 1.0.0-beta01.
Versione 1.0.0-rc02
14 luglio 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.0-rc02
. La versione 1.0.0-rc02 contiene questi commit.
Versione 1.0.0-rc01
1 luglio 2021
Viene rilasciato androidx.profileinstaller:profileinstaller:1.0.0-rc01
. 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
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.
L'installazione del profilo viene completata con la libreria androidx.startup. Se per qualsiasi motivo si desidera disabilitare l'installazione del profilo, è possibile 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 vengono specificate in un file di testo
baseline-prof.txt
situato 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 nella libreria. La sintassi per queste regole è un soprainsieme del formato del profilo ART leggibile 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>
rappresenta uno o più caratteriH
,S
eP
per indicare se questo metodo deve essere contrassegnato o meno come "A caldo", "Avvio" o "Post avvio".<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 parametri e i tipi restituiti del metodo. Ad esempio, il metodofun isPlaced(): Boolean
suLayoutNode
ha la firmaisPlaced()Z
.Questi pattern possono avere caratteri jolly (
**
,*
e?
) in modo da avere una singola regola che comprende più metodi o classi.
A cosa servono le regole?
Un metodo con il flag
H
indica che si tratta di un metodo "hot" e devono essere compilati 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 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 il costo del 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 migliorare le prestazioni dell'applicazione, 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 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
- Profili creati correttamente che danno priorità correttamente a metodi e classi che si troveranno nel percorso di avvio e con prestazioni critiche produrranno i migliori risultati, tuttavia l'inclusione di troppi metodi o classi nei profili può finire per 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 proprie regole di profilo.