Ce guide explique comment exécuter un fichier exécutable Android autonome à l'aide de la CLI gcloud beta device-run et comment trouver vos résultats dans la console Google Cloud . Il suppose que vous disposez d'un compte et d'un projet Google Cloud .
Si vous migrez de Firebase Test Lab vers Developer Device Platform, consultez notre guide de migration, la traduction des commandes et des options et la compétence de migration pour les agents IA.
Pour utiliser Google Cloud CLI, vous devez fournir l'ID de votre projet Google Cloud . Consultez gcloud beta device-run pour obtenir un résumé des commandes.
Avant de commencer
Ces étapes supposent que vous avez déjà :
- Vous avez créé un projet Google Cloud .
- Configurez Developer Device Platform en suivant le guide de démarrage rapide.
- Vous vous êtes authentifié avec
gclouddans le terminal. - Vous avez consulté la présentation de Device Run pour obtenir des informations générales.
- Vous avez préparé un exécutable Android autonome (tel qu'un binaire C++ compilé, un exécuteur de benchmark ou un script shell).
Étape 1 : Configurer l'exécution de votre exécutable
Options pour les exécutables Android
- Plusieurs appareils : pour exécuter le même fichier exécutable sur plusieurs appareils, fournissez l'option
--deviceavec plusieurs ID d'appareil séparés par une virgule, par exemple--device shiba-34,tokay-36, ou avec plusieurs options--device, chacune spécifiant un ID d'appareil distinct (par exemple,--device shiba-34 --device tokay-36). - Transférer des fichiers vers l'appareil : transférez des fichiers supplémentaires (tels que des pondérations de modèle de ML, des entrées de test ou des bibliothèques partagées
.so) vers l'appareil avant l'exécution à l'aide de--other-files-to-push=SOURCE=DEST,....SOURCEaccepte les chemins d'accès locaux et Cloud Storage (gs://...), etDESTest le chemin d'accès de destination sur l'appareil. - Extraire des fichiers de l'appareil : extrayez les fichiers ou répertoires générés de l'appareil une fois l'exécution terminée à l'aide de
--paths-to-pull=DEVICE_PATH,.... - Bucket Cloud Storage personnalisé : spécifiez le nom d'un bucket Cloud Storage existant (sans schéma ni chemin d'accès
gs://) à l'aide de--bucket-name=. Si vous ne spécifiez pas de bucket, la Google Cloud CLI utilise ou crée un bucket par défaut nomméPROJECT_ID-devicerun. - Nouvelles tentatives de tests irréguliers : définissez le nombre maximal de tentatives par job ou segment pour gérer l'irrégularité :
--flaky-test-attempts=3(par défaut,1tentative). - Environnement et diagnostics de l'appareil : configurez l'orientation de l'appareil (
--orientation=portraitoulandscape), les paramètres régionaux (--locale=en-US), la position GPS fictive (--coordinates=LATITUDE,LONGITUDE), l'enregistrement vidéo de l'écran (--video=alwaysouon-failure), la collectedumpsys(--dumpsys=alwaysouon-failure) ou la collectebugreport(--bugreport=alwaysouon-failure). - Libellés : associez des libellés clé-valeur définis par l'utilisateur à la session à l'aide de
--labels=KEY=VALUE,.... - Arguments exécutables : transmettez des arguments de ligne de commande à l'exécutable à l'aide de
--executable-args=ARG,...sous forme de liste d'éléments séparés par une virgule ou en répétant l'option. Chaque élément devient un argument. Réécrivez donc les lignes de commande séparées par des espaces sous forme de liste d'éléments séparés par des virgules (par exemple,--executable-args="--input=a.file,--threads=4"). Pour transmettre un argument qui contient lui-même une virgule, ajoutez le préfixe^SEP^à la valeur pour spécifier un autre séparateur (par exemple,--executable-args="^;^--shape=1,224,224,3;--threads=4"). - Variables d'environnement : définissez des variables d'environnement pour le processus exécutable sur l'appareil à l'aide de
--executable-env-vars=KEY=VALUE,...(par exemple,--executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib). - Délai d'expiration de l'exécutable : limitez la durée d'exécution de l'exécutable :
--executable-timeout=10m(la plage valide est comprise entre1met3h, et la valeur par défaut est5m, à l'exclusion du temps de préparation et de nettoyage de l'appareil).
Exécutions synchrones et asynchrones
Par défaut, la commande d'envoi est bloquante (synchrone). Il attendra que l'exécutable se termine et affichera un tableau récapitulatif des résultats.
Pour envoyer la session et revenir immédiatement après l'importation des fichiers dans Cloud Storage, ajoutez l'option --async :
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--async
Un ID de session est renvoyé immédiatement. Vous pouvez ensuite attendre qu'elle se termine à l'aide de la commande sessions wait :
gcloud beta device-run sessions wait SESSION_ID
La commande sera bloquée jusqu'à ce que le job soit terminé.
Plusieurs appareils
Pour exécuter le même fichier exécutable sur plusieurs appareils, fournissez l'option --device avec plusieurs ID d'appareil séparés par une virgule ou avec plusieurs options --device, chacune spécifiant un ID d'appareil distinct.
gcloud beta device-run sessions submit android-executable \
--device shiba-34,tokay-36 \
--executable ./MY_EXECUTABLE
ou
gcloud beta device-run sessions submit android-executable \
--device shiba-34 \
--device tokay-36 \
--executable ./MY_EXECUTABLE
Délai avant expiration de l'exécutable
Limitez la durée d'exécution de votre exécutable :
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--executable-timeout=10m
La plage valide est comprise entre 1m et 3h pour les exécutions, et la valeur par défaut est 5m.
Étape 2 : Sélectionner des appareils
La CLI device-run permet d'exécuter des fichiers exécutables Android sur les appareils physiques et virtuels disponibles. Pour afficher la liste complète des appareils disponibles, consultez le catalogue d'appareils interactif ou exécutez la commande suivante :
gcloud beta device-run devices list
Exemple de résultat :
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
Consultez le catalogue d'appareils pour savoir comment filtrer cette liste. Pour cibler un appareil spécifique pour votre exécution, utilisez l'ID correspondant (par exemple, tegu-35) dans la commande d'envoi.
Étape 3 : Exécuter votre fichier exécutable
Envoyez un exécutable Android autonome.
Pour exécuter un exécutable autonome (comme un binaire C++ compilé, un exécuteur de benchmark de machine learning sur l'appareil comme LiteRT ou un script shell) directement sur un appareil Android sans l'empaqueter dans un APK, utilisez la commande sessions submit
android-executable.
Ces options sont obligatoires pour les exécutables Android :
- Appareil : spécifiez un appareil à l'aide de
--device:--device shiba-35. - Exécutable : spécifiez le chemin d'accès local ou Cloud Storage à l'exécutable à l'aide de
--executable:--executable /path/to/my_executable.
Pour exécuter votre fichier exécutable, exécutez une commande semblable à la suivante, en utilisant vos propres ID d'appareil et chemin d'accès au fichier exécutable :
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
Le dossier du rapport de résultats du job se trouve dans un chemin d'accès Cloud Storage tel que gs://BUCKET_NAME/automation/sessions/SESSION_ID/. Le résultat de la commande affiche un lien semblable à celui-ci : https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.
Étape 4 : Explorer et gérer votre exécution exécutable
Pour les modes asynchrone et synchrone de la commande sessions submit android-executable, vous pouvez utiliser la commande sessions describe pour interroger l'état du job pendant l'exécution ou obtenir le résultat une fois l'opération terminée :
gcloud beta device-run sessions describe SESSION_ID
La sortie résume les résultats d'exécution et renvoie vers les résultats dans la consoleGoogle Cloud . Exemple :
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
Utilisez la commande suivante pour lister toutes vos sessions en cours et terminées :
gcloud beta device-run sessions list
Vous recevez un résultat contenant la liste des sessions de votre projet, qui ressemble à ceci :
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
La commande de liste sessions est compatible avec toutes les options d'option standards de Google Cloud CLI. Exemple :
gcloud beta device-run sessions list --limit 5
Les résultats ressemblent à ce qui suit :
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
Pour trouver toutes les sessions en cours d'exécution, exécutez la commande suivante :
gcloud beta device-run sessions list --filter RUNNING
Si vous avez des sessions en cours d'exécution, vous verrez des résultats semblables à ceux-ci :
SESSION_ID START_TIME STATE
session-d7ff8b81 RUNNING
Sinon, vous recevrez Listed 0 items..
Pour annuler une session en cours, exécutez cette commande avec l'ID de votre session :
gcloud beta device-run sessions cancel SESSION_ID
La commande renvoie immédiatement une réponse, car la session est uniquement marquée pour être annulée. L'annulation s'effectue de manière asynchrone dans le backend.
Si la session est déjà terminée, seul l'état actuel est affiché. Demander l'annulation d'une session terminée ne constitue pas une erreur.
Étapes suivantes
Ensuite, exécutez un test d'instrumentation Android ou recherchez et analysez les journaux.