Descripción general de la CLI de Android

La CLI de Android es una interfaz de línea de comandos que te permite compilar para Android de manera más fácil y eficiente con cualquier herramienta que elijas. Estandariza las competencias de desarrollo principales para los flujos de trabajo centrados en el agente, lo que proporciona un punto de entrada a las herramientas, las habilidades y el conocimiento oficiales que necesitas para desarrollar de manera más eficaz. También puede optimizar la CI, el mantenimiento y cualquier otra automatización con secuencias de comandos para la naturaleza cada vez más distribuida del desarrollo de Android.

Por ejemplo, un agente o una secuencia de comandos pueden usar la CLI para automatizar la configuración del entorno, generar nuevos proyectos a partir de plantillas y administrar dispositivos virtuales directamente desde tu terminal. También les brinda a tus agentes acceso a las habilidades de Android y a la base de conocimiento de Android especializada para garantizar que tus proyectos apliquen los patrones y las prácticas recomendadas de Android.

Instala la CLI de Android

Para instalar la CLI de Android, sigue estos pasos:

  1. Descarga la CLI de Android.

  2. Para asegurarte de usar la versión más reciente, actualiza la CLI de Android:

    android update
    

Para verificar si la CLI de Android ya está instalada en tu máquina, ejecuta which android o command -v android. Si devuelve una ruta de acceso, significa que está instalada.

Configuración para agentes

Para ayudar a los agentes a comprender y usar la CLI de Android, ejecuta init para instalar la habilidad de android-cli:

android init

Problemas conocidos

  • Actualmente, el comando android emulator para Windows está inhabilitado.

Opciones globales

Estas son marcas opcionales que puedes usar con otros comandos de la CLI de Android.

-h, --help

Uso: android <command> -h

Descripción: Muestra el manual de ayuda de la herramienta o el comando específico en cuestión.

Ejemplos:

  • android -h
  • android create -h

--sdk

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

Descripción: Es la ruta de acceso al SDK de Android que deseas usar para el comando que sigue. Puedes usar el parámetro de configuración --sdk para anular temporalmente el SDK de Android predeterminado en lugar de cambiar tus variables de entorno globales cada vez que quieras cambiar. Para verificar qué SDK de Android usas de forma predeterminada, ejecuta android info.

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

Comandos

En esta sección, se enumeran todos los comandos de la CLI de Android y se describe su función. Todos estos comandos deben ir precedidos por android, por ejemplo, android create, android run, etcétera. Los modificadores opcionales se incluyen entre corchetes [], y los argumentos obligatorios no.

create

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

Descripción: Inicializa un proyecto nuevo a partir de una plantilla. Para ver las opciones de plantilla, ejecuta android create -h.

Argumentos (obligatorios):

  • -o, --output: Es la ruta de acceso al directorio del proyecto de destino.

Opciones:

  • --dry-run: Simula todo el proceso de creación del proyecto sin guardar ningún archivo. Por ejemplo, puedes hacer una ejecución de prueba para ver qué hacen las diferentes plantillas antes de elegir una.
  • --verbose: Habilita la salida detallada, incluida información como los archivos que se copian de la plantilla.
  • --name=<application-name>: Es el nombre del directorio del proyecto. Si se omite, se usa el directorio de salida.
  • <template-name>: Es el nombre de la plantilla a partir de la cual se creará un proyecto nuevo. Si se omite, se usa empty-activity-agp-9.

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

create list

Uso: android create list

Descripción: Enumera todas las plantillas disponibles para crear un proyecto nuevo.

describe

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

Descripción: Analiza un proyecto de Android para generar metadatos descriptivos. Este comando identifica y muestra las rutas de acceso a los archivos JSON que detallan la estructura del proyecto, incluidos los destinos de compilación y las ubicaciones de los artefactos de salida correspondientes (por ejemplo, archivos APK). Esta información permite que otras herramientas y comandos ubiquen los artefactos de compilación de manera eficiente.

Opciones:

  • --project_dir: Es el directorio del proyecto que se describirá. Si se omite, se usa el directorio actual.

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

docs

Uso:

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

Descripción: El comando android docs es un proceso de dos pasos para acceder a la base de conocimiento de Android directamente desde la CLI. Primero, busca documentación relacionada con tu consulta usando el comando search. Los resultados de la búsqueda incluirán URLs especiales que comienzan con kb://, que luego podrás usar con el comando fetch para generar los comandos de documentación en la terminal.

Ejemplos:

  • 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>]

Descripción: Crea un dispositivo virtual.

Opciones:

  • --list-profiles: Enumera los perfiles de dispositivos que se pueden usar para crear un dispositivo.
  • --profile=<profile-name>: Crea un dispositivo con el perfil especificado. Si se omite, se creará el perfil de medium_phone.

emulator list

Uso: android emulator list

Descripción: Enumera los dispositivos virtuales disponibles.

emulator start

Uso: android emulator start <device-name>

Descripción: Inicia el dispositivo virtual especificado.

Argumentos (obligatorios):

  • <device-name>: Es el nombre del dispositivo que se iniciará (por ejemplo, medium_phone). Usa android emulator list para ver los dispositivos disponibles.

Ejemplo: android emulator start medium_phone

emulator stop

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

Descripción: Detiene el dispositivo virtual especificado.

Argumentos (obligatorios):

  • <device-serial-number>: Es el número de serie del dispositivo que se detendrá.

Ejemplo: android emulator stop emulator-5554

info

Uso: android info

Descripción: Muestra la ruta de acceso al SDK de Android predeterminado que se usa. Para cambiar el SDK de Android que se usa, usa --sdk.

init

Uso: android init

Descripción: Configura tu entorno para los agentes instalando la habilidad android-cli.

layout

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

Descripción: Devuelve el diseño de la IU de la app para Android activa (conectada a través de un dispositivo físico o un emulador) en formato JSON.

Opciones:

  • -p, --pretty: Da formato al resultado JSON con sangría y saltos de línea para que sea legible.
  • -o, --output: Especifica la ubicación de un archivo para guardar el árbol de diseño. Si se omite, el JSON se imprime directamente en stdout.
  • -d, --diff: Devuelve una lista solo de los elementos de diseño que cambiaron desde la última instantánea interna (la última vez que se ejecutó el diseño), en lugar del árbol de diseño completo.

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

skills add

Las habilidades de Android son instrucciones especiales diseñadas para ayudar a los agentes a comprender y ejecutar mejor patrones específicos que siguen las prácticas recomendadas y la orientación sobre el desarrollo de Android. Para obtener más información, consulta Introducción a las habilidades de Android.

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

Descripción: Instala habilidades de Android en los directorios de habilidades de todos los agentes detectados. Si no tienes ningún directorio de agentes existente y no especificas agentes particulares, las habilidades se instalarán para Gemini y Antigravity en ~/.gemini/antigravity/skills.

Opciones:

  • --all: Agrega todas las habilidades de Android a la vez. Si se omite (y no se especifica --skill), solo se instalará la habilidad android-cli.
  • --agent: Es una lista separada por comas de los agentes para los que se instalará la habilidad. Si se omite, la skill se instalará para todos los asistentes detectados.
  • --skill: Es el nombre de la skill que deseas instalar. Si se omite (y no se especifica --all), solo se instalará la habilidad android-cli.

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

skills find

Uso: android skills find <string>

Descripción: Encuentra habilidades que coincidan con una cadena determinada.

Argumentos (obligatorios):

  • string: Es una cadena que coincide con la descripción de una habilidad.

Ejemplo: android skills find 'performance'

skills list

Uso: android skills list [--long]

Descripción: Enumera las habilidades disponibles.

Opciones:

  • --long: Genera información adicional para cada habilidad, incluida la descripción de la habilidad y los agentes para los que ya está instalada.

skills remove

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

Descripción: Quita una habilidad. Si no especificas agentes en particular, la habilidad se quitará para todos los agentes.

Argumentos (obligatorios):

  • --skill: Es el nombre de la skill que se quitará.

Opciones:

  • --agent: Es una lista separada por comas de los agentes de los que se quitará la habilidad. Si se omite, se quitará la habilidad para todos los agentes.

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

screen capture

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

Descripción: Captura una captura de pantalla del dispositivo conectado.

Opciones:

  • -o, --output: Especifica la ubicación del archivo en el que se guardará la captura de pantalla. Si se omite, los datos PNG sin procesar se imprimirán directamente en stdout.
  • -a, --annotate: Dibuja cuadros de límite etiquetados alrededor de todos los elementos de la IU detectados en la imagen para usarlos con el comando resolve.

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

screen resolve

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

Descripción: Traduce las etiquetas visuales de una captura de pantalla anotada, capturada con screen capture, en coordenadas de pantalla reales (x, y). Es útil para crear secuencias de comandos de clics en elementos sin tener que calcular manualmente sus posiciones.

Marcas:

  • --screenshot: Es la ruta de acceso a la captura de pantalla anotada.
  • --string: Es una cadena que incluye al menos un marcador de posición correspondiente a una etiqueta de elemento de la IU en el formato #<number>. La parte #<number> se reemplazará por las coordenadas de la pantalla.

Ejemplo:

Si la etiqueta 5 se encuentra en las coordenadas (500, 1000), el comando

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

devuelve el resultado

input tap 500 1000

sdk install

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

Descripción: Instala los paquetes del SDK especificados.

Argumentos (obligatorios):

  • package[@version]: Es una lista de paquetes para instalar, separados por espacios. Si no se especifica una versión, se instala la versión más reciente del paquete en el canal (de forma predeterminada, el canal estable).

Opciones:

  • --beta: Incluye paquetes beta.
  • --canary: Incluye paquetes de versión canary.
  • --force: Fuerza la degradación a una versión anterior.

Ejemplos:

  • android sdk install platforms/android-34 build-tools/34.0.0: Instala las versiones más recientes de los paquetes de SDK de Android Platform 34 y SDK Build Tools 34.0.0 desde el canal estable.
  • android sdk install platforms/android-34@2: Instala la versión 2 del paquete de la plataforma del SDK de Android 34.
  • android sdk install --canary system-images/android-35/google_apis/x86_6 - Instala la versión más reciente de la imagen del sistema de Android 35 desde el canal de Canary.
  • android sdk install --force platforms/android-33@1: Revierte a la versión 1 del paquete de la plataforma del SDK de Android 33 del canal estable.

sdk list

Uso: android sdk list <package-pattern>

Descripción: Enumera los paquetes del SDK instalados y disponibles.

Argumentos (obligatorios):

  • <package-pattern>: Filtra paquetes por patrón. Admite expresiones regulares.

Opciones:

  • --all: Muestra todos los paquetes instalados y disponibles.
  • --all-versions: Muestra todas las versiones de cada paquete.
  • --beta: Incluye paquetes beta.
  • --canary: Incluye paquetes de versión canary.

sdk remove

Uso: android sdk remove <package-name>

Descripción: Quita un paquete del SDK.

Argumentos (obligatorios):

  • <package-name>: Es el nombre del paquete que se quitará.

Ejemplo: android sdk remove build-tools/36.1.0

run

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

Descripción: Implementa una app para Android en un dispositivo conectado o emulador. No realiza ningún paso de compilación; debes proporcionar las rutas de acceso a los archivos APK que deseas instalar.

Argumentos (obligatorios):

  • --apks: Es una lista separada por comas de las rutas de acceso a los archivos APK que deseas instalar. La ruta es relativa a la ubicación actual en el sistema de archivos.

Opciones:

  • --activity: Es el nombre de la actividad que se iniciará una vez que se instale el APK. Si hay varias actividades, debes especificar una para iniciarla inicialmente.
  • --debug: Implementa la app en modo de depuración. Después de ejecutar la app en modo de depuración, debes conectar el depurador desde un IDE, como Android Studio, o una herramienta de línea de comandos para comenzar la depuración.
  • --device: Es el número de serie del dispositivo o emulador de destino. Solo es necesario si hay varios dispositivos conectados. Para encontrar los números de serie de los dispositivos, ejecuta adb devices.
  • --type: Es el tipo de componente para comenzar. Usa este método si quieres iniciar un servicio en segundo plano directamente en lugar de una actividad de IU. Tipos admitidos:
    • ACTIVITY
    • WATCH_FACE
    • TILE
    • COMPLICATION
    • DECLARATIVE_WATCH_FACE

Ejemplos:

  • android run --apks=app/build/outputs/apk/debug/app-debug.apk: Implementa un solo APK en el dispositivo predeterminado.
  • android run --apks=base.apk,density-hdpi.apk,lang-en.apk: Implementa varios APKs en el dispositivo predeterminado.
  • android run --apks=app-debug.apk --type=SERVICE --activity=.sync.DataSyncService: Prueba un servicio sin una actividad.
  • android run --apks=app-debug.apk --device=emulator-5554: Implementa el APK en un dispositivo específico.

sdk update

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

Descripción: Actualiza uno o todos los paquetes a la versión más reciente en el canal (de forma predeterminada, el canal estable). Si no especificas un paquete, se actualizarán todos.

Opciones:

  • <package-name>: Es el nombre del paquete que se actualizará.
  • --beta: Incluye paquetes beta.
  • --canary: Incluye paquetes de versión canary.
  • --force: Fuerza la degradación a una versión anterior.

Ejemplos:

  • android sdk update: Busca e instala actualizaciones para todo lo que se encuentra en tu SDK.
  • android sdk update build-tools/34.0.0: Actualiza el paquete de SDK de Android Build Tools 34.0.0 a la versión más reciente del canal estable.
  • android sdk update --canary platforms/android-35: Actualiza el paquete de Android SDK Platforms 35 a la versión más reciente en el canal canary.

update

Uso: android update

Descripción: Actualiza la CLI de Android.

-V, --version

Descripción: Muestra la versión actual de la CLI de Android.