Visão geral da CLI do Android

A CLI do Android é uma interface de linha de comando que permite criar para Android com mais facilidade e eficiência usando qualquer ferramenta de sua escolha. Ele padroniza as competências principais de desenvolvimento para fluxos de trabalho com priorização de agentes, oferecendo um ponto de entrada para as ferramentas, habilidades e conhecimentos oficiais necessários para desenvolver de forma mais eficaz. Ela também pode simplificar a CI, a manutenção e qualquer outra automação programada para a natureza cada vez mais distribuída do desenvolvimento do Android.

Por exemplo, um agente ou script pode usar a CLI para realizar tarefas como as seguintes:

  • Automatizar a configuração do ambiente
  • Estruturar novos projetos com base em modelos
  • Gerenciar dispositivos virtuais diretamente do terminal
  • Testar o app com as Jornadas

A CLI do Android também dá aos seus agentes acesso a habilidades do Android e à base de conhecimento especializada do Android para ajudar a garantir que seus projetos apliquem padrões e práticas recomendadas do Android.

Instalar a CLI do Android

Para instalar a CLI do Android, siga estas etapas:

  1. Faça o download da CLI do Android.

  2. Para garantir que você está usando a versão mais recente, atualize a CLI do Android:

    android update
    

Para verificar se a CLI do Android já está instalada na sua máquina, execute which android ou command -v android: se ela retornar um caminho, significa que está instalada.

Configurar para agentes

Para ajudar os agentes a entender e usar a CLI do Android, execute init para instalar a skill android-cli:

android init

Dados coletados

A CLI do Android coleta dados sobre o uso básico da ferramenta. Estes são os dados que coletamos:

  • Invocações do comando android e subcomandos, por exemplo, android run e android create.
  • Nomes de argumentos ou opções não posicionais usados, por exemplo, --sdk ou --version.
  • Argumentos posicionais e valores de flags que são mapeados para um conjunto fixo e predefinido de opções do sistema gerenciadas pela CLI do Android. Por exemplo, coletamos nomes de modelos de emulador, como medium_phone e large_desktop, e nomes de agentes, como GEMINI, CLAUDE ou CODEX.
  • Rastreamentos de pilha e mensagens de exceção, em que as informações de identificação são anonimizadas antes da coleta para garantir a privacidade.

Confira alguns exemplos de dados que não coletamos:

  • Não coletamos respostas da CLI quando um comando é executado.
  • Não coletamos entradas criadas pelo usuário nem identificadores externos transmitidos para a CLI, como coordenadas específicas do Maven, caminhos de arquivos locais ou nomes de projetos personalizados. Por exemplo, se o comando android create --name=com.company.internal.app for executado, vamos registrar que android create foi executado usando o argumento --name, mas não armazenamos o valor com.company.internal.app.

Problemas conhecidos

  • O comando android emulator para Windows está desativado no momento.
  • No momento, não é possível fazer o download da CLI do Android no Windows PowerShell.

Se você encontrar algum problema ou quiser enviar feedback, informe um bug.

Configurar a CLI do Android

Crie um arquivo .androidrc para aplicar automaticamente flags e opções sempre que você invocar a CLI do Android. Salve o arquivo no seguinte local, dependendo do seu sistema operacional:

  • macOS e Linux: ~/.androidrc
  • Windows: %USERPROFILE%\.androidrc

Adicione as flags que você quer aplicar automaticamente ao arquivo, uma por linha.

Por exemplo, para fazer com que a CLI do Android use um SDK do Android específico por padrão sempre, adicione a flag --sdk ao seu arquivo:

--sdk=<path-to-sdk>

Opções globais

Essas são flags opcionais que podem ser usadas com outros comandos da CLI do Android.

-h, --help

Uso:android <command> -h

Descrição:mostra o manual de ajuda da ferramenta ou do comando específico em questão.

Exemplos:

  • android -h
  • android create -h

--sdk

Uso:android --sdk=<path-to-sdk> <command>

Descrição:o caminho para o SDK do Android que você quer usar no comando a seguir. Você pode usar a configuração --sdk para substituir temporariamente o SDK do Android padrão em vez de mudar as variáveis de ambiente globais sempre que quiser alternar. Para verificar qual SDK do Android você está usando por padrão, execute android info.

Exemplo: android --sdk=<path/to/sdk> sdk list

Comandos

Esta seção lista todos os comandos da CLI do Android e descreve o que eles fazem. Todos esses comandos precisam ser precedidos por android, por exemplo android create, android run e assim por diante. Os modificadores opcionais são incluídos entre colchetes [], e os argumentos obrigatórios não são.

create

Uso:android create [--dry-run] [--verbose] [--name=<application-name>] [--output=<dest-path>] [<template-name>]

Descrição:inicializa um novo projeto com base em um modelo. Para conferir as opções de modelo, execute android create -h.

Argumentos (obrigatórios):

  • -o, --output: o caminho do diretório do projeto de destino.

Opções:

  • --dry-run: simula todo o processo de criação do projeto sem salvar nenhum arquivo. Por exemplo, você pode fazer uma simulação para ver o que os diferentes modelos fazem antes de escolher um.
  • --verbose: ativa a saída detalhada, incluindo informações como quais arquivos estão sendo copiados do modelo.
  • --name=<application-name>: o nome do diretório do projeto. Se omitido, o diretório de saída será usado.
  • <template-name>: o nome do modelo para criar um novo projeto. Se omitido, empty-activity-agp-9 será usado.

Exemplo: android create --dry-run --verbose empty-activity-agp-9

create list

Uso:android create list

Descrição:lista todos os modelos disponíveis para criar um novo projeto.

describe

Uso:android describe [--project_dir=<project-directory>]

Descrição:analisa um projeto do Android para gerar metadados descritivos. Esse comando identifica e gera os caminhos para arquivos JSON que detalham a estrutura do projeto, incluindo destinos de build e os locais dos artefatos de saída correspondentes (por exemplo, arquivos APK). Essas informações permitem que outras ferramentas e comandos localizem artefatos de build com eficiência.

Opções:

  • --project_dir: o diretório do projeto a ser descrito. Se omitido, o diretório atual será usado.

Exemplo: android describe --project_dir=/path/to/your/project

docs

Uso:

  • android docs search <query>
  • android docs fetch <kb-url>

Descrição:o comando android docs é um processo de duas etapas para acessar a base de conhecimento do Android diretamente da CLI. Primeiro, pesquise a documentação relacionada à sua consulta usando o comando search. Os resultados da pesquisa vão incluir URLs especiais que começam com kb://. Depois, você pode usar esses URLs com o comando fetch para gerar os comandos de documentação no terminal.

Exemplos:

  • android docs search 'How do I improve my app performance?'
  • android docs fetch kb://android/topic/performance/overview

emulator create

Uso:android emulator create [--list-profiles] [--profile=<profile-name>]

Descrição:crie um dispositivo virtual.

Opções:

  • --list-profiles: liste os perfis de dispositivo que podem ser usados para criar um dispositivo.
  • --profile=<profile-name>: crie um dispositivo com o perfil especificado. Se isso for omitido, o perfil medium_phone será criado.

emulator list

Uso:android emulator list

Descrição:lista os dispositivos virtuais disponíveis.

emulator start

Uso:android emulator start <device-name>

Descrição:inicia o dispositivo virtual especificado.

Argumentos (obrigatórios):

  • <device-name>: o nome do dispositivo para iniciar (por exemplo, medium_phone). Use android emulator list para ver os dispositivos disponíveis.

Exemplo: android emulator start medium_phone

emulator stop

Uso:android emulator stop <device-serial-number>

Descrição:interrompe o dispositivo virtual especificado.

Argumentos (obrigatórios):

  • <device-serial-number>: o número de série do dispositivo a ser interrompido.

Exemplo: android emulator stop emulator-5554

info

Uso:android info

Descrição:mostra o caminho para o SDK do Android padrão usado. Para mudar o SDK do Android usado, use --sdk.

init

Uso:android init

Descrição:configure seu ambiente para agentes instalando a skill android-cli.

layout

Uso:android layout [--pretty] [--output] [--diff]

Descrição:retorna o layout da interface do app Android ativo (conectado por um dispositivo físico ou emulador) no formato JSON.

Opções:

  • -p, --pretty: formata a saída JSON com recuo e quebras de linha para facilitar a leitura.
  • -o, --output: especifica um local de arquivo para salvar a árvore de layout. Se omitido, o JSON será impresso diretamente em stdout.
  • -d, --diff: retorna uma lista apenas dos elementos de layout que mudaram desde o último snapshot interno (a última vez que o layout foi executado), em vez da árvore de layout completa.

Exemplo: android layout --output=./hierarchy.json

run

Uso:android run [--debug] [--activity=<activity-name>] [--device=<serial-number>] [--type=<param>] --apks=<apk-paths>

Descrição:implante um app Android em um dispositivo conectado ou emulador. Ele não executa nenhuma etapa de build. Você precisa fornecer os caminhos para os arquivos APK que quer instalar.

Argumentos (obrigatórios):

  • --apks: uma lista separada por vírgulas de caminhos para os arquivos APK que você quer instalar. O caminho é relativo ao local em que você está no sistema de arquivos.

Opções:

  • --activity: o nome da atividade a ser iniciada assim que o APK for instalado. Se houver várias atividades, especifique uma para iniciar.
  • --debug: implanta o app no modo de depuração. Depois de executar o app no modo de depuração, conecte o depurador em uma IDE, como o Android Studio, ou uma ferramenta de linha de comando para iniciar a depuração.
  • --device: o número de série do dispositivo de destino ou emulador. Só é necessário se vários dispositivos estiverem conectados. Para encontrar os números de série dos dispositivos, execute adb devices.
  • --type: o tipo de componente a ser iniciado. Use isso se quiser iniciar um serviço em segundo plano diretamente em vez de uma atividade de UI. Tipos compatíveis:
    • ACTIVITY
    • WATCH_FACE
    • TILE
    • COMPLICATION
    • DECLARATIVE_WATCH_FACE

Exemplos:

  • android run --apks=app/build/outputs/apk/debug/app-debug.apk: implanta um único APK no dispositivo padrão.
  • android run --apks=base.apk,density-hdpi.apk,lang-en.apk: implanta vários APKs no dispositivo padrão.
  • android run --apks=app-debug.apk --type=SERVICE --activity=.sync.DataSyncService: teste um serviço sem uma atividade.
  • android run --apks=app-debug.apk --device=emulator-5554: implanta o APK em um dispositivo específico.

screen capture

Uso:android screen capture [--output] [--annotate]

Descrição:captura uma captura de tela do dispositivo conectado.

Opções:

  • -o, --output: especifica um local de arquivo para salvar a captura de tela. Se omitido, os dados PNG brutos serão impressos diretamente em stdout.
  • -a, --annotate: desenha caixas delimitadoras rotuladas ao redor de todos os elementos da interface detectados na imagem para usar com o comando resolve.

Exemplo: android screen capture --output=ui.png

screen resolve

Uso:android screen resolve --screenshot=<path> --string=<string>

Descrição:traduz os rótulos visuais de uma captura de tela anotada, capturada usando screen capture, em coordenadas de tela reais (x, y). Útil para criar scripts de cliques em elementos sem precisar calcular manualmente as posições deles.

Sinalizações:

  • --screenshot: o caminho para a captura de tela anotada.
  • --string: uma string que inclui pelo menos um marcador de posição correspondente a um rótulo de elemento da interface no formato #<number>. A parte #<number> será substituída pelas coordenadas da tela.

Exemplo:

Se o marcador 5 estiver nas coordenadas (500, 1000), o comando

android screen resolve --screenshot=ui.png --string="input tap #5"

retorna a saída

input tap 500 1000

sdk install

Uso:android sdk install <package[@version]> [--beta] [--canary] [--force]

Descrição:instala os pacotes do SDK especificados.

Argumentos (obrigatórios):

  • package[@version]: uma lista de pacotes a serem instalados separada por espaços. Se uma versão não for especificada, a mais recente do pacote no canal (por padrão, o canal estável) será instalada.

Opções:

  • --beta: inclui pacotes Beta.
  • --canary: inclui pacotes canary.
  • --force: força o downgrade para uma versão mais antiga.

Exemplos:

  • android sdk install platforms/android-34 build-tools/34.0.0: instale as versões mais recentes dos pacotes SDK do Android Platform 34 e SDK Built Tools 34.0.0 do canal estável.
  • android sdk install platforms/android-34@2 - Instale a versão 2 do pacote SDK do Android Platform 34.
  • android sdk install --canary system-images/android-35/google_apis/x86_6 - Instale a versão mais recente da imagem do sistema Android 35 no canal canary.
  • android sdk install --force platforms/android-33@1: reverta para a versão 1 do pacote SDK do Android Platform 33 do canal estável.

sdk list

Uso:android sdk list <package-pattern>

Descrição:lista os pacotes do SDK instalados e disponíveis.

Argumentos (obrigatórios):

  • <package-pattern>: filtra pacotes por padrão. Aceita expressões regulares.

Opções:

  • --all: mostra todos os pacotes instalados e disponíveis.
  • --all-versions: mostra todas as versões de cada pacote.
  • --beta: inclui pacotes Beta.
  • --canary: inclui pacotes canary.

sdk remove

Uso:android sdk remove <package-name>

Descrição:remove um pacote do SDK.

Argumentos (obrigatórios):

  • <package-name>: o nome do pacote a ser removido.

Exemplo: android sdk remove build-tools/36.1.0

sdk update

Uso:android sdk update [--beta] [--canary] [<package-name>]

Descrição:atualiza um ou todos os pacotes para a versão mais recente no canal (por padrão, o canal estável). Se você não especificar um pacote, todos serão atualizados.

Opções:

  • <package-name>: o nome do pacote a ser atualizado.
  • --beta: inclui pacotes Beta.
  • --canary: inclui pacotes canary.
  • --force: força o downgrade para uma versão mais antiga.

Exemplos:

  • android sdk update: verifica e instala atualizações para tudo no seu SDK.
  • android sdk update build-tools/34.0.0 - Atualize o pacote SDK do Android Build Tools 34.0.0 para a versão mais recente no canal estável.
  • android sdk update --canary platforms/android-35: atualize o pacote Android SDK Platforms 35 para a versão mais recente no canal canary.

skills add

As habilidades do Android são instruções especiais criadas para ajudar os agentes a entender e executar melhor padrões específicos que seguem as práticas recomendadas e orientações sobre o desenvolvimento do Android. Para saber mais, consulte Introdução às habilidades do Android.

Uso:android skills add [--all] [--agent=<agent-name>] [--skill=<skill-name>]

Descrição:instala habilidades do Android nos diretórios de habilidades de todos os agentes detectados. Se você não tiver diretórios de agentes e não especificar agentes específicos, as habilidades serão instaladas para o Gemini e o Antigravity em ~/.gemini/antigravity/skills. Se você já tiver as habilidades do Android instaladas, o skills add vai atualizar para a versão mais recente.

Opções:

  • --all: instale ou atualize todas as habilidades do Android de uma só vez. Se for omitido (e --skill não for especificado), apenas a habilidade android-cli será instalada.
  • --agent: uma lista separada por vírgulas de agentes para instalar ou atualizar a skill. Se for omitido, a habilidade será instalada para todos os agentes detectados.
  • --skill: o nome da skill que você quer instalar ou atualizar. Se for omitido (e --all não for especificado), apenas a skill android-cli será instalada ou atualizada.

Exemplo: android skills add --agent='gemini' edge-to-edge

skills find

Uso:android skills find <string>

Descrição:encontra habilidades que correspondem a uma determinada string.

Argumentos (obrigatórios):

  • string: string que corresponde a uma descrição de habilidade.

Exemplo: android skills find 'performance'

skills list

Uso:android skills list [--long]

Descrição:lista as habilidades disponíveis.

Opções:

  • --long - Mostra mais informações sobre cada habilidade, incluindo a descrição dela e para quais agentes ela já está instalada.

skills remove

Uso:android skills remove [--agent] --skill=<skill-name>

Descrição:remove uma habilidade. Se você não especificar agentes específicos, a habilidade será removida de todos eles.

Argumentos (obrigatórios):

  • --skill: o nome da habilidade a ser removida.

Opções:

  • --agent: uma lista separada por vírgulas de agentes para remover a habilidade. Se omitido, a habilidade será removida de todos os agentes.

Exemplo: android skills remove --agent='gemini' --skill=edge-to-edge

studio check

Os comandos studio permitem que você ou seu agente de IA interajam com instâncias ativas do Android Studio. Ao se conectar a uma instância em execução, você pode usar os recursos do ambiente de desenvolvimento integrado para analisar arquivos, encontrar declarações e usos de símbolos, renderizar prévias do Compose e pesquisar versões de dependências.

Uso:android studio check

Descrição:verifica o status das instâncias do Android Studio em execução e lista os projetos abertos. Execute este comando primeiro para verificar a conexão entre a CLI e a IDE e para selecionar o PID e o projeto a que você quer se conectar, se houver vários.

Exemplo de saída:

Se estiver conectado, a saída vai listar o PID da instância em execução do Android Studio, a versão e o status dos projetos abertos:

pid: 32942
version: Android Studio Quail
Projects:
    READY     MyApplication /Users/username/AndroidStudioProjects/MyApplication

studio analyze-file

Uso:android studio analyze-file [--pid=<pid>] [--project=<project>] <path>

Descrição:analisa um arquivo no Android Studio em busca de erros, avisos e lints usando o mecanismo de inspeção integrado do ambiente de desenvolvimento integrado.

Argumentos (obrigatórios):

  • <path>: o caminho do arquivo Kotlin ou Java a ser analisado.

Opções:

  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar o comando analyze-file em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio analyze-file \
  --project=MyApplication \
  /Users/username/AndroidStudioProjects/MyApplication/app/src/main/java/com/example/myapp/MainActivity.kt

studio find-declaration

Uso:android studio find-declaration [--short] [--context-file=<path>] [--pid=<pid>] [--project=<project>] <symbol>

Descrição:encontra o local exato da declaração de um símbolo (classe, método, variável, campo, constante ou recurso do Android) em todo o projeto usando a resolução semântica.

Argumentos (obrigatórios):

  • <symbol>: o nome do símbolo de código para encontrar a declaração.

Opções:

  • --context-file=<path>: caminho opcional para um arquivo que contém uma referência ao símbolo. Fornecer um arquivo de contexto ajuda a resolver símbolos ambíguos ou sobrecarregados, fornecendo importações e escopo.
  • --short: simplifica a saída para mostrar apenas o local do arquivo e a correspondência de linha.
  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar o comando find-declaration em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio find-declaration --short HotelDetailScreen

studio find-usages

Uso:android studio find-usages [--short] [--pid=<pid>] [--project=<project>] <symbol>

Descrição:encontra todas as referências e usos de um símbolo em todo o projeto usando a análise semântica.

Argumentos (obrigatórios):

  • <symbol>: o nome do símbolo para encontrar usos.

Opções:

  • --short: simplifica a saída para mostrar apenas os locais de arquivos correspondentes.
  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar esse comando em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio find-usages --short HotelDetailScreen

studio open-file

Uso:android studio open-file [--pid=<pid>] [--project=<project>] <path>

Descrição:abre um arquivo diretamente na janela do editor ativo do Android Studio.

Argumentos (obrigatórios):

  • <path>: o caminho do arquivo a ser aberto. Pode ser especificado em relação ao diretório raiz do projeto ou como um caminho absoluto.

Opções:

  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar o comando open-file em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio open-file app/src/main/java/com/example/myapp/ui/DetailScreen.kt

studio render-compose-preview

Uso:android studio render-compose-preview [--print-semantics] [--output-image-file=<filename>] [--pid=<pid>] [--project=<project>] <path> <composable>

Descrição:renderiza uma prévia da interface do Jetpack Compose e, opcionalmente, retorna a árvore de semântica de layout dela. Isso é útil para testes visuais ou para permitir que agentes de IA trabalhem com o layout da interface.

Argumentos (obrigatórios):

  • <path>: o caminho para o arquivo Kotlin que contém a prévia do Compose.
  • <composable>: o nome da função de visualização combinável (marcada com @Preview).

Opções:

  • --output-image-file=<filename>: especifica o nome do arquivo em que a imagem PNG renderizada resultante será gravada. Se omitido, um arquivo temporário será criado.
  • --print-semantics: se for "true", vai imprimir a árvore de semântica de acessibilidade da visualização do Compose renderizada no formato JSON. Isso permite que os agentes analisem a estrutura e os elementos interativos da interface.
  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar o comando render-compose-preview em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio render-compose-preview \
  --output-image-file=preview_hotel.png \
  --print-semantics \
  app/src/main/java/com/example/myapp/ui/DetailScreen.kt \
  HotelDetailScreenPreview

studio version-lookup

Uso:android studio version-lookup [--pid=<pid>] [--project=<project>] <artifacts...>

Descrição:pesquisa as versões mais recentes disponíveis de dependências comuns, plataformas Android e ferramentas do SDK em repositórios como o Google Maven. Isso oferece uma alternativa programática à verificação manual da versão da dependência.

Argumentos (obrigatórios):

  • <artifacts...>: uma lista de identificadores separada por espaços. É possível consultar vários artefatos em um único comando. Os identificadores compatíveis incluem:
    • Bibliotecas Maven: a notação groupId:artifactId (por exemplo, androidx.window:window).
    • Plug-ins do Gradle: o ID do plug-in (por exemplo, com.android.application).
    • Palavras-chave:
      • gradle (ferramenta de build do Gradle)
      • studio (Android Studio)
      • agp (plug-in do Android para Gradle)
      • ndk (Android NDK)
      • sdk (SDK do Android)
      • emulator (emulador do Android)
      • adb (Android Debug Bridge)
      • compose (lista de materiais do Jetpack Compose)
      • kotlin (tempo de execução e compilador do Kotlin)
      • android (versões do SO Android)
      • platform-tools (Android SDK Platform-Tools)
      • cmdline-tools (ferramentas de linha de comando do SDK do Android)
      • build-tools (Android SDK Build-Tools)

Opções:

  • --pid=<pid>: o PID da instância específica do Android Studio a ser conectada, se houver várias.
  • --project=<project>: o nome do projeto aberto no Android Studio para consultar, se houver vários. Se você executar o comando version-lookup em um diretório de projeto, esse projeto será usado por padrão.

Exemplo:

android studio version-lookup \
  androidx.compose.ui:ui \
  com.android.application \
  agp \
  kotlin

update

Uso:android update

Descrição:atualize a CLI do Android.

-V, --version

Descrição:mostra a versão atual da CLI do Android.