Développement de code itératif

En tant que développeur d'applications mobiles, vous développez souvent l'interface utilisateur de votre application étape par étape plutôt que tout en même temps. Android Studio adopte cette approche avec Jetpack Compose en fournissant des outils qui ne nécessitent pas de compilation complète pour inspecter, modifier les valeurs et vérifier le résultat final.

Modification en temps réel

La modification en temps réel est une fonctionnalité qui vous permet de mettre à jour des composables en temps réel dans des émulateurs et des appareils physiques. Cette fonctionnalité limite les changements de contexte entre l'écriture et la compilation de votre application, ce qui vous permet de vous concentrer sur l'écriture du code plus longtemps sans interruption.

La modification en temps réel propose trois modes:

  • Manuel: les modifications apportées au code sont appliquées lorsqu'elles sont transmises manuellement à l'aide de la combinaison Ctrl+' (Commande+' sur macOS).
  • Manuel à l'enregistrement: les modifications apportées au code sont appliquées lorsqu'elles sont enregistrées manuellement à l'aide des touches Ctrl+S (Cmd+S sur macOS).
  • Automatique: les modifications sont appliquées sur votre appareil ou votre émulateur lorsque vous mettez à jour une fonction modulable.

La fonctionnalité de modification en temps réel se concentre sur les modifications de code liées à l'UI et à l'expérience utilisateur. Cette fonctionnalité ne prend pas en charge les modifications telles que les mises à jour de signature de méthode, l'ajout de nouvelles méthodes ou les modifications de hiérarchie des classes. Pour en savoir plus, consultez la liste des limites de la fonctionnalité de modification en temps réel.

Cette fonctionnalité ne remplace pas la création et l'exécution de votre application, ni l'option Apply Changes (Appliquer les modifications). Elle est conçue pour optimiser votre workflow lorsque vous compilez, déployez et itérez une application afin de développer l'UI Compose.

Le workflow recommandé est le suivant :

  1. Configurez votre application pour qu'elle puisse être exécutée.
  2. Utilisez "Live Edit" (Modification en temps réel) autant que possible, jusqu'à ce que vous ayez besoin d'apporter une modification non prise en charge par cette fonctionnalité, comme l'ajout de nouvelles méthodes, lorsque l'application est en cours d'exécution.
  3. Après avoir effectué une modification non compatible, cliquez sur Run (Exécuter) Icône de course pour redémarrer votre application et reprendre la modification en temps réel.

Premiers pas avec la fonctionnalité "Live Edit" (Modification en temps réel)

Pour faire vos premiers pas, procédez comme suit afin de créer une activité Compose vide, d'activer la fonctionnalité de modification en temps réel pour votre projet et d'utiliser cette fonctionnalité pour y apporter des modifications.

Configurer votre nouveau projet

  1. Avant de commencer, assurez-vous d'avoir installé Android Studio Giraffe ou une version ultérieure, et que le niveau d'API de votre appareil physique ou de votre émulateur est d'au moins 30.

  2. Ouvrez Android Studio et sélectionnez New Project (Nouveau projet) dans la boîte de dialogue Welcome to Android Studio (Bienvenue dans Android Studio). Si vous avez déjà ouvert un projet, vous pouvez en créer un nouveau en accédant à File > New > New Project (Fichier > Nouveau > Nouveau projet).

  3. Choisissez le modèle Empty Compose Activity (Activité Compose vide) pour Phone and Tablet (Téléphone et tablette), puis cliquez sur Next (Suivant).

    Sélection d'un modèle dans Android Studio
    Figure 1 Modèles disponibles Pour "Live Edit" (Modification en temps réel), sélectionnez Empty Compose Activity (Activité Compose vide).
  4. Dans la boîte de dialogue New Project (Nouveau projet), renseignez les informations requises : nom, nom du package, emplacement d'enregistrement, SDK minimal et langage de la configuration de compilation.

    Exemples de paramètres de projet définis à l'étape 4 dans Android Studio
    Figure 2 Exemples de paramètres de projet
  5. Cliquez sur Terminer.

Activer la fonctionnalité de modification en temps réel

  1. Accédez aux paramètres pour activer la modification en temps réel.

    • Sous Windows ou Linux, accédez à File > Settings > Editor > Live Edit (Fichier > Paramètres > Éditeur > Modification en temps réel).
    • Sous macOS, accédez à Android Studio > Settings > Editor > Live Edit (Android Studio > Paramètres > Éditeur > Modification en temps réel).
  2. Sélectionnez l'option Live Edit (Modification en temps réel), puis choisissez le mode que vous souhaitez exécuter dans les paramètres.

    En mode manuel, les modifications de code sont appliquées chaque fois que vous appuyez sur Ctrl+' (Cmd+' sous macOS). En mode manuel lors de l'enregistrement, les modifications de code sont appliquées à chaque enregistrement manuel, à l'aide des combinaisons de touches Ctrl + S (Commande + S sur macOS). En mode automatique, les modifications de code sont appliquées sur votre appareil ou votre émulateur lorsque vous effectuez des modifications.

    UI de la case à cocher "Live Edit" (Modification en temps réel) dans les paramètres d'Android Studio
    Figure 3 Paramètres de la modification en temps réel
  3. Dans l'éditeur, ouvrez le fichier MainActivity correspondant au point d'entrée de votre application.

  4. Cliquez sur Run (Exécuter) Bouton d'UI pour déployer votre application.

  5. Une fois la fonctionnalité de modification en temps réel activée, la coche verte À jour s'affiche en haut à droite de la fenêtre de l'outil Running Devices (Appareils en cours d'exécution) :

    Coche verte "Live Edit" (UI)

Apporter des modifications et les examiner

Lorsque vous effectuez des modifications compatibles dans l'éditeur, l'appareil de test virtuel ou physique se met à jour automatiquement.

Par exemple, remplacez la méthode Greeting existante dans MainActivity par ce qui suit:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Vos modifications apparaissent instantanément sur l'appareil de test, comme illustré dans la figure 4.

Modifications apportées à la méthode d'accueil d'un appareil
Figure 4. Appareil de test affichant les modifications en temps réel de la méthode Greeting

Résoudre les problèmes liés à la fonctionnalité "Live Edit" (Modification en temps réel)

Si vos modifications ne s'affichent pas sur l'appareil de test, il est possible qu'Android Studio n'ait pas réussi à les mettre à jour. Vérifiez si l'indicateur de modification en temps réel indique Out Of Date (Obsolète), comme illustré à la figure 5, ce qui indique une erreur de compilation. Pour en savoir plus sur l'erreur et obtenir des suggestions sur sa résolution, cliquez sur l'indicateur.

Icône "Out of date" (Obsolète) de la fonctionnalité de modification en temps réel
Figure 5. Indicateur d'état de la fonctionnalité de modification en temps réel.

Limites de la fonctionnalité "Live Edit" (Modification en temps réel)

Voici la liste des limites actuelles.

  • [S'applique uniquement à Android Studio Giraffe et aux versions ultérieures] La fonctionnalité de modification en temps réel nécessite Compose Runtime 1.3.0 ou version ultérieure. Si votre projet utilise une version antérieure de Compose, cette fonctionnalité est désactivée.

  • [S'applique uniquement à Android Studio Giraffe et versions ultérieures] La fonctionnalité de modification en temps réel nécessite AGP 8.1.0-alpha05 ou version ultérieure. Si votre projet utilise une version antérieure d'AGP, cette fonctionnalité est désactivée.

  • La fonctionnalité de modification en temps réel nécessite un appareil physique ou un émulateur exécutant le niveau d'API 30 ou supérieur.

  • La fonctionnalité "Live Edit" prend uniquement en charge la modification d'un corps de fonction Vous ne pouvez donc pas modifier le nom ou la signature de la fonction, ajouter ou supprimer une fonction, ni modifier des champs non fonctionnels.

  • La fonctionnalité "Live Edit" réinitialise l'état de l'application la première fois que vous modifiez une fonction Compose dans un fichier. Cela ne se produit que après le premier changement de code. L'état de l'application n'est pas réinitialisé par les modifications de code ultérieures que vous apportez aux fonctions Compose dans ce fichier.

  • Les classes modifiées par la fonctionnalité de modification en temps réel peuvent altérer les performances. Exécutez votre application et utilisez un build "propre" si vous évaluez ses performances.

  • Vous devez effectuer une exécution complète pour permettre au débogueur de fonctionner sur les classes que vous avez modifiées avec "Live Edit" (Modification en temps réel).

  • Une application en cours d'exécution peut planter lorsque vous la modifiez à l'aide de la fonctionnalité de modification en temps réel. Dans ce cas, vous pouvez redéployer l'application à l'aide du bouton Run (Exécuter) Bouton d'UI.

  • La fonctionnalité de modification en temps réel n'effectue aucune manipulation du bytecode défini dans le fichier de compilation de votre projet, par exemple, une manipulation du bytecode qui serait appliquée lors de la compilation du projet en utilisant les options du menu Build (Compilation) ou en cliquant sur le bouton Build (Compilation) ou Run (Exécuter).

  • Les fonctions non composables sont mises à jour en direct sur l'appareil ou l'émulateur, et une recomposition complète est déclenchée. Cette recomposition complète n'appelle pas systématiquement la fonction mise à jour. Pour les fonctions non modulables, vous devez déclencher les fonctions récemment mises à jour ou exécuter à nouveau l'application.

  • La fonctionnalité de modification en temps réel n'est pas réactivée au redémarrage de l'application. Vous devez exécuter à nouveau l'application.

  • La fonctionnalité "Live Edit" (Modifications en temps réel) n'est compatible qu'avec les processus débogables.

  • La fonctionnalité de modification en temps réel n'est pas compatible avec les projets qui utilisent des valeurs personnalisées pour moduleName sous kotlinOptions dans la configuration de compilation.

  • La fonctionnalité de modification en temps réel n'est pas compatible avec les multidéploiements. En d'autres termes, vous ne pouvez pas effectuer de déploiement sur un appareil, puis sur un autre. La fonctionnalité de modification en temps réel n'est active que sur le dernier ensemble d'appareils sur lequel l'application a été déployée.

  • La fonctionnalité de modification en temps réel fonctionne avec les déploiements multi-appareils (déploiements sur plusieurs appareils créés via Sélectionner plusieurs appareils dans le menu déroulant des appareils cibles). Toutefois, cette prise en charge n'est pas officielle. Dès lors, des problèmes peuvent survenir. Si vous rencontrez des problèmes, veuillez les signaler.

  • Les options "Apply Changes" (Appliquer les modifications)/"Apply Code Changes" (Appliquer les modifications de code) ne sont pas compatibles avec la fonctionnalité "Live Edit" (Modifications en direct) et nécessitent le redémarrage de l'application en cours d'exécution.

  • La fonctionnalité de modification en temps réel n'est pas compatible avec les projets Android Auto pour le moment.

Questions fréquentes sur la fonctionnalité "Live Edit" (Modification en temps réel)

  • Quel est l'état actuel de la fonctionnalité de modification en temps réel ?

    La modification en temps réel est disponible dans Android Studio Giraffe. Pour l'activer, accédez à File (Fichier) > Settings (Paramètres) > Editor (Éditeur) > Live Edit (Modification en temps réel) ou à Android Studio > Settings (Paramètres) > Editor (Éditeur) > Live Edit (Modification en temps réel) sous macOS.

  • Quand utiliser la fonctionnalité de modification en temps réel ?

    Utilisez la fonctionnalité de modification en temps réel lorsque vous souhaitez voir rapidement l'effet des mises à jour des éléments de l'expérience utilisateur (telles que les mises à jour de modificateurs et les animations) sur l'expérience globale de l'application.

  • Quand dois-je éviter d'utiliser la fonctionnalité de modification en temps réel ?

    La fonctionnalité de modification en temps réel se concentre sur les modifications de code liées à l'UI et à l'expérience utilisateur. Elle n'est pas compatible avec les modifications telles que les mises à jour de signature de méthode, l'ajout de méthodes ou les modifications de hiérarchie des classes. Pour en savoir plus, consultez la section Limites de la fonctionnalité de modification en temps réel.

  • Quand utiliser l'aperçu de Compose ?

    Utilisez l'aperçu de Compose lorsque vous développez des composables individuels. L'aperçu permet de visualiser les éléments de Compose et s'actualise automatiquement pour afficher l'effet des modifications apportées au code. L'aperçu prend également en charge l'affichage des éléments d'UI dans différentes configurations et états, tels que le thème sombre, les paramètres régionaux et l'échelle de police.

Modification en temps réel de littéraux (obsolète)

Android Studio peut mettre à jour en temps réel certains littéraux constants utilisés dans les composables dans les aperçus, l'émulateur et l'appareil physique. Voici quelques types pris en charge :

  • Int
  • String
  • Color
  • Dp
  • Boolean

Vidéo de l'utilisateur modifiant des littéraux dans le code source. L'aperçu est mis à jour de façon dynamique.

Vous pouvez afficher des littéraux constants qui déclenchent des mises à jour en temps réel sans l'étape de compilation. Pour ce faire, activez la décoration des littéraux via l'indicateur d'UI Modification en temps réel de littéraux:

Activation de Modification en temps réel de littéraux

Appliquer les modifications

L'option Appliquer les modifications vous permet de mettre à jour le code et les ressources sans avoir à redéployer votre application sur un émulateur ou un appareil physique (avec certaines limites).

Chaque fois que vous ajoutez, modifiez ou supprimez des composables, vous pouvez mettre à jour votre application sans avoir à la redéployer en cliquant sur le bouton Apply Code Changes (Appliquer les modifications au code) :

Utilisateur cliquant sur le bouton "Appliquer les modifications"