ProfileInstaller

  
Consente alle librerie di precompilare in anticipo le tracce di compilazione da leggere da ART.
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.

Creare un nuovo problema

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 a androidx.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 a ProfileInstaller 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 in ProfileInstallReceiver. (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 utilizzando CompilationMode.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 utilizzando CompilationMode.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 con Macrobenchmarks 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 con Macrobenchmarks 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 di androidx.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 utilizzando CompilationMode.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 directory src/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 utilizza adb 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 caratteri H, S e P 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 classe androidx.compose.runtime.SlotTable avrà un descrittore Landroidx/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 metodo fun isPlaced(): Boolean su LayoutNode ha la firma isPlaced()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 file AndroidManifset.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.