ProfileInstaller

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

Crea un nuovo numero

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 in ProfileInstallReceiver. (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 utilizzando CompilationMode.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 utilizzando CompilationMode.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 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

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 con Macrobenchmarks 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 di androidx.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 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 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 in src/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 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> rappresenta uno o più caratteri H, S e P 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 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 parametri e i tipi restituiti del metodo. Ad esempio, il metodo fun isPlaced(): Boolean su LayoutNode ha la firma isPlaced()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 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

  • 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.