ProfileInstaller
Dernière mise à jour | Version stable | Version finale | Version bêta | Version alpha |
---|---|---|---|---|
4 septembre 2024 | 1.3.1 | 1.4.0-rc01 | - | - |
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.3.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Pour en savoir plus sur les dépendances, consultez Ajouter des dépendances de compilation.
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.
Pour en savoir plus, consultez la documentation sur l'outil Issue Tracker.
Version 1.4
Version 1.4.0-rc01
4 septembre 2024
Publication d'androidx.profileinstaller:profileinstaller:1.4.0-rc01
sans aucune modification par rapport à la dernière version bêta. La version 1.4.0-rc01 contient ces commits.
Version 1.4.0-beta01
21 août 2024
Publication d'androidx.profileinstaller:profileinstaller:1.4.0-beta01
sans aucune modification par rapport à la dernière version alpha. La version 1.4.0-beta01 contient ces commits.
Version 1.4.0-alpha02
7 août 2024
Publication d'androidx.profileinstaller:profileinstaller:1.4.0-alpha02
. La version 1.4.0-alpha02 contient ces commits.
Nouvelles fonctionnalités
- Ajout de la prise en charge de l'API 35 pour le programme d'installation de profil. (6f9f6fa).
Correction de bugs
- Suppression de la description manuelle de l'accès aux nouvelles API de la plate-forme, car cela se fait automatiquement via la modélisation des API lors de l'utilisation de R8 avec AGP 7.3 ou version ultérieure (par exemple, R8 version 3.3) et pour tous les builds utilisant AGP 8.1 ou version ultérieure (par exemple, D8 version 8.1). Les clients qui n'utilisent pas AGP sont invités à passer à la version 8.1 ou ultérieure de D8. Consultez cet article pour en savoir plus. (If6b4c, b/345472586).
Version 1.4.0-alpha01
7 février 2024
Publication d'androidx.profileinstaller:profileinstaller:1.4.0-alpha01
. Liste des commits de la version 1.4.0-alpha01.
Correction de bugs
- Ajout d'un code d'erreur pour l'absence de profil intégré à l'outil de vérification des profils. (Ifb109, b/313928520).
- Correction d'un plantage lors de l'abandon de nuanceurs sur Android U (API 34), ainsi que sur les émulateurs. (I031ca, b/274314544)
- Activation de la prise en charge d'Android U dans le programme d'installation de profils. (Iaf177)
- Correction de l'échec du programme d'installation de profils dans Android U, en raison du fait que le profil actuel n'est pas créé vide lors du démarrage de la procédure. (Ie3899)
- Correction du transcodage par bitmap de la méthode au format de profil
V_015S
. (aosp/2906631) et (aosp/2847740)
Version 1.3
Version 1.3.1
3 mai 2023
Publication d'androidx.profileinstaller:profileinstaller:1.3.1
. Liste des commits de la version 1.3.1
Correction de bugs
- Activation de la prise en charge d'Android U dans le programme d'installation de profils. (Iaf177)
- Correction de l'échec du programme d'installation de profils dans Android U, en raison du fait que le profil actuel n'est pas créé vide lors du démarrage de la procédure. (Ie3899)
Version 1.3.0
22 mars 2023
Publication d'androidx.profileinstaller:profileinstaller:1.3.0
. Liste des commits de la version 1.3.0
Changements importants depuis la version 1.2.0
- Correction d'une
NullPointerException
dansProfileInstallReceiver
. (b/243851384). - Ajout de l'API
ProfileVerifier
pour vérifier depuis l'application si un profil de référence a été compilé, programmé ou 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 deCompilationMode.Partial(warmupIterations)
. - Ajout d'un code de diagnostic pour détecter les profils de référence compressés. Les profils de référence compressés ne peuvent pas être installés par Profileinstaller dans Macrobenchmarks ni en production en raison de la surcharge du processeur. Vous devez les éviter lors de la compilation de votre application en effectuant une mise à jour vers Studio/AGP Electric Eel ou la version
bundletool
1.13.1
. (I86413, b/261998144) - Ajout de hooks pour que le macrobenchmark permette de capturer des profils et de supprimer le cache du nuanceur, qui sont nécessaires pour générer des profils de référence ou des macrobenchmarks sur des appareils non rootés. (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742)
Version 1.3.0-rc01
8 mars 2023
Publication d'androidx.profileinstaller:profileinstaller:1.3.0-rc01
sans modification par rapport à la dernière version bêta. Liste des commits de la version 1.3.0-rc01
Version 1.3.0-beta01
8 février 2023
Publication d'androidx.profileinstaller:profileinstaller:1.3.0-beta01
. Liste des commits de la version 1.3.0-beta01
Modifications apportées à l'API
- Suppression de la gestion des profils compressés : l'ouverture et la décompression génèrent des régressions de 10 ms sur l'utilisation du processeur au démarrage. Nous avons donc ajouté un diagnostic pour identifier les profils de référence compressés de manière incorrecte. (I86413, b/261998144)
Version 1.3.0-alpha03
11 janvier 2023
Publication d'androidx.profileinstaller:profileinstaller:1.3.0-alpha03
. Liste des commits de la version 1.3.0-alpha03
Correction de bugs
- Gestion des profils de référence compressés ou non compressés (Ic61a0)
- Correction du plantage de
MacrobenchmarkScope.dropShaderCache()
grâce à la correction du registre de diffusion dans le fichier manifeste profileinstaller (I5c728, b/258619948)
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 nuanceur, 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 deCompilationMode.Partial(warmupIterations)
. (Ie0a7d, b/250083467, b/253094958)
Version 1.2.2
Version 1.2.2
11 janvier 2023
Publication d'androidx.profileinstaller:profileinstaller:1.2.2
. Liste des commits de la version 1.2.2
Correction de bugs
- Gestion des profils de référence compressés ou non compressés (Ic61a0)
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 avecMacrobenchmarks
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 avecMacrobenchmarks
lorsque vous utilisez des profils de référence. (If2ae5, b/215740637)
Correction 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
Correction 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
Correction 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
Correction 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
Correction 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
Correction de bugs
- Correction de
ProfileInstaller
afin de faciliter l'exécution de macrobenchmarks parCompilationMode.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
Correction 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
Correction 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
Correction 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épertoiresrc/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èresH
,S
etP
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 classeandroidx.compose.runtime.SlotTable
aurait comme descripteurLandroidx/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éthodefun isPlaced(): Boolean
surLayoutNode
aurait pour signatureisPlaced()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 tas 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 fichierAndroidManifset.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.