Android Studio Dolphin | 2021.3.1 (sept. 2022)

Voici les nouvelles fonctionnalités d'Android Studio Dolphin :

Nouveautés dans Compose

Voici les nouvelles fonctionnalités et améliorations de Jetpack Compose dans Android Studio.

Coordination des animations Compose

Si vos animations sont décrites dans un aperçu composable, vous pouvez maintenant utiliser l'aperçu de l'animation pour les inspecter et les coordonner toutes en même temps. Vous pouvez également figer une animation spécifique.

GIF montrant l'inspection avec l'UI de toutes les animations

Annotations d'aperçus multiples Compose

Vous pouvez maintenant définir une classe d'annotation qui inclut plusieurs définitions d'aperçu et utiliser cette nouvelle annotation pour générer ces aperçus simultanément. Utilisez cette nouvelle annotation pour prévisualiser plusieurs appareils, polices et thèmes en même temps, sans avoir à répéter ces définitions pour chaque composable.

UI des annotations d'aperçus multiples

Nombre de recompositions dans Compose dans l'outil d'inspection de la mise en page

Lorsque vous déboguez vos mises en page Compose, il est important de savoir si les composables se recomposent ou non pour comprendre si votre UI est implémentée correctement. Par exemple, si elle se recompose trop souvent, il est possible que votre application fasse plus de travail que nécessaire. En revanche, les composants qui ne se recomposent pas alors que vous vous y attendiez peuvent entraîner des comportements inattendus.

L'outil d'inspection de la mise en page vous permet à présent de voir quand des composables discrets de votre hiérarchie de mise en page sont recomposés ou ignorés. Ces informations s'affichent en direct lorsque vous interagissez avec votre application. Pour commencer, assurez-vous que votre application utilise Compose 1.2.0-alpha03 ou une version ultérieure. Déployez ensuite votre application selon la procédure habituelle.

Nouveau compteur de composition et d'omissions dans l'outil d'inspection de la mise en page

Ouvrez la fenêtre de l'outil d'inspection de la mise en page et connectez-vous au processus de votre application. Dans l'arborescence des composants, vous devriez voir deux nouvelles colonnes apparaître à côté de la hiérarchie de mise en page. La première colonne indique le nombre de compositions pour chaque nœud. Les deuxièmes colonnes affichent le nombre d'omissions pour chaque nœud. Vous pouvez également consulter des informations similaires dans le volet Attributes (Attributs) lorsque vous sélectionnez un composable dans l'arborescence des composants ou l'affichage de la mise en page.

Si vous souhaitez réinitialiser ce compteur, cliquez sur Reset (Réinitialiser) en haut du panneau Component Tree (Arborescence des composants). Réinitialiser le nombre peut vous aider à comprendre les recompositions ou les omissions lors d'une interaction spécifique avec votre application.

Activer le compteur de composition et d'omissions dans l'outil d'inspection de la mise en page

Mise à jour de l'assistant d'association de l'émulateur Wear OS

À partir d'Android Studio Dolphin Canary 3, l'assistant d'association de l'émulateur Wear OS a été amélioré grâce à des fonctionnalités améliorées qui facilitent la gestion et la connexion des émulateurs Wear. Vous pouvez maintenant effectuer les opérations suivantes:

  • Consultez la liste des appareils Wear dans le Gestionnaire d'appareils.
  • Associez plusieurs appareils Wear à un seul téléphone virtuel ou physique.
  • Reconnectez automatiquement les appareils déjà associés lors de leur lancement. Android Studio mémorise et réassocie la dernière paire configurée.

Pour utiliser ces nouvelles fonctionnalités, assurez-vous que les émulateurs de téléphone disposent d'un niveau d'API 30 ou supérieur et que le Google Play Store est installé. Assurez-vous également que vos émulateurs Wear sont dotés du niveau d'API 28 ou supérieur. Pour passer aux dernières images système pour vos appareils émulés, accédez à Tools > SDK Manager (Outils > SDK Manager).

Pour en savoir plus, consultez Utiliser l'assistant d'association de l'émulateur Wear OS.

Mise à jour de la barre d'outils de l'émulateur Wear OS

À partir d'Android Studio Dolphin Canary 2, pour les émulateurs Wear avec le niveau d'API 28 ou supérieur, la barre d'outils de l'émulateur comporte désormais des boutons qui simulent les boutons physiques et les actions courantes sur l'appareil. Les nouveaux boutons sont les suivants: Bouton 1 et Bouton 2 (le bouton 2 n'est disponible qu'à partir du niveau d'API 30 ou supérieur), les boutons de la paume de la main et le bouton d'inclinaison. Voici quelques-unes des actions que vous pouvez effectuer à l'aide des nouveaux boutons de votre émulateur Wear:

  • Pour mettre votre appareil en mode Veille, cliquez sur le bouton de la paume de la main.
  • Pour revenir à l'écran précédent sur lequel il se trouvait avant le mode Veille, cliquez sur le bouton "Incliner".

Pour en savoir plus, consultez Effectuer des actions courantes dans l'émulateur.

Émulateur Wear avec boutons spécifiques à Wear

Nouvelles configurations d'exécution Wear OS

De nouvelles configurations d'exécution ont été ajoutées pour exécuter et déboguer rapidement les surfaces spécifiques à Wear OS, telles que les cadrans, les cartes et les complications. Vous pouvez créer ces configurations à partir de la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage) lorsque vous exécutez votre application.

Pour en savoir plus, consultez la section Configurations d'exécution/de débogage Wear OS.

Nouvelles configurations de lancement Wear OS

Nouvelle Logcat

Logcat a été mis à jour pour faciliter l'analyse, l'interrogation et le suivi des journaux.

Nouvel outil de mise en forme

Logcat met désormais en forme les journaux pour faciliter l'analyse des informations utiles, telles que les balises et les messages, et pour identifier différents types de journaux, tels que les avertissements et les erreurs.

Nouvelle mise en forme des journaux dans Logcat

Créer plusieurs fenêtres Logcat

Vous pouvez désormais créer plusieurs onglets dans Logcat afin de basculer facilement entre différents appareils ou requêtes. Un clic droit sur un onglet vous permet de le renommer. Vous pouvez cliquer et faire glisser pour réorganiser les onglets.

En outre, pour vous aider à comparer plus facilement deux ensembles de journaux, vous pouvez maintenant diviser la vue dans un onglet en effectuant un clic droit dessus et en sélectionnant Split Right (Diviser à droite) ou Split Down (Diviser en bas). Pour fermer une division, effectuez un clic droit et sélectionnez Close (Fermer). Chaque division vous permet de définir sa propre connexion d'appareil, ses propres options d'affichage et sa propre requête.

Créer plusieurs fenêtres Logcat à l'aide de divisions

Basculer entre des préréglages d'affichage

Logcat vous permet désormais de basculer rapidement entre différents modes d'affichage (Standard, Compact et Personnalisé) en cliquant sur Sélecteur de mode d'affichage. Chaque mode d'affichage fournit un paramètre par défaut différent pour afficher plus ou moins d'informations, telles que les horodatages, les balises et les ID de processus (PID). Vous pouvez également personnaliser chacun de ces modes d'affichage par défaut, ainsi qu'un mode d'affichage personnalisé, en sélectionnant Modify View (Modifier la vue).

Capture d'écran du passage d'un mode d'affichage à un autre

Dans la version précédente de Logcat, vous aviez la possibilité d'utiliser la recherche de chaînes (compatible avec les expressions régulières) ou de créer un filtre en remplissant différents champs à l'aide de l'UI Logcat. La première option a rendu la recherche plus complexe, et la deuxième option a rendu le partage et la configuration des requêtes plus difficiles. Nous avons désormais simplifié l'expérience en introduisant des recherches par clé-valeur directement depuis le champ de requête principal.

Capture d'écran de la nouvelle syntaxe de requête avec saisie semi-automatique

Ce nouveau système de requêtes vous offre la précision de vos requêtes, sans dépendre d'expressions régulières, et permet de rappeler des requêtes passées à partir de l'historique et de les partager avec d'autres utilisateurs. En outre, vous avez toujours la possibilité d'utiliser des expressions régulières et d'exclure les journaux en fonction des clés-valeurs. Voici quelques exemples d'utilisation du nouveau système de requêtes, mais vous pouvez également commencer à saisir du texte dans le champ de requête pour afficher des suggestions:

  • PID pour le projet d'application local: package:mine
  • Valeurs spécifiques :
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Excluez une valeur spécifique en faisant précéder la clé de - :
    • -tag:<exclude-tag>
  • Utilisez des expressions régulières avec une clé donnée en plaçant un ~ après la clé :
    • tag~:<regular-expression-tag>
    • Combiner avec la balise d'exclusion: -tag~:<exclude-regular-expression-tag>

Vous pouvez également afficher un historique des requêtes en cliquant sur Sélecteur d&#39;historique des requêtes dans le champ de requête et en les sélectionnant dans la liste déroulante. Pour ajouter une requête aux favoris et la placer en tête de liste sur tous vos projets Studio, cliquez sur Requête aux favoris à la fin du champ de requête.

Capture d&#39;écran de l&#39;historique des requêtes avec favoris

Suivre les journaux des plantages/redémarrages d'application

Le nouveau Logcat facilite désormais le suivi des journaux de votre application lors des plantages et des redémarrages d'application, afin que vous ne manquiez pas de journaux importants. Lorsqu'un Logcat remarque que le processus de votre application s'est arrêté et a redémarré, un message tel que PROCESS ENDED et PROCESS STARTED s'affiche dans la sortie, comme indiqué ci-dessous:

Capture d&#39;écran des redémarrages de processus dans logcat

De plus, le redémarrage de Logcat conserve la configuration de votre session, comme les divisions d'onglet, les filtres et les options d'affichage, pour que vous puissiez poursuivre facilement votre session.

Appareils gérés par Gradle

Afin d'améliorer la cohérence, les performances et la fiabilité lorsque vous utilisez des appareils virtuels Android pour vos tests d'instrumentation automatisés, nous lançons les appareils gérés par Gradle. Cette fonctionnalité, disponible à partir du niveau d'API 27, vous permet de configurer des appareils de test virtuels dans les fichiers Gradle de votre projet. Le système de compilation utilise les configurations pour gérer entièrement ces appareils lors de l'exécution de vos tests automatisés, c'est-à-dire pour les créer, les déployer et les supprimer.

Grâce à cette fonctionnalité, Gradle a accès aux tests que vous exécutez, mais aussi au cycle de vie des appareils, ce qui améliore la qualité de votre expérience de test, à plusieurs niveaux :

  • Gradle gère les problèmes liés aux appareils pour assurer l'exécution de vos tests.
  • Utilise les instantanés de l'émulateur pour améliorer le temps de démarrage et l'utilisation de la mémoire des appareils, et pour restaurer l'état des appareils entre les tests.
  • Met en cache les résultats des tests et ne réexécute que les tests susceptibles de fournir des résultats différents
  • Fournit un environnement cohérent pour l'exécution de vos tests, qu'il s'agisse d'exécutions en local ou à distance

De plus, les appareils gérés par Gradle introduisent un nouveau type d'appareil avec émulateur, les appareils de test automatisés, qui sont optimisés pour améliorer les performances lors de l'exécution de vos tests d'instrumentation. En plus de la compatibilité avec la segmentation des tests, vous pouvez tester la division de votre suite de tests sur plusieurs instances ATD afin de réduire la durée d'exécution globale des tests. Pour en savoir plus sur les appareils gérés par Gradle et les fonctionnalités associées, consultez Adapter vos tests grâce aux appareils gérés par Gradle.

Prise en charge de R8 avec l'utilisation de fichiers de mappage basés sur les décalages d'instructions DEX

Lors de l'optimisation des informations de ligne, R8 peut désormais encoder les informations dans les objets d'informations de débogage partagés avec des tables de lignes en fonction des décalages d'instruction. Cela réduit considérablement la surcharge des informations de ligne. Il en résulte que les lignes des méthodes ne sont plus consécutives, mais peuvent sauter par intervalles en fonction de la taille des instructions. Notez que certains outils ne prennent pas en compte cet encodage partagé.

De plus, les VM Android à partir de O (niveau d'API 26) acceptent l'impression de décalages d'instructions dans les traces de pile si la méthode ne contient pas d'informations sur le numéro de ligne. Lors de la compilation avec minSdk 26 ou version ultérieure, et sans informations de fichier source, R8 supprime complètement les informations de numéro de ligne.

Les lambdas sans état ne sont plus désucrés en tant que singletons

Les lambdas sans état ne sont plus alloués en tant que singletons lors du désucrage. La représentation sous forme de singletons ajoute une surcharge de code due à l'ajout de l'initialiseur de champ et de classe, ainsi qu'une surcharge de démarrage due à l'initialisation des classes statiques. Les lambdas sans état sont désormais alloués aux sites d'utilisation de la même manière que les lambdas avec état (lambdas avec captures).

R8 évite le ralentissement de la validation dans les environnements d'exécution Android

Pour éliminer les problèmes de performances dans les environnements d'exécution Android (Dalvik et ART), R8 (et non D8) introduit désormais des bouchons de bibliothèque et décrit les appels aux méthodes de bibliothèque pour les classes et les méthodes de bibliothèque qui peuvent ne pas exister au moment de l'exécution. Cela élimine de nombreux problèmes de vérification et améliore les performances d'exécution. Cette fonctionnalité est toujours activée.

Prise en charge des API JDK-11 avec désucrage d'API Java 8 ou version ultérieure

Lorsque vous utilisez la dépendance coreLibraryDesugaring, une bibliothèque d'implémentation basée sur JDK-11 est désormais compatible. Pour en savoir plus, consultez le desugar_jdk_libs journal des modifications.

Versions de correctif

Voici une liste des versions de correctif dans Android Studio Dolphin.

Android Studio Dolphin | 2021.3.1 Correctif 1 (octobre 2022)

Avec la version de correctif 1, Android Studio Dolphin est désormais compatible avec le plug-in Kotlin 1.7.20. Cette mise à jour mineure inclut également les corrections de bugs suivantes :

Problèmes résolus
Plug-in Android Gradle
L'exécution de tests Android instrumentés via Gradle ne parvient pas à appliquer correctement le désucrage
AGP 7.3.0 bloque la synchronisation de Gradle pour les projets de plate-forme Gradle.
Dexer (D8)
Ajoutez une API publique pour la résolution de conflit lors de la fusion de DEX (pour que Bazel autorise les classes dupliquées).
Importation/Synchronisation
Échec de l'importation du projet Gradle après la mise à niveau à partir du correctif 2 de Chipmunk (2021.2.1).
Ressources
NPE dans AarResourceRepositoryCache.createCachingData (AS Dolphin+)
Réducteur de code (R8)
Les métadonnées Kotlin ne sont pas copiées lors de la substitution de types de champs.
Conversion inattendue de type imprécis : TOP (tout).
Gradle 7.3.0 provoque une erreur de compilation d'APK com.android.tools.r8.CompilationFailedException
Élimination des constructeurs par défaut inactifs en mode compat
Conflit avec JetBrains Markdown.
Prise en charge de ThreadLocal.withInitial(java.util.function.Vendor).
AGP 7.3 génère un fichier dex pour les classes comportant un constructeur défectueux.
Tentative inattendue de déterminer si un code non CF doit être désucré
Erreur de validation ktor
Valeur non définie détectée lors de la compilation générée lors du traitement d'okio-jvm 3.2.0
Échec de compilation de la classe d'intégration de l'objet avec l'instance indirecte d'utilisateurs
java.lang.IllegalAccessError avec R8 3.3.75