Android Studio 3.1 (mars 2018)

Android Studio 3.1.0 est une version majeure qui comprend plusieurs nouvelles fonctionnalités et améliorations.

3.1.4 (août 2018)

Cette mise à jour d'Android Studio 3.1 inclut les modifications et correctifs suivants :

  • La version Kotlin intégrée est maintenant la version 1.2.50.
  • Les nouveaux projets sont créés avec kotlin-stdlib-jdk* artifacts plutôt qu'avec des artefacts kotlin-stdlib-jre*, qui sont obsolètes.
  • L'analyse R8 des règles ProGuard a été améliorée.
  • Les bugs suivants ont été corrigés :
    • Les tentatives d'exécution de la classe principale Kotlin échouaient avec l'erreur suivante : "Error: Could not find or load main class..."
    • R8 entrait dans une boucle infinie lors de l'exécution de certaines optimisations.
    • Lorsque vous utilisiez la commande Rerun failed tests (Relancer les tests ayant échoué) dans la fenêtre Run (Exécuter), le message "No tests were found" (Aucun test n'a été trouvé) était parfois renvoyé à tort.
    • D8 ne gérait pas correctement les instances invoke-virtual, provoquant un plantage avec l'erreur VerifyError: invoke-super/virtual can't be used on private method.
    • Le compilateur de liaison de données dépendait d'une ancienne version de com.android.tools:annotations. Le compilateur utilise à présent les annotations d'outils du projet de base lorsqu'elles sont disponibles.
    • Android Studio plantait pendant les transitions de fragments lors de l'utilisation de profileurs.
    • Le débogueur plantait lors du débogage d'une mise en page avec une zone de texte.
    • D8 ne parvenait pas à lire certains fichiers ZIP contenant des caractères spéciaux.

3.1.3 (juin 2018)

Cette mise à jour d'Android Studio 3.1 corrige les bugs suivants :

  • En raison de fuites de mémoire, Android Studio devenait lent et cessait de répondre après l'utilisation de l'éditeur de mise en page. Cette mise à jour inclut des correctifs pour la plupart de ces problèmes. Nous prévoyons de publier bientôt une autre mise à jour pour corriger les fuites de mémoire supplémentaires.
  • Certaines applications compilées avec D8 plantaient sur certaines tablettes Verizon Ellipsis.
  • L'installation d'applications compilées avec D8 échouait avec l'erreur INSTALL_FAILED_DEXOPT sur les appareils équipés d'Android 5.0 ou 5.1 (niveau d'API 21 ou 22).
  • Certaines applications qui utilisaient la bibliothèque OkHttp et étaient compilées avec D8 plantaient sur les appareils équipés d'Android 4.4 (niveau d'API 19).
  • Le démarrage d'Android Studio échouait parfois avec une ProcessCanceledException lors de l'initialisation de la classe pour com.intellij.psi.jsp.JspElementType.

3.1.2 (avril 2018)

Cette mise à jour d'Android Studio 3.1 corrige les bugs suivants :

  • Dans certains cas, Android Studio se bloquait indéfiniment pendant la fermeture.
  • Les builds configurés avec des ensembles de sources échouaient avec le message suivant lorsque l'exécution instantanée était activée :

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Lorsque l'exécution instantanée était activée, les compilations de nouveaux projets Kotlin échouaient lorsqu'elles étaient déclenchées par la commande Run (Exécuter).
  • Lors de la modification du fichier build.gradle, il y avait parfois un retard important entre la saisie d'un caractère et son affichage à l'écran.
  • Des échecs de compilation se produisaient lors de la conversion au format .dex dans certains projets comportant un grand nombre de modules ou de dépendances externes, avec le message d'erreur suivant :

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Le calcul de la liste DEX principale D8 ne prenait pas en compte certains appels réfléchis.

Cette mise à jour comprend également des modifications qui permettent, dans certains cas, d'exécuter beaucoup plus rapidement des vérifications lint à partir de Gradle.

3.1.1 (avril 2018)

Cette mise à jour d'Android Studio 3.1 corrige les bugs suivants :

  • Dans certains cas, lorsqu'un projet créé dans Android Studio 3.0 était ouvert pour la première fois dans Android Studio 3.1, la tâche de création compatible avec Gradle était supprimée de la section Before launch (Avant le lancement) de la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage). Résultat : les projets n'étaient compilés lorsque l'utilisateur cliquait sur le bouton Run (Exécuter) ou Debug (Déboguer), ce qui entraînait des échecs, tels que le déploiement d'APK incorrects et de plantages lors de l'exécution instantanée.

    Pour résoudre ce problème, Android Studio 3.1.1 ajoute la tâche de création compatible avec Gradle à la configuration d'exécution pour les projets qui ne comportent pas cette entrée. Cette modification se produit après la première synchronisation de Gradle lors du chargement du projet.

  • Le débogueur plantait lors du débogage d'une mise en page avec une zone de texte si le profilage avancé était activé.
  • Android Studio se figeait lorsque vous cliquiez sur Build Variants (Variantes de compilation).
  • Les fichiers AAR (archive Android) étaient extraits deux fois : une fois lors du processus de synchronisation Gradle et une fois pendant le processus de compilation Gradle.
  • Il manquait des éléments dans certains drawables vectoriels importés à partir de fichiers SVG.
  • L'avertissement concernant l'abandon de la configuration de dépendance compile a été mis à jour avec de meilleurs conseils concernant les configurations implementation et api. Pour en savoir plus sur la migration sans utiliser la configuration compile, consultez la documentation sur les nouvelles configurations de dépendances.

Codage/IDE

IntelliJ 2017.3.3

L'IDE principal d'Android Studio a été mis à jour avec les améliorations d'IntelliJ IDEA via la version 2019.3.3. Les améliorations incluent une meilleure analyse du flux de contrôle pour les collections et les chaînes, une meilleure inférence de possibilité de valeur nulle, de nouvelles corrections rapides, et bien plus encore.

Pour en savoir plus, consultez les notes de version JetBrains pour les versions 2017.2 et 2017.3 d'IntelliJ IDEA, ainsi que les notes de version JetBrains concernant les mises à jour de corrections de bugs.

Améliorations de la modification du langage SQL avec Room

Lorsque vous utilisez la bibliothèque de base de données Room, vous pouvez bénéficier de plusieurs améliorations apportées à la modification du langage SQL :

  • La saisie du code dans une Query comprend les tables SQL (entités), les colonnes, les paramètres de requête, les alias, les jointures, les sous-requêtes et les clauses WITH.
  • La mise en surbrillance de la syntaxe SQL est maintenant possible.
  • Vous pouvez effectuer un clic droit sur un nom de table dans SQL et la renommer, ce qui réécrit également le code Java ou Kotlin correspondant (par exemple, le type renvoyé de la requête). Le changement de nom fonctionne également dans l'autre sens. En d'autres termes, renommer une classe ou un champ Java réécrit le code SQL correspondant.
  • Les utilisations SQL sont affichées lorsque vous cliquez sur Trouver les utilisations (effectuez un clic droit et sélectionnez Trouver les utilisations dans le menu contextuel).
  • Pour accéder à la déclaration d'une entité SQL dans le code Java ou Kotlin, vous pouvez maintenir la touche Ctrl (Commande sur Mac) enfoncée tout en cliquant sur l'entité.

Pour en savoir plus sur l'utilisation de SQL avec Room, consultez Enregistrer des données dans une base de données locale à l'aide de Room.

Mises à jour de la liaison de données

Cette mise à jour inclut plusieurs améliorations pour la liaison de données :

  • Vous pouvez maintenant utiliser un objet LiveData comme champ observable dans les expressions de liaison de données. La classe ViewDataBinding inclut à présent une nouvelle méthode setLifecycle() que vous utilisez pour observer des objets LiveData.

  • La classe ObservableField peut désormais accepter d'autres objets Observable dans son constructeur.

  • Vous pouvez prévisualiser un nouveau compilateur incrémentiel pour vos classes de liaison de données. Pour en savoir plus sur ce nouveau compilateur et obtenir des instructions d'activation, consultez Data Binding Compiler V2.

    Voici les avantages du nouveau compilateur :

    • Les classes ViewBinding sont générées par le plug-in Android pour Gradle avant le compilateur Java.
    • Les bibliothèques conservent leurs classes de liaison générées lorsque l'application est compilée, au lieu d'être régénérées à chaque fois. Cela peut améliorer considérablement les performances des projets multimodules.

Compilateur et Gradle

D8 est le compilateur DEX par défaut

Le compilateur D8 est maintenant utilisé par défaut pour générer le bytecode DEX.

Ce nouveau compilateur DEX apporte de nombreux avantages. En voici quelques-uns :

  • Conversion plus rapide au format .dex
  • Utilisation de mémoire réduite
  • Génération de code améliorée (meilleure allocation de registre, tables de chaînes plus intelligentes)
  • Meilleure expérience de débogage lors de l'exécution du code

Vous n'avez pas besoin de modifier votre code ni votre workflow de développement pour bénéficier de ces avantages, sauf si vous avez précédemment désactivé manuellement le compilateur D8.

Si vous définissez android.enableD8 sur false dans gradle.properties, supprimez cet indicateur ou définissez-le sur true :

        android.enableD8=true
      

Pour en savoir plus, consultez Nouveau compilateur DEX.

Désucrage incrémentiel

Pour les projets qui utilisent les fonctionnalités du langage Java 8, le désucrage incrémentiel est activé par défaut, ce qui peut améliorer les durées de compilation.

Le désucrage convertit le sucre syntaxique dans un format que le compilateur peut traiter plus efficacement.

Vous pouvez désactiver le désucrage incrémentiel en indiquant ce qui suit dans le fichier gradle.properties de votre projet :

        android.enableIncrementalDesugaring=false
      

Fenêtre de sortie simplifiée

Gradle Console (Console Gradle) a été remplacée par la fenêtre Build (Compilation), qui comporte les onglets Sync (Synchronisation) et Build.

Pour savoir comment utiliser la nouvelle fenêtre Build simplifiée, consultez Surveiller le processus de compilation.

Mises à jour groupées et simultanéité d'indexation

Les processus de synchronisation Gradle et d'indexation IDE sont à présent beaucoup plus efficaces, ce qui réduit le temps perdu sur de nombreuses opérations d'indexation redondantes.

C++ et LLDB

Nous avons amélioré la qualité et les performances des phases de codage, de synchronisation, de compilation et de débogage du développement C++. Voici les améliorations apportées :

  • Si vous travaillez sur des projets C++ de grande envergure, vous devriez constater une réduction significative du temps consacré à la compilation de symboles. La durée de synchronisation est aussi considérablement réduite pour les projets de grande envergure.

  • Les performances de compilation et de synchronisation avec CMake ont été améliorées grâce à une réutilisation plus agressive des résultats mis en cache.

  • L'ajout de formateurs ("impression élégante") pour un plus grand nombre de structures de données C++ facilite la lecture de la sortie LLDB.

  • Désormais, LLDB ne fonctionne qu'avec Android 4.1 (niveau d'API 16) et versions ultérieures.

Remarque : Le débogage natif avec Android Studio 3.0 ou version ultérieure ne fonctionne pas sur les systèmes Windows 32 bits. Si vous utilisez Windows 32 bits et que vous devez déboguer du code natif, utilisez Android Studio 2.3.

Kotlin

Mise à niveau de Kotlin vers la version 1.2.30

Android Studio 3.1 inclut la version 1.2.30 de Kotlin.

Le code Kotlin est à présent analysé avec la vérification lint en ligne de commande

L'exécution de lint à partir de la ligne de commande vous permet maintenant d'analyser vos classes Kotlin.

Pour chaque projet sur lequel vous souhaitez exécuter lint, le dépôt Maven de Google doit être inclus dans le fichier build.gradle de premier niveau. Le dépôt Maven est déjà inclus pour les projets créés dans Android Studio 3.0 et versions ultérieures.

Outils d'optimisation des performances

Exemples de processus C++ natifs avec le Profileur de processeur

Le Profileur de processeur inclut à présent une configuration par défaut pour enregistrer des échantillons de traces des threads natifs de votre application. Vous pouvez utiliser cette configuration en déployant votre application sur un appareil équipé d'Android 8.0 (niveau d'API 26) ou version ultérieure, puis en sélectionnant Sampled (Native) (Échantillonné (natif)) dans le menu déroulant des configurations d'enregistrement du Profileur de processeur. Ensuite, enregistrez et inspectez une trace comme vous le feriez normalement.

Vous pouvez modifier les paramètres par défaut, tels que l'intervalle d'échantillonnage, en créant une configuration d'enregistrement.

Pour revenir au traçage de vos threads Java, sélectionnez une configuration Sampled (Java) (Échantillonné (Java)) ou Instrumented (Java) (Instrumenté (Java)).

Filtrer les traces du processeur, les résultats d'allocation de mémoire et les empreintes de la mémoire

Le Profileur de processeur et le Profileur de mémoire incluent une fonctionnalité de recherche qui vous permet de filtrer les résultats de l'enregistrement d'une trace de méthode, d'allocations de mémoire ou d'une empreinte de la mémoire.

Pour effectuer une recherche, cliquez sur Filter (Filtrer) en haut à droite du volet, saisissez votre requête, puis appuyez sur Entrée.

Conseil : Vous pouvez aussi ouvrir le champ de recherche en appuyant sur Ctrl+F (Commande+F sur Mac).

Dans l'onglet Flame Chart (Graphique de flammes) du Profileur de processeur, les piles d'appels qui contiennent des méthodes liées à votre requête de recherche sont mises en surbrillance et déplacées vers la gauche du graphique.

Pour en savoir plus sur le filtrage par méthode, classe ou nom de package, consultez Enregistrer et inspecter les traces de méthode.

Onglet "Requête" du Profileur de réseau

Le Profileur de réseau contient à présent un onglet Request (Requête) qui fournit des détails sur les requêtes réseau sur la chronologie sélectionnée. Dans les versions précédentes, le Profileur de réseau ne fournissait que des informations sur les réponses du réseau.

Vue "Thread" du Profileur de réseau

Après avoir sélectionné une partie de la chronologie dans le Profileur de réseau, vous pouvez sélectionner l'un des onglets suivants pour afficher plus d'informations sur l'activité réseau au cours de cette période :

  • Connection View (Vue "Connexion") : fournit les mêmes informations que les versions précédentes d'Android Studio. Elle présente les fichiers envoyés ou reçus au cours de la partie sélectionnée de la chronologie sur l'ensemble des threads de processeur de votre application. Pour chaque requête, vous pouvez inspecter la taille, le type, l'état et la durée de la transmission.
  • Thread View (Vue "Thread") : affiche l'activité réseau de chacun des threads de processeur de votre application. Cette vue vous permet d'identifier les threads de votre application qui sont responsables de chaque requête réseau.

Outil d'inspection de la mise en page

L'outil d'inspection de la mise en page s'est enrichi de nouvelles fonctionnalités, y compris de fonctionnalités qui auparavant étaient fournies par les outils Hierarchy Viewer et Pixel Perfect, désormais obsolètes :

  • Boutons de zoom et raccourcis clavier pour parcourir et inspecter les mises en page
  • Superposition de la grille de référence
  • Possibilité de charger une image de référence et de l'utiliser comme superposition (utile pour comparer votre mise en page avec une maquette d'interface utilisateur)
  • Afficher un aperçu de la sous-arborescence pour isoler une vue dans une mise en page complexe

Éditeur de mise en page

La palette de l'éditeur de mise en page a fait l'objet de nombreuses améliorations :

  • Réorganisation des catégories pour les vues et les mises en page.
  • Nouvelle catégorie Common (Courant) pour les vues et les mises en page, que vous pouvez ajouter à l'aide d'une commande Favorite (Favori).
  • Amélioration de la recherche de vues et de mises en page.
  • Nouvelles commandes permettant d'ouvrir la documentation pour un élément de vue ou de mise en page spécifique.

Vous pouvez utiliser la nouvelle commande Convert view (Convertir la vue) de Component tree (Arborescence des composants) ou de l'éditeur de conception pour convertir une vue ou une mise en page dans un autre type.

Désormais, vous pouvez créer facilement des contraintes sur les éléments proches de la vue sélectionnée à l'aide des nouveaux boutons Create a connection (Créer une connexion)  dans l'inspecteur de vue en haut de la fenêtre Attributes (Attributs).

Exécution et exécution instantanée

Le comportement de l'option Use same selection for future launches (Utiliser la même sélection pour les futurs lancements) de la boîte de dialogue Select deployment target (Sélectionner une cible de déploiement) est maintenant plus cohérent. Si l'option Use same selection (Utiliser la même sélection) est activée, la boîte de dialogue Select deployment target (Sélectionner une cible de déploiement) ne s'ouvre que la première fois que vous utilisez la commande Run (Exécuter) jusqu'à ce que l'appareil sélectionné ne soit plus connecté.

Lorsque vous ciblez un appareil équipé d'Android 8.0 (niveau d'API 26) ou version ultérieure, l'exécution instantanée peut déployer des modifications sur les ressources sans entraîner le redémarrage de l'application. Cela est possible, car les ressources sont contenues dans un APK divisé.

Émulateur

Pour en savoir plus sur les nouveautés et les modifications apportées à l'émulateur depuis Android Studio 3.0, consultez les notes de version d'Android Emulator de la version 27.0.2 à la version 27.1.12.

Voici les principales améliorations apportées :

  • Instantanés Quick Boot pour enregistrer l'état de l'émulateur et un démarrage plus rapide, avec la possibilité d'utiliser la commande Save now (Enregistrer maintenant) pour enregistrer un état de démarrage personnalisé.
  • Écran d'émulateur sans fenêtre.
  • Images système pour Android 8.0 (niveau d'API 26), Android 8.1 (niveau d'API 27) et Preview développeur d'Android P.

Améliorations de l'interface utilisateur et de l'expérience utilisateur

Plus grand nombre d'info-bulles, de raccourcis clavier et de messages utiles

Nous avons ajouté des info-bulles et des superpositions de messages utiles à de nombreux endroits dans Android Studio.

Pour afficher les raccourcis clavier de nombreuses commandes, positionnez le pointeur de la souris sur un bouton jusqu'à ce que l'info-bulle s'affiche.

Menu Outils > Android supprimé

Le menu Tools > Android (Outils > Android) a été supprimé. Les commandes qui se trouvaient dans ce menu ont été déplacées.

  • De nombreuses commandes ont été placées directement dans le menu Tools (Outils).
  • La commande Sync project with gradle files (Synchroniser le projet avec les fichiers Gradle) a été déplacée dans le menu File (Fichier).
  • La commande Device Monitor (Moniteur d'appareil) a été supprimée, comme décrit ci-dessous.

Moniteur d'appareil disponible à partir de la ligne de commande

Dans Android Studio 3.1, le moniteur d'appareil n'a pas le même rôle qu'auparavant. Dans de nombreux cas, les fonctionnalités disponibles via le moniteur d'appareil sont à présent fournies par de nouveaux outils améliorés.

Consultez la documentation du moniteur d'appareil pour obtenir des instructions sur l'appel du moniteur d'appareil à partir de la ligne de commande, ainsi que pour en savoir plus sur les outils disponibles via le moniteur d'appareil.