Bonnes pratiques

Gemini dans Android Studio agit comme un collaborateur de codage, accélérant votre workflow de développement en générant du code, en résumant des sujets complexes, en trouvant des ressources spécifiques, et plus encore. Une communication efficace est essentielle pour exploiter tout le potentiel de Gemini.

Ce guide présente des stratégies pour configurer votre environnement de développement et rédiger des requêtes qui génèrent des réponses utiles et fiables. Pour plusieurs stratégies, nous avons fourni des exemples de requêtes pour différents cas d'utilisation. Pour obtenir d'autres exemples de requêtes, consultez la galerie de requêtes.

Utiliser le mode Agent

Le mode Agent de Gemini dans Android Studio va au-delà de ce que vous pouvez faire en discutant simplement avec Gemini. Vous pouvez définir un objectif général pour l'agent, qui décomposera le problème et créera un plan pour le résoudre. L'agent fait appel à des outils, modifie plusieurs fichiers et corrige les erreurs au fur et à mesure. Le mode Agent vous aide à gérer plus efficacement les tâches complexes, ce qui accélère l'ensemble de votre processus de développement.

Soyez précis.

Gemini dans Android Studio fonctionne mieux avec des instructions claires et spécifiques. Si vous souhaitez utiliser certaines bibliothèques, API ou approches, incluez-les dans votre question ou dans le fichier AGENTS.md à la racine de votre projet pour les conserver lors des interactions. Considérez-le comme un signalement de bug : plus vous fournissez d'informations, plus le problème peut être résolu rapidement et efficacement.

Implémenter une nouvelle fonctionnalité :

Comment ajouter la prise en charge de l'appareil photo à mon application à l'aide de CameraX ? Veille à inclure toutes les dépendances et autorisations dont j'ai besoin pour utiliser la bibliothèque.
Comment ajouter la prise en charge de l'appareil photo à mon application ?

Génération du code :

Écrivez une fonction de suspension Kotlin qui utilise la bibliothèque Coil pour télécharger une image à partir d'une chaîne d'URL donnée.

La fonction doit être nommée fetchImageAsBitmap. Elle doit accepter un Context et une URL String comme arguments et renvoyer un Bitmap pouvant être nul. En cas d'erreur réseau ou de décodage, il doit intercepter l'exception, la consigner et renvoyer null.

Écrivez une fonction permettant de télécharger une image.

Expliquer un concept :

Je développe une application de lecteur de musique et j'ai besoin de continuer la lecture lorsque l'application est en arrière-plan.

Quelles sont mes options pour que mon application continue de s'exécuter pendant que l'utilisateur effectue d'autres tâches sur l'appareil ? Quelles sont les exigences au niveau de l'API et les implications pour l'autonomie de la batterie pour chaque approche ?

Expliquez les services Android.

Décrire la structure de la réponse

Par défaut, Gemini fournit des réponses sous forme de paragraphes conversationnels. Bien que cela soit souvent utile pour les explications, vous pouvez obtenir des résultats plus efficaces et immédiatement utilisables en lui indiquant comment structurer la réponse. En spécifiant le format de sortie, vous demandez au modèle d'organiser les informations de manière claire et prévisible, ce qui vous évite de les reformater vous-même.

Si vous souhaitez insérer du code généré par Gemini dans votre application et que vous avez besoin que le code soit dans un format spécifique pour pouvoir l'utiliser immédiatement, donnez à Gemini des instructions claires sur la façon de générer et de mettre en forme le code.

Structurer la réponse :

Créez une entité Room pour un profil utilisateur. Il doit contenir les champs id, userName, email et memberSince. Le champ id doit être généré automatiquement. Le champ memberSince doit représenter un code temporel.

Créez une entité Room pour un profil utilisateur.

Si vous posez une question plus ouverte, demandez x options.

Limiter la réponse :

Quels outils sont disponibles pour optimiser les performances des applications ? Donne-moi une liste des trois premiers.
Quels outils sont disponibles pour optimiser les performances des applications ?

Décomposer les requêtes complexes en tâches plus petites

Pour les requêtes complexes en plusieurs étapes, essayez le mode Agent. Toutefois, si l'approche de l'agent ne correspond pas à vos attentes, il peut être utile de guider Gemini à l'aide d'une série de requêtes plus petites et séquentielles plutôt que de tout demander en une seule fois. Cette approche vous offre plus de contrôle et vous permet de vérifier chaque étape avant de passer à la suivante.

Appliquer des requêtes séquentielles :

Requête 1 : Le modèle de données
Commencez par créer une classe de données Kotlin nommée User. Il doit comporter trois propriétés : id (un entier), name (une chaîne) et email (une chaîne).

Requête 2 : La couche réseau
Créez maintenant une interface d'API Retrofit appelée ApiService. Il a besoin d'un seul suspend fun appelé getUsers() qui renvoie un List<User>.

Requête 3 : Gestion de l'état
Écrivez ensuite un UsersViewModel qui prend le ApiService comme dépendance. Le UsersViewModel doit exposer un StateFlow d'une classe UiState scellée pouvant représenter les états Loading, Success(users: List) et Error(message: String). Créez une fonction dans ViewModel pour récupérer les utilisateurs et mettre à jour l'état. Écrivez des tests unitaires pour les nouvelles fonctionnalités.

Requête 4 : La couche UI
Enfin, écrivez une fonction Jetpack Compose nommée UserListScreen qui accepte UiState comme paramètre. Utilisez une instruction when pour afficher un CircularProgressIndicator pour l'état de chargement, un LazyColumn de noms d'utilisateur pour l'état de réussite et un élément Text avec le message d'erreur pour l'état d'erreur. Ajoutez des tests qui vérifient la nouvelle fonctionnalité.

Créez un écran Jetpack Compose qui récupère une liste d'utilisateurs à partir d'une API JSON et l'affiche dans une liste. Il doit comporter un ViewModel qui utilise Retrofit et des coroutines, un dépôt pour gérer la logique des données, une classe de données User et doit afficher les états de chargement et d'erreur.

Gérer le contexte

Pour utiliser Gemini dans Android Studio, il est essentiel de fournir le bon contexte. Fournissez des extraits de code, le contenu des fichiers et des informations sur la structure du projet pertinents pour obtenir les réponses les plus utiles. Vous devrez peut-être faire plusieurs tentatives pour trouver le bon équilibre : trop d'informations pourraient induire Gemini en erreur, tandis que trop peu ne lui fourniront pas assez de contexte pour vous aider. Utilisez les fonctionnalités disponibles pour donner à Gemini l'accès au contexte nécessaire :

  • Joignez des images pour fournir une représentation visuelle de l'UI que vous envisagez ou de l'architecture de l'application que vous essayez de comprendre.
  • Joignez des fichiers pour mettre en évidence les parties pertinentes de la base de code.
  • Utilisez les fichiers .aiexclude pour que Gemini ignore certaines parties de la base de code.
  • Utilisez les fichiers AGENTS.md pour donner des instructions spécifiques à un projet et les partager avec votre équipe. Lorsque vous utilisez des fichiers AGENTS.md, utilisez des en-têtes et une mise en forme Markdown pour rendre vos instructions claires.
  • Lorsque vous utilisez le mode Agent, configurez les serveurs MCP pour étendre les connaissances et les capacités de Gemini avec l'environnement externe.

Demander des explications

Si vous ne comprenez pas la réponse de Gemini dans Android Studio, demandez une explication. C'est un excellent moyen d'apprendre et de vérifier que la solution proposée est adaptée à votre cas d'utilisation. Si la réponse ne correspond pas à ce que vous attendiez, il se peut que Gemini se soit trompé. Demander une explication lui permettra de se corriger.

Itérer sur vos instructions

Comme lorsque vous travaillez avec un collègue, il faut parfois communiquer plusieurs fois avec Gemini dans Android Studio pour obtenir des informations claires sur la tâche et le résultat attendu. Si la réponse initiale de Gemini ne vous suffit pas, répondez-y en fournissant des commentaires et des suggestions pour l'améliorer. Si sa réponse s'améliore grâce à vos suggestions, intégrez-les à la requête d'origine en mettant à jour l'entrée dans la bibliothèque de requêtes ou en modifiant vos fichiers AGENTS.md.