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 de tout développer en même temps. Android Studio adopte cette approche avec Jetpack Compose en fournissant des outils qui ne nécessitent pas de build complet pour inspecter, modifier les valeurs et vérifier le résultat final.

Modification en temps réel

La fonctionnalité de modification en temps réel vous permet de mettre à jour des composables dans des émulateurs et des appareils physiques en temps réel. Cette fonctionnalité minimise 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 fonctionnalité "Live Edit" (Modification en temps réel) comporte trois modes:

  • Manuel: les modifications de code sont appliquées lorsqu'elles sont transférées manuellement à l'aide de Ctrl+\ (Cmd+\ sous macOS).
  • Enregistrement manuel: les modifications de code sont appliquées lorsqu'elles sont enregistrées manuellement à l'aide de la combinaison de touches Ctrl+S (Cmd+S sous 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 Run (Exécuter) 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 commencer, 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'effectuer des modifications à l'aide de cette fonctionnalité.

Configurer votre nouveau projet

  1. Avant de commencer, assurez-vous qu'Android Studio Giraffe ou version ultérieure est installé 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 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 Finish (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 transféré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 touches Ctrl + S (Commande + S sous 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 fonctionnalité de 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 que vous avez activé la fonctionnalité de modification en temps réel, 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, modifiez la méthode Greeting existante dans MainActivity comme 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 apportées à 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, Android Studio n'a peut-être 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é dans 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 versions ultérieures] La modification en temps réel nécessite l'environnement d'exécution Compose 1.3.0 ou version ultérieure. Si votre projet utilise une version antérieure de Compose, la fonctionnalité de modification en temps réel est désactivée.

  • [S'applique uniquement à Android Studio Giraffe et versions ultérieures] La modification en temps réel nécessite AGP 8.1 ou une 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é de modification en temps réel réinitialise l'état de l'application la première fois que vous modifiez une fonction Compose dans un fichier. Cela ne se produit qu'après la première modification du 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 que le débogueur fonctionne 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éfinie dans le fichier de compilation de votre projet (par exemple, une manipulation du bytecode qui est appliquée lorsque le projet est compilé à l'aide des options du menu Build ou en cliquant sur les boutons Build ou Run).

  • Les fonctions non modulables 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 est compatible avec les déploiements multi-appareils (déploiements sur plusieurs appareils créés via l'option Sélectionner plusieurs appareils dans le menu déroulant des appareils cibles). Cependant, elle n'est pas officiellement compatible, et des problèmes peuvent survenir. Si vous rencontrez des problèmes, veuillez les signaler.

  • La fonctionnalité "Apply Changes" (Appliquer les modifications) ou "Apply Code Changes" (Appliquer les modifications de code) n'est pas compatible avec la fonctionnalité de modification en temps réel et nécessite le redémarrage de l'application en cours d'exécution.

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 fonctionnalité de modification en temps réel est disponible dans Android Studio Giraffe. Pour l'activer, accédez à File > Settings > Editor > Live Edit (Fichier > Paramètres > Éditeur > Modification en temps réel) ou à Android Studio > Paramètres > Éditeur > Modification en temps réel sous macOS.

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

    Utilisez la fonctionnalité de modification en temps réel si vous souhaitez voir rapidement l'effet des mises à jour des éléments de l'expérience utilisateur (mises à jour de modificateurs et animations, par exemple) 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. Il n'est pas compatible avec 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 section Limites de la fonctionnalité de modification en temps réel.

  • Quand dois-je utiliser l'aperçu Compose ?

    Utilisez l'aperçu de Compose lorsque vous développez des composables individuels. L'aperçu visualise les éléments Compose et s'actualise automatiquement pour afficher l'effet des modifications du code. L'aperçu prend également en charge l'affichage des éléments d'interface utilisateur 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, et l'aperçu mis à jour de manière 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 les décorations littérales via l'indicateur d'interface utilisateur "Modification en temps réel de littéraux" :

Activer la modification en temps réel de littéraux

Appliquer les modifications

L'option Apply Changes (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. Pour ce faire, cliquez sur le bouton Apply Code Changes (Appliquer les modifications du code) :

Utilisateur cliquant sur le bouton "Appliquer les modifications"