Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

ProfileInstaller

  
Permet aux bibliothèques de préremplir les traces de compilation à l'avance afin qu'elles puissent être lues par ART.
Dernière mise à jour Version stable Version finale Version bêta Version alpha
7 décembre 2022 1.2.1 - - 1.3.0-alpha02

Déclarer des dépendances

Pour ajouter une dépendance à ProfileInstaller, vous devez ajouter le dépôt Maven de Google à votre projet. Pour en savoir plus, consultez la section Dépôt Maven de Google.

Ajoutez les dépendances correspondant aux artefacts dont vous avez besoin dans le fichier build.gradle de votre application ou de votre module :

Groovy

dependencies {
    implementation "androidx.profileinstaller:profileinstaller:1.2.2"
}

Kotlin

dependencies {
    implementation("androidx.profileinstaller:profileinstaller:1.2.2")
}

Pour en savoir plus sur les dépendances, consultez la page Ajouter des dépendances de build.

Commentaires

Vos commentaires nous aident à améliorer Jetpack. N'hésitez pas à nous contacter si vous découvrez de nouveaux problèmes ou si vous avez des idées pour améliorer cette bibliothèque. Veuillez consulter les problèmes existants de cette bibliothèque avant d'en signaler un nouveau. Vous pouvez ajouter votre vote à un problème existant en cliquant sur le bouton en forme d'étoile.

Signaler un problème

Pour en savoir plus, consultez les documents sur l'outil Issue Tracker.

Version 1.3

Version 1.3.0-alpha02

9 novembre 2022

Publication d'androidx.profileinstaller:profileinstaller:1.3.0-alpha02. Liste des commits de la version 1.3.0-alpha02.

Modifications apportées à l'API

  • Ajout d'un hook pour que les benchmarks suppriment le cache du nuancueur, afin d'assurer des performances constantes pour les démarrages à froid, en particulier lors de la compilation avec des profils à partir d'itérations de préchauffage. Cette mise à jour est nécessaire pour mesurer les démarrages à froid avec benchmark-macro-junit4:1.2.0-alpha05 ou une version ultérieure. Pour en savoir plus sur les modifications apportées à l'API de la bibliothèque Benchmark, veuillez consulter la page Benchmark 1.2.0-alpha07. (Ia5171, b/231455742)

Version 1.3.0-alpha01

24 octobre 2022

Publication d'androidx.profileinstaller:profileinstaller:1.3.0-alpha01. Liste des commits de la version 1.3.0-alpha01.

Modifications apportées à l'API

  • Ajout de l'API ProfileVerifier pour vérifier depuis l'application si un profil de référence a été compilé, s'il a été planifié ou s'il est manquant. (I263a4, b/246653809)
  • Ajout d'une annonce shell qui permet à Macrobenchmark de vider complètement les données de profil en mémoire sur le disque, afin de les inclure dans la génération de profils de référence. Cette mise à jour est nécessaire pour utiliser la bibliothèque macrobenchmark afin de capturer des profils de référence avec BaselineProfileRule et évaluer les performances des profils à l'aide de CompilationMode.Partial(warmupIterations). (Ie0a7d, b/250083467, b/253094958)

Version 1.2.1

Version 1.2.1

7 décembre 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.1. Liste des commits de la version 1.2.1

Nouvelles fonctionnalités

  • Activation de profileinstaller pour S_V2 (API 32) et TIRAMISU (API 33). (b/254900303)

Version 1.2.0

Version 1.2.0

27 juillet 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0. Liste des commits de la version 1.2.0

Changements importants depuis la version 1.1.0

  • Prise en charge du format de profil ART utilisé sous Android 12 et les versions ultérieures.
  • Ajout de nouvelles API dans ProfileInstallReceiver pour obtenir des résultats plus cohérents avec Macrobenchmarks lorsque vous utilisez des profils de référence.

Version 1.2.0-rc01

15 juin 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-rc01. Liste des commits de la version 1.2.0-rc01.

  • Cette version est identique à la version androidx.profileinstaller:profileinstaller:1.2.0-beta03.

Version 1.2.0-beta03

1er juin 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-beta03. Liste des commits de la version 1.2.0-beta03.

Version 1.2.0-beta02

18 mai 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-beta02. Liste des commits de la version 1.2.0-beta02.

  • Aucune modification nécessaire pour prendre en charge les versions 1.2.0-beta02 de Compose.

Version 1.2.0-beta01

11 mai 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-beta01. Liste des commits de la version 1.2.0-beta01

Modifications apportées à l'API

  • Ajout de nouvelles API dans ProfileInstallReceiver pour obtenir des résultats plus cohérents avec Macrobenchmarks lorsque vous utilisez des profils de référence. (If2ae5, b/215740637)

Corrections de bugs

  • Le programme d'installation de profils génère un message utile lorsque vous essayez d'utiliser le format de métadonnées V_001 sur Android 12 ou une version ultérieure (aosp/1978526, b/217502387).
  • Le programme d'installation de profil utilise désormais la version 1.1.1 d'androidx.startup (aosp/2077099, b/229828376).

Version 1.2.0-alpha02

26 janvier 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-alpha02. Liste des commits de la version 1.2.0-alpha02.

Cette version est identique à la version 1.2.0-alpha01.

Version 1.2.0-alpha01

12 janvier 2022

Publication d'androidx.profileinstaller:profileinstaller:1.2.0-alpha01. Liste des commits de la version 1.2.0-alpha01

Nouvelles fonctionnalités

  • Prise en charge du format de profil ART utilisé sous Android 12 et les versions ultérieures.

Version 1.1.0

Version 1.1.0

9 février 2022

Publication d'androidx.profileinstaller:profileinstaller:1.1.0. Liste des commits de la version 1.1.0

Version 1.1.0-rc01

15 décembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-rc01 sans aucune mise à jour par rapport à la version 1.1.0-beta04. Liste des commits de la version 1.1.0-rc01.

Version 1.1.0-beta04

1er décembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-beta04. Liste des commits de la version 1.1.0-beta04.

Version 1.1.0-beta03

17 novembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-beta03. Liste des commits de la version 1.1.0-beta03

Corrections de bugs

  • Mise à jour pour prendre en charge la version 1.1.0-beta03 de Compose.

Version 1.1.0-beta02

3 novembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-beta02. Liste des commits de la version 1.1.0-beta02

Corrections de bugs

  • Mise à jour pour prendre en charge la version 1.1.0-beta02 de Compose.

Version 1.1.0-beta01

27 octobre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-beta01. Liste des commits de la version 1.1.0-beta01

  • Aucune modification depuis la version 1.1.0-alpha07.

Version 1.1.0-alpha07

13 octobre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha07. Liste des commits de la version 1.1.0-alpha07.

Nouvelles fonctionnalités

  • Prise en charge de profm sur Android N.

Version 1.1.0-alpha06

29 septembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha06. Liste des commits de la version 1.1.0-alpha06.

Corrections de bugs

  • Correction des problèmes de transcodage de profileinstaller sur N, O et O_MR1 (I12d75).

Version 1.1.0-alpha05

15 septembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha05. Liste des commits de la version 1.1.0-alpha05.

Corrections de bugs

  • Correction du transcodage de profil Android Nougat et Android Oreo pour les APK multidex.

Version 1.1.0-alpha04

1er septembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha04. Liste des commits de la version 1.1.0-alpha04.

Corrections de bugs

  • Correction de ProfileInstaller afin de faciliter l'exécution de macrobenchmarks par CompilationMode.BaselineProfile pour les applications utilisant des profils de référence (I42657, b/196074999).

Version 1.1.0-alpha03

18 août 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha03. Liste des commits de la version 1.1.0-alpha03

Corrections de bugs

  • Modification d'un comportement d'omission de profileinstaller pour consigner PackageInfo.lastUpdatedTime dans un fichier du répertoire de fichiers de l'application et le comparer avant d'installer le profil lors de l'exécution suivante (Ib93d1).
  • Ajustement du format de profil sur les appareils P, Q et R pour qu'ils soient conformes aux exigences d'ART (I84e89).

Version 1.1.0-alpha02

4 août 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha02. Liste des commits de la version 1.1.0-alpha02.

Mise à jour pour assurer la compatibilité avec la version 1.1.0-alpha01 de Compose.

Version 1.1.0-alpha01

21 juillet 2021

Publication d'androidx.profileinstaller:profileinstaller:1.1.0-alpha01. Liste des commits de la version 1.1.0-alpha01

Corrections de bugs

  • Correction d'un bug qui déclenchait un mode strict dans certaines circonstances.

Version 1.0

Version 1.0.4

13 octobre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.4. Liste des commits de la version 1.0.4.

  • Mise à jour pour prendre en charge la version 1.0.4 de Compose.

Version 1.0.3

29 septembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.3. Liste des commits de la version 1.0.3.

  • Mise à jour pour prendre en charge la version 1.0.3 de Compose.

Version 1.0.2

1er septembre 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.2. Liste des commits de la version 1.0.2.

Corrections de bugs

  • Ajout du transcodage de profil pour les appareils P, Q et R. Cela signifie que ces appareils transcodent le profil pour que le profil écrit soit toujours utilisable par ART. Auparavant, le transcodage était ignoré sur ces plates-formes, ce qui empêchait parfois ART de traiter le profil source. Aucune modification n'a été apportée aux API de développement.

Version 1.0.1

4 août 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.1. Liste des commits de la version 1.0.1.

Mise à jour pour assurer la compatibilité avec la version 1.0.1 de Compose.

Version 1.0.0

28 juillet 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.0. Liste des commits de la version 1.0.0.

Principales fonctionnalités de la version 1.0.0

Le programme d'installation de profils est une nouvelle bibliothèque qui permet aux bibliothèques et aux applications de définir des "règles de profil" et de regrouper les informations de profil ART dans un APK. Cette bibliothèque installera ces profils après le lancement de l'application. Vous pouvez l'utiliser pour améliorer les performances de votre application.

Pour en savoir plus sur ces règles de profil et leur fonctionnement, veuillez consulter les notes détaillées de la version 1.0.0-beta01.

Version 1.0.0-rc02

14 juillet 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.0-rc02. Liste des commits de la version 1.0.0-rc02.

Version 1.0.0-rc01

1er juillet 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.0-rc01. Liste des commits de la version 1.0.0-rc01.

Il s'agit d'une version finale sans modification par rapport à la version bêta.

Version 1.0.0-beta01

16 juin 2021

Publication d'androidx.profileinstaller:profileinstaller:1.0.0-beta01. Liste des commits de la version 1.0.0-beta01.

Finalité de la bibliothèque

Le programme d'installation de profils est une nouvelle bibliothèque qui permet aux bibliothèques et aux applications de définir des "règles de profil" et de regrouper les informations de profil ART dans un APK. Cette bibliothèque installera ces profils après le lancement de l'application. Vous pouvez l'utiliser pour améliorer les performances de votre application.

Cette installation de profil est effectuée à l'aide de la bibliothèque androidx.startup. Si, pour une raison quelconque, vous souhaitez désactiver l'installation du profil, vous pouvez modifier le fichier manifeste afin de le supprimer :


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

Cela est particulièrement utile si votre application présente des exigences de démarrage complexes et que vous souhaitez déclencher l'installation du profil manuellement à l'aide de l'API ProfileInstaller.writeProfile.

Que sont les règles de profil ?

  • Les règles de profil d'une bibliothèque sont spécifiées dans un fichier texte baseline-prof.txt, situé dans le répertoire src/main ou un répertoire équivalent. Le fichier spécifie une règle par ligne. Dans ce cas, une règle correspond à un modèle mis en correspondance avec des méthodes ou des classes de la bibliothèque. La syntaxe de ces règles correspond à un sur-ensemble du format de profil ART intelligible, utilisé conjointement à adb shell profman --dump-classes-and-methods .... Ces règles prennent l'une des deux formes suivantes pour cibler des méthodes ou des classes.

  • Une règle de méthode adoptera le format suivant :

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Une règle de classe adoptera le format suivant :

    <CLASS_DESCRIPTOR>
    
  • Dans le cas présent, <FLAGS> désigne un ou plusieurs des caractères H, S et P et indique si cette méthode doit être signalée comme "Hot", "Startup" ou "Post Startup".

  • <CLASS_DESCRIPTOR> est le descripteur de la classe à laquelle appartient la méthode ciblée. Par exemple, la classe androidx.compose.runtime.SlotTable aurait comme descripteur Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> est la signature de la méthode, et inclut le nom, les types de paramètres et les types renvoyés de la méthode. Par exemple, la méthode fun isPlaced(): Boolean sur LayoutNode aurait pour signature isPlaced()Z.

  • Ces modèles peuvent comporter des caractères génériques (**, * et ?) pour qu'une même règle affecte plusieurs méthodes ou classes.

Quel effet ont ces règles ?

  • Une méthode associée à l'indicateur H signale qu'il s'agit d'une méthode "hot" qui doit être compilée à l'avance.

  • Une méthode associée à l'indicateur S signale qu'il s'agit d'une méthode appelée au démarrage, qui doit être compilée à l'avance pour éviter les coûts de compilation et d'interprétation de la méthode lors du démarrage.

  • Une méthode associée à l'indicateur P signale qu'il s'agit d'une méthode appelée après le démarrage.

  • La présence d'une classe dans ce fichier indique qu'elle est utilisée au démarrage et doit être préallouée dans le segment de mémoire pour éviter son coût de chargement.

Fonctionnement

  • Les bibliothèques peuvent définir ces règles, qui seront packagées dans des artefacts AAR. Lorsqu'un APK comprenant ces artefacts est créé, ces règles sont fusionnées puis utilisées pour créer un profil ART binaire compact spécifique à l'APK. ART peut ensuite exploiter ce profil lorsque l'APK est installé sur des appareils, afin de compiler à l'avance un sous-ensemble spécifique de l'application, ce qui permet d'améliorer ses performances, notamment lors de la première exécution. Notez que cette opération n'a aucune incidence sur les applications débogables.

  • Les fichiers de règles doivent être nommés baseline-prof.txt et placés dans le répertoire racine de votre ensemble de sources principal (il doit s'agir d'un fichier partageant le même emplacement que votre fichier AndroidManifset.xml).

  • Actuellement, ces fichiers ne sont utilisés que si vous utilisez le plug-in Android Gradle 7.0 (ou version ultérieure) et qu'ils sont actuellement activés avec un indicateur dans votre gradle.properties :

    # Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs
    android.experimental.enableArtProfiles=true
    

Trouver le bon équilibre

  • Des profils correctement conçus, qui donnent la priorité aux méthodes et aux classes du chemin de démarrage et qui permettent d'améliorer les performances vous offriront de meilleurs résultats. Toutefois, inclure trop de méthodes ou de classes dans les profils peut avoir un effet négatif net en termes de consommation de mémoire et d'utilisation du disque. Nous vous recommandons donc de procéder avec précaution si vous définissez vos propres règles de profil.