Práticas recomendadas

O Gemini no Android Studio funciona como seu colaborador de programação, acelerando seu fluxo de trabalho de desenvolvimento ao gerar código, resumir tópicos complexos, encontrar recursos específicos e muito mais. A comunicação eficaz é a chave para aproveitar todo o potencial do Gemini.

Este guia descreve estratégias para configurar seu ambiente de desenvolvimento e escrever comandos que geram respostas úteis e confiáveis. Para várias estratégias, fornecemos exemplos de comandos para diferentes casos de uso. Para mais exemplos de comandos, consulte a galeria de comandos.

Usar o Modo Agente

O modo agente do Gemini no Android Studio vai além do que você pode experimentar apenas conversando com o Gemini. Você pode dar ao agente uma meta de alto nível, e ele vai dividir o problema e criar um plano para resolvê-lo. O agente usa ferramentas, edita vários arquivos e corrige erros à medida que avança. O Modo Agente ajuda você a lidar com tarefas complexas de maneira mais eficiente, acelerando todo o processo de desenvolvimento.

Dê informações específicas

O Gemini no Android Studio funciona melhor com instruções claras e específicas. Se houver bibliotecas, APIs ou abordagens específicas que você gostaria de usar, inclua-as na sua pergunta ou no arquivo AGENTS.md raiz do projeto para que elas sejam mantidas em todas as interações. É como enviar um relatório de bug: quanto mais informações você fornecer, mais rápido e eficaz será a solução do problema.

Implementação de novas funcionalidades:

Como adicionar suporte à câmera ao meu app usando a CameraX? Inclua todas as dependências e permissões necessárias para usar a biblioteca.
Como faço para adicionar suporte a câmeras no meu app?

Geração de código:

Escreva uma função de suspensão do Kotlin que use a biblioteca Coil para baixar uma imagem de uma determinada string de URL.

A função precisa ser nomeada como fetchImageAsBitmap. Ele precisa receber um Context e um URL String como argumentos e retornar um Bitmap anulável. Se houver um erro de rede ou de decodificação, ele vai capturar a exceção, registrar e retornar null.

Escreva uma função para baixar uma imagem.

Explicar um conceito:

Estou criando um app de reprodução de música e preciso continuar a reprodução quando o app estiver em segundo plano.

Quais são minhas opções para manter meu app em execução enquanto o usuário faz outras coisas no dispositivo? Quais são os requisitos de nível de API e as implicações na duração da bateria para cada abordagem?

Explique os Serviços do Android.

Descrever a estrutura da resposta

Por padrão, o Gemini fornece respostas em um formato conversacional, com base em parágrafos. Embora isso seja útil para explicações, você pode receber resultados mais eficazes e imediatamente utilizáveis dizendo ao modelo como estruturar a resposta. Especificar o formato de saída direciona o modelo para organizar as informações de maneira clara e previsível, economizando seu tempo de reformatação.

Se você quiser inserir no app um código gerado pelo Gemini e precisar dele em um formato específico para usar instantaneamente, dê instruções claras ao Gemini sobre como gerar e formatar o código.

Estruturar a resposta:

Crie uma entidade do Room para um perfil de usuário. Ele precisa conter os campos id, userName, email e memberSince. O campo id precisa ser gerado automaticamente. O campo memberSince precisa representar um carimbo de data/hora.

Crie uma entidade do Room para um perfil de usuário.

Se você estiver fazendo uma pergunta mais aberta, peça x opções.

Limitar a resposta:

Quais ferramentas estão disponíveis para otimizar a performance do app? Me dê uma lista das três principais.
Quais ferramentas estão disponíveis para otimizar a performance do app?

Divida pedidos complexos em tarefas menores

Para solicitações complexas e com várias etapas, use o modo agente. No entanto, se a abordagem do agente não for o que você espera, pode ser útil orientar o Gemini com uma série de comandos menores e sequenciais em vez de pedir tudo de uma vez. Essa abordagem oferece mais controle e permite verificar cada etapa antes de prosseguir para a próxima.

Como usar comandos sequenciais:

Instrução 1: o modelo de dados
Primeiro, crie uma classe de dados do Kotlin chamada User. Ele precisa ter três propriedades: id (um Int), name (uma String) e email (uma String).

Comando 2: a camada de rede
Agora, crie uma interface de API Retrofit chamada ApiService. Ele precisa de um único suspend fun chamado getUsers() que retorna um List<User>.

Comando 3: o gerenciamento de estado
Em seguida, escreva um UsersViewModel que use o ApiService como uma dependência. O UsersViewModel precisa expor um StateFlow de uma classe UiState sealed que pode representar os estados Loading, Success(users: List) e Error(message: String). Crie uma função no ViewModel para buscar os usuários e atualizar o estado. Escreva testes de unidade para as novas funcionalidades

Comando 4: a camada de interface
Por fim, escreva uma função do Jetpack Compose chamada UserListScreen que aceite o UiState como um parâmetro. Use uma instrução when para mostrar um CircularProgressIndicator para o estado de carregamento, um LazyColumn de nomes de usuários para o estado de sucesso e um elemento Text com a mensagem de erro para o estado de erro. Adicione testes que verifiquem a nova funcionalidade.

Crie uma tela do Jetpack Compose que busque uma lista de usuários de uma API JSON e os mostre em uma lista. Ele precisa ter um ViewModel que usa Retrofit e corrotinas, um repositório para processar a lógica de dados, uma classe de dados User e mostrar estados de carregamento e erro.

Gerenciar contexto

Uma parte importante de trabalhar com o Gemini no Android Studio é fornecer o contexto certo. Forneça snippets de código, conteúdo de arquivos e informações sobre a estrutura do projeto relevantes para receber as respostas mais úteis. Talvez seja necessário iterar para encontrar o equilíbrio certo: muita informação pode confundir o Gemini, enquanto pouca não fornece contexto suficiente para que ele ajude. Use os recursos disponíveis para dar ao Gemini acesso ao contexto necessário:

  • Anexe imagens para mostrar a interface que você está imaginando ou a arquitetura do app que está tentando entender.
  • Anexe arquivos para destacar partes relevantes da base de código.
  • Use arquivos .aiexclude para fazer o Gemini ignorar determinadas partes da base de código.
  • Use arquivos AGENTS.md para dar instruções específicas do projeto e compartilhar com sua equipe. Ao usar arquivos AGENTS.md, use cabeçalhos e formatação Markdown para deixar suas instruções claras.
  • Ao usar o modo agente, configure servidores MCP para ampliar o conhecimento e as capacidades do Gemini com o ambiente externo.

Pedir explicações

Se você não entender a resposta do Gemini no Android Studio, peça uma explicação. Essa é uma ótima maneira de aprender e verificar se a solução proposta é adequada para seu caso de uso. Se a resposta não for o que você esperava, talvez o Gemini esteja errado. Ao pedir uma explicação, ele terá a oportunidade de se corrigir.

Iterar as instruções

Assim como quando você trabalha com um colega, trabalhar com o Gemini no Android Studio às vezes exige uma troca de mensagens para esclarecer a tarefa e o resultado esperado. Se a resposta inicial do Gemini não for suficiente, responda com feedback e sugestões de melhoria. Se a resposta melhorar com base nas suas sugestões, incorpore essa sugestão no comando original atualizando a entrada na Biblioteca de comandos ou os arquivos AGENTS.md.