Questa guida descrive come eseguire un eseguibile Android autonomo utilizzando l'interfaccia a riga di comandogcloud beta device-rune trovare i risultati nella console Google Cloud . Si presuppone che tu abbia un account e un progetto Google Cloud .
Se stai eseguendo la migrazione da Firebase Test Lab a Developer Device Platform, consulta la nostra guida alla migrazione, la traduzione di comandi e flag e la skill di migrazione per gli agenti AI.
Per utilizzare Google Cloud CLI, devi fornire l'ID progetto Google Cloud . Consulta gcloud beta device-run per un riepilogo dei comandi.
Prima di iniziare
Questi passaggi presuppongono che tu abbia già:
- Creato un progetto Google Cloud .
- Configura Developer Device Platform seguendo la guida rapida.
- Autenticazione con
gcloudnel terminale. - Hai esaminato la panoramica di Device Run per informazioni generali.
- Preparato un eseguibile Android autonomo (ad esempio un file binario C++ compilato, un runner di benchmark o uno script shell).
Passaggio 1: Configura l'esecuzione dell'eseguibile
Opzioni per i file eseguibili Android
- Più dispositivi: per eseguire lo stesso eseguibile su più dispositivi,
specifica il flag
--devicecon più ID dispositivo separati da virgole, ad esempio--device shiba-34,tokay-36, o con più flag--device, ognuno dei quali specifica un ID dispositivo distinto (ad esempio,--device shiba-34 --device tokay-36). - Invia file al dispositivo: invia file aggiuntivi (come pesi del modello ML, input di test o librerie condivise
.so) al dispositivo prima dell'esecuzione utilizzando--other-files-to-push=SOURCE=DEST,....SOURCEsupporta sia i percorsi locali sia i percorsi Cloud Storage (gs://...) eDESTè il percorso di destinazione sul dispositivo. - Estrai i file dal dispositivo: estrai i file o le directory generati dal dispositivo al termine dell'esecuzione utilizzando
--paths-to-pull=DEVICE_PATH,.... - Bucket Cloud Storage personalizzato: specifica il nome di un bucket Cloud Storage esistente (senza uno schema o un percorso
gs://) utilizzando--bucket-name=. Se non specifichi un bucket, Google Cloud CLI utilizza o crea un bucket predefinito denominatoPROJECT_ID-devicerun. - Nuovi tentativi per test instabili: imposta il numero massimo di tentativi per job o shard per gestire l'instabilità:
--flaky-test-attempts=3(il valore predefinito è1tentativo). - Ambiente e diagnostica del dispositivo: configura l'orientamento del dispositivo
(
--orientation=portraitolandscape), le impostazioni internazionali (--locale=en-US), la posizione GPS fittizia (--coordinates=LATITUDE,LONGITUDE), la registrazione video dello schermo (--video=alwaysoon-failure), la raccolta didumpsys(--dumpsys=alwaysoon-failure) o la raccolta dibugreport(--bugreport=alwaysoon-failure). - Etichette: associa alla sessione etichette coppia chiave-valore definite dall'utente utilizzando
--labels=KEY=VALUE,.... - Argomenti eseguibili: passa gli argomenti della riga di comando all'eseguibile utilizzando
--executable-args=ARG,...come elenco separato da virgole o ripetendo il flag. Ogni elemento diventa un argomento, quindi riscrivi le righe di comando separate da spazi in un formato separato da virgole (ad esempio,--executable-args="--input=a.file,--threads=4"). Per passare un argomento che contiene una virgola, aggiungi il prefisso^SEP^al valore per specificare un separatore diverso (ad esempio,--executable-args="^;^--shape=1,224,224,3;--threads=4"). - Variabili di ambiente: imposta le variabili di ambiente per il processo eseguibile sul dispositivo utilizzando
--executable-env-vars=KEY=VALUE,...(ad esempio--executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib). - Timeout dell'eseguibile: limita la durata dell'esecuzione dell'eseguibile:
--executable-timeout=10m(l'intervallo valido va da1ma3he il valore predefinito è5m, esclusi i tempi di preparazione e pulizia del dispositivo).
Esecuzioni sincrone e asincrone
Per impostazione predefinita, il comando submit è bloccante (sincrono). Attenderà il completamento dell'eseguibile e stamperà una tabella di riepilogo dei risultati.
Per inviare la sessione e tornare immediatamente dopo aver caricato i file su Cloud Storage, aggiungi il flag --async:
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--async
Viene restituito immediatamente un ID sessione. Puoi quindi attendere l'operazione utilizzando il comando sessions wait:
gcloud beta device-run sessions wait SESSION_ID
Il comando verrà bloccato fino al completamento del job.
Più dispositivi
Per eseguire lo stesso eseguibile su più dispositivi, specifica il flag --device con più ID dispositivo separati da virgole o con più flag --device, ognuno dei quali specifica un ID dispositivo distinto.
gcloud beta device-run sessions submit android-executable \
--device shiba-34,tokay-36 \
--executable ./MY_EXECUTABLE
Oppure:
gcloud beta device-run sessions submit android-executable \
--device shiba-34 \
--device tokay-36 \
--executable ./MY_EXECUTABLE
Timeout eseguibile
Limita la durata dell'esecuzione dell'eseguibile:
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--executable-timeout=10m
L'intervallo valido è compreso tra 1m e 3h per le esecuzioni e il valore predefinito è 5m.
Passaggio 2: Scegli dispositivi
Utilizzando l'interfaccia a riga di comando device-run, gli eseguibili Android possono essere eseguiti su dispositivi fisici e dispositivi virtuali disponibili. Per visualizzare l'elenco completo dei dispositivi disponibili, visita il catalogo dei dispositivi interattivo o esegui:
gcloud beta device-run devices list
Output di esempio:
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 il Catalogo dei dispositivi per scoprire come filtrare questo elenco. Per scegliere come target un dispositivo specifico per l'esecuzione, utilizza l'ID corrispondente (ad esempio tegu-35) nel comando di invio.
Passaggio 3: Esegui l'eseguibile
Invia un file eseguibile Android autonomo.
Per eseguire un eseguibile autonomo (ad esempio un file binario C++ compilato, un runner di benchmark di machine learning on-device come LiteRT o uno script shell) direttamente su un dispositivo Android senza pacchettizzarlo in un APK, utilizza il comando sessions submit
android-executable.
Questi flag sono obbligatori per gli eseguibili Android:
- Dispositivo: specifica un dispositivo utilizzando
--device:--device shiba-35 - Eseguibile: specifica il percorso locale o di Cloud Storage dell'eseguibile utilizzando
--executable:--executable /path/to/my_executable
Per eseguire l'eseguibile, esegui un comando simile al seguente, utilizzando i tuoi ID dispositivo e il percorso dell'eseguibile:
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 cartella del report dei risultati del job si trova in un percorso di Cloud Storage, ad esempio gs://BUCKET_NAME/automation/sessions/SESSION_ID/. Consulta l'output comando per il link, simile a: https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.
Passaggio 4: Esplora e gestisci l'esecuzione dell'eseguibile
Sia per la modalità asincrona che per quella sincrona del comando sessions submit android-executable, puoi utilizzare il comando sessions describe per eseguire query sullo stato del job durante l'esecuzione o ottenere il risultato al termine:
gcloud beta device-run sessions describe SESSION_ID
L'output riassume i risultati dell'esecuzione e rimanda ai risultati nella consoleGoogle Cloud . Ad esempio:
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
Utilizza il comando seguente per elencare tutte le sessioni in esecuzione e completate:
gcloud beta device-run sessions list
Ricevi un output contenente l'elenco delle sessioni nel tuo progetto, simile al seguente:
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
Il comando sessions list supporta tutte le opzioni dei flag standard di Google Cloud CLI. Ad esempio:
gcloud beta device-run sessions list --limit 5
Il risultato è simile al seguente:
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
In alternativa, per trovare tutte le sessioni in esecuzione, esegui:
gcloud beta device-run sessions list --filter RUNNING
Supponendo che tu abbia sessioni in esecuzione, vedrai risultati simili ai seguenti:
SESSION_ID START_TIME STATE
session-d7ff8b81 RUNNING
In caso contrario, riceverai Listed 0 items.
Per annullare una sessione in esecuzione, esegui questo comando con l'ID sessione:
gcloud beta device-run sessions cancel SESSION_ID
Il comando restituisce immediatamente un risultato, poiché la sessione è solo contrassegnata per l'annullamento. L'annullamento avviene in modo asincrono nel backend.
Se la sessione è già terminata, viene stampato solo lo stato attuale. Richiedere l'annullamento di una sessione terminata non è un errore.
Passaggi successivi
Ora esegui un test di instrumentazione Android o trova e analizza i log.