Device Run de Developer Device Platform para ejecutables de Android

En esta guía, se describe cómo ejecutar un archivo ejecutable de Android independiente con la CLI de gcloud beta device-run y encontrar los resultados en Google Cloud console. Se supone que tienes una cuenta y un proyecto de Google Cloud .

Si migras de Firebase Test Lab a Developer Device Platform, consulta nuestra guía de migración, la traducción de comandos y marcas, y la habilidad de migración para agentes de IA.

Para usar Google Cloud CLI, deberás proporcionar el ID del proyecto de Google Cloud . Consulta gcloud beta device-run para obtener un resumen de los comandos.

Antes de comenzar

En estos pasos, se da por sentado que ya hiciste lo siguiente:

  1. Crear un proyecto de Google Cloud
  2. Configura Developer Device Platform siguiendo la guía de inicio rápido.
  3. Autenticado con gcloud en la terminal.
  4. Revisaste la descripción general de Device Run para obtener información general.
  5. Preparaste un ejecutable de Android independiente (como un objeto binario de C++ compilado, un ejecutor de comparativas o una secuencia de comandos de shell).

Paso 1: Configura la ejecución de tu ejecutable

Opciones para ejecutables de Android

  • Varios dispositivos: Para ejecutar el mismo archivo ejecutable en varios dispositivos, proporciona la marca --device con varios IDs de dispositivo separados por comas, como --device shiba-34,tokay-36, o con varias marcas --device, cada una de las cuales especifica un ID de dispositivo diferente (por ejemplo, --device shiba-34 --device tokay-36).
  • Envía archivos al dispositivo: Envía archivos adicionales (como pesos de modelos de AA, entradas de prueba o bibliotecas compartidas de .so) al dispositivo antes de la ejecución con --other-files-to-push=SOURCE=DEST,.... SOURCE admite rutas de acceso locales y de Cloud Storage (gs://...), y DEST es la ruta de acceso de destino en el dispositivo.
  • Extraer archivos del dispositivo: Extrae los archivos o directorios generados del dispositivo después de que se complete la ejecución con --paths-to-pull=DEVICE_PATH,....
  • Bucket de Cloud Storage personalizado: Especifica un nombre de bucket de Cloud Storage existente (sin un esquema o una ruta de acceso gs://) con --bucket-name=. Si no especificas un bucket, Google Cloud CLI usa o crea un bucket predeterminado llamado PROJECT_ID-devicerun.
  • Reintentos de pruebas inestables: Establece la cantidad máxima de intentos por trabajo o fragmento para controlar la inestabilidad: --flaky-test-attempts=3 (el valor predeterminado es 1 intento).
  • Entorno y diagnóstico del dispositivo: Configura la orientación del dispositivo (--orientation=portrait o landscape), la configuración regional (--locale=en-US), la ubicación GPS simulada (--coordinates=LATITUDE,LONGITUDE), la grabación de video de la pantalla (--video=always o on-failure), la recopilación de dumpsys (--dumpsys=always o on-failure) o la recopilación de bugreport (--bugreport=always o on-failure).
  • Etiquetas: Adjunta etiquetas de par clave-valor definidas por el usuario a la sesión con --labels=KEY=VALUE,....
  • Argumentos ejecutables: Pasa argumentos de línea de comandos al ejecutable con --executable-args=ARG,... como una lista separada por comas o repitiendo la marca. Cada elemento se convierte en un argumento, por lo que debes reescribir las líneas de comandos separadas por espacios en formato separado por comas (por ejemplo, --executable-args="--input=a.file,--threads=4"). Para pasar un argumento que contenga una coma, agrega el prefijo ^SEP^ al valor para especificar un separador diferente (por ejemplo, --executable-args="^;^--shape=1,224,224,3;--threads=4").
  • Variables de entorno: Establece variables de entorno para el proceso ejecutable en el dispositivo con --executable-env-vars=KEY=VALUE,... (por ejemplo, --executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib).
  • Tiempo de espera del ejecutable: Limita la duración de la ejecución del ejecutable: --executable-timeout=10m (el rango válido es de 1m a 3h y el valor predeterminado es 5m, sin incluir el tiempo de preparación y limpieza del dispositivo).

Ejecuciones síncronas y asíncronas

De forma predeterminada, el comando de envío es bloqueante (síncrono). Esperará a que se complete el ejecutable y, luego, imprimirá una tabla de resumen de los resultados.

Para enviar la sesión y regresar de inmediato después de subir archivos a Cloud Storage, agrega la marca --async:

gcloud beta device-run sessions submit android-executable \
  --device shiba-35 \
  --executable ./MY_EXECUTABLE \
  --async

Esto devuelve un ID de sesión de inmediato. Luego, puedes esperar a que se complete con el comando sessions wait:

gcloud beta device-run sessions wait SESSION_ID

El comando se bloqueará hasta que se complete el trabajo.

Varios dispositivos

Para ejecutar el mismo archivo ejecutable en varios dispositivos, proporciona la marca --device con varios IDs de dispositivo separados por comas o con varias marcas --device, cada una con un ID de dispositivo diferente.

gcloud beta device-run sessions submit android-executable \
  --device shiba-34,tokay-36 \
  --executable ./MY_EXECUTABLE

O bien:

gcloud beta device-run sessions submit android-executable \
  --device shiba-34 \
  --device tokay-36 \
  --executable ./MY_EXECUTABLE

Tiempo de espera del ejecutable

Limita la duración de la ejecución del archivo ejecutable:

gcloud beta device-run sessions submit android-executable \
  --device shiba-35 \
  --executable ./MY_EXECUTABLE \
  --executable-timeout=10m

El rango válido es de 1m a 3h para las ejecuciones, y el valor predeterminado es 5m.

Paso 2: Elegir dispositivos

Con la CLI de device-run, los ejecutables de Android se pueden ejecutar en los dispositivos físicos y virtuales disponibles. Para ver la lista completa de dispositivos disponibles, visita el catálogo de dispositivos interactivo o ejecuta lo siguiente:

gcloud beta device-run devices list

Resultado de ejemplo:

ID        MAKE    NAME     MODEL FORM      OS_VERSION CAPACITY  AVAILABILITY  PRODUCTS
tegu-35   Google  Pixel 9a tegu  PHYSICAL  35         MEDIUM    LOW           Automation, Streaming
tokay-34  Google  Pixel 9  tokay PHYSICAL  34         HIGH      HIGH          Automation, Streaming

Consulta el catálogo de dispositivos para obtener información sobre cómo filtrar esta lista. Para orientar la ejecución a un dispositivo específico, usa su ID correspondiente (por ejemplo, tegu-35) en el comando de envío.

Paso 3: Ejecuta tu archivo ejecutable

Envía un ejecutable de Android independiente.

Para ejecutar un archivo ejecutable independiente (como un objeto binario de C++ compilado, un ejecutor de comparativas de aprendizaje automático integrado en el dispositivo, como LiteRT, o una secuencia de comandos de shell) directamente en un dispositivo Android sin empaquetarlo en un APK, usa el comando sessions submit android-executable.

Estas marcas son obligatorias para los ejecutables de Android:

  • Dispositivo: Especifica un dispositivo con --device: --device shiba-35
  • Ejecutable: Especifica la ruta de acceso local o de Cloud Storage al ejecutable con --executable: --executable /path/to/my_executable

Para ejecutar el archivo, emite un comando similar al siguiente, con tus propios IDs de dispositivo y ruta de acceso del archivo ejecutable:

gcloud beta device-run sessions submit android-executable \
  --device shiba-34 \
  --executable /path/to/my_executable \
  --executable-args="--input=/data/local/tmp/file.name,--threads=4" \
  --other-files-to-push=/path/to/model.tflite=/data/local/tmp/model.tflite \
  --paths-to-pull=/data/local/tmp/output

La carpeta del informe de resultados del trabajo se puede encontrar en una ruta de acceso de Cloud Storage, como gs://BUCKET_NAME/automation/sessions/SESSION_ID/. Consulta el resultado del comando para obtener el vínculo, que se parece a lo siguiente: https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.

Paso 4: Explora y administra tu ejecución ejecutable

Para el modo asíncrono y síncrono del comando sessions submit android-executable, puedes usar el comando sessions describe para consultar el estado del trabajo durante la ejecución o para obtener el resultado después de que se complete:

gcloud beta device-run sessions describe SESSION_ID

En el resultado, se resumen los resultados de la ejecución y se vinculan a los resultados en la consola deGoogle Cloud . Por ejemplo:

Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed

Usa el siguiente comando para enumerar todas tus sesiones en ejecución y completadas:

gcloud beta device-run sessions list

Recibirás un resultado que contiene la lista de sesiones de tu proyecto, similar al siguiente:

SESSION_ID                                    START_TIME                STATE
session-4825e153                              2026-07-28T16:38:43.155Z  DONE
session-813ca602                              2026-07-28T22:40:32.415Z  DONE
session-67cd0570                              2026-07-16T08:25:55.474Z  DONE
session-17cc299c                              2026-07-14T14:31:33.649Z  DONE
session-911d0763                              2026-07-09T00:39:02.051Z  DONE
session-4e943fea                              2026-07-15T23:08:32.252Z  DONE
session-0132e458                              2026-08-20T18:33:19.751Z  DONE
session-1077f07b                              2026-07-28T22:35:43.848Z  DONE
session-71b054c6                              2026-07-15T01:15:41.643Z  DONE
session-4f8b2e45                              2026-08-06T23:11:56.161Z  DONE

El comando sessions list admite todas las opciones de marcas estándar de Google Cloud CLI. Por ejemplo:

gcloud beta device-run sessions list --limit 5

Esto genera resultados similares a los siguientes:

SESSION_ID                            START_TIME                STATE
session-4825e153                      2026-07-28T16:38:43.155Z  DONE
session-813ca602                      2026-07-28T22:40:32.415Z  DONE
93ec2df2-d5bf-4c36-b7f7-c2a4fb0dc3ce  2026-07-03T05:10:58.015Z  DONE
session-67cd0570                      2026-07-16T08:25:55.474Z  DONE
session-17cc299c                      2026-07-14T14:31:33.649Z  DONE

O bien, para encontrar todas las sesiones en ejecución, ejecuta lo siguiente:

gcloud beta device-run sessions list --filter RUNNING

Si tienes sesiones en ejecución, verás resultados similares a los siguientes:

SESSION_ID        START_TIME  STATE
session-d7ff8b81              RUNNING

De lo contrario, recibirás Listed 0 items..

Para cancelar una sesión en ejecución, ejecuta este comando con tu ID de sesión:

gcloud beta device-run sessions cancel SESSION_ID

El comando se muestra de inmediato, ya que la sesión solo se marca para cancelarse. La cancelación se produce de forma asíncrona en el backend.

Si la sesión ya finalizó, solo se imprime el estado actual. Solicitar la cancelación de una sesión finalizada no es un error.

¿Qué sigue?

A continuación, ejecuta una prueba de instrumentación de Android o busca y analiza registros.