Développement de code itératif

En tant que développeur mobile, 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 compilation complète 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 les émulateurs et les appareils physiques en temps réel. 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 fonctionnalité de modification en temps réel propose 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 du raccourci Ctrl+S (Cmd+S sous macOS).
  • Automatique: les modifications sont appliquées sur votre appareil ou dans 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 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é "Modification en temps réel" pour votre projet et d'effectuer des modifications à l'aide de la fonctionnalité "Modification en temps réel".

Configurer votre nouveau projet

  1. Avant de commencer, assurez-vous qu'Android Studio Giraffe ou une 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 de l'étape 4 saisis 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 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 touches Ctrl+S (Commande+S sous macOS). En mode automatique, les modifications de code sont appliquées à votre appareil ou à votre émulateur lorsque vous effectuez vos 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 modification en temps réel, la coche verte À jour apparaît en haut à droite de la fenêtre d'outil Appareils en cours d'exécution:

    Coche verte "Live Edit" (UI)

Apporter des modifications et les examiner

Lorsque vous apportez des modifications compatibles dans l'éditeur, l'appareil de test virtuel ou physique est automatiquement mis à jour.

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 s'affichent 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, 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é 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 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, la fonctionnalité de modification en temps réel 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 la fonctionnalité de 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 de bytecode définie dans le fichier de compilation de votre projet. Par exemple, elle est appliquée lors de la compilation du projet à l'aide des options du menu Build (Compiler) ou en cliquant sur les boutons Build (Compiler) 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 lesquels 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). Cependant, elle n'est pas officiellement compatible, et des problèmes peuvent survenir. Si vous rencontrez des problèmes, veuillez les signaler.

  • "Apply Changes" (Appliquer les modifications) et "Apply Code Changes" (Appliquer les modifications du code) ne sont pas compatibles avec la modification en temps réel et nécessitent le redémarrage de l'application en cours d'exécution.

  • Actuellement, la fonctionnalité de modification en temps réel n'est pas compatible avec les projets Android Automotive.

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 > Settings > Editor > Live Edit (Fichier > Paramètres > Éditeur > Modification en temps réel) ou à Android Studio > Settings > Editor > Live Edit (Android Studio > Paramètres > Éditeur > Live Edit 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. Il 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 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 Compose et de s'actualiser automatiquement pour afficher l'effet des modifications du code. L'aperçu permet également d'afficher les éléments de l'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 les littéraux dans le code source, et l'aperçu est mis à jour de manière dynamique

Vous pouvez afficher les littéraux constants qui déclenchent des mises à jour en temps réel sans l'étape de compilation en activant les décorations de littéraux via l'indicateur d'UI Modification en temps réel des littéraux:

Activer la modification en direct
des 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 en cliquant sur le bouton Apply Code Changes (Appliquer les modifications du code) :

Clic sur le bouton "Appliquer les modifications"