In diesem Leitfaden wird beschrieben, wie Sie eine eigenständige ausführbare Android-Datei mit der gcloud beta device-run-Befehlszeile ausführen und die Ergebnisse in der Google Cloud Console finden. Es wird davon ausgegangen, dass Sie ein Konto und ein Projekt in Google Cloud haben.
Wenn Sie von Firebase Test Lab zur Developer Device Platform migrieren, lesen Sie unsere Migrationsanleitung, die Übersetzung von Befehlen und Flags und den Migrationsskill für KI-Agenten.
Wenn Sie diese Google Cloud CLI verwenden möchten, müssen Sie Ihre Google Cloud -Projekt-ID angeben. Eine Zusammenfassung der Befehle finden Sie unter gcloud beta device-run.
Hinweis
Bei diesen Schritten wird davon ausgegangen, dass Sie bereits Folgendes getan haben:
- Sie haben ein Projekt in Google Cloud erstellt.
- Richten Sie die Developer Device Platform gemäß der Kurzanleitung ein.
- Im Terminal mit
gcloudauthentifiziert. - Die Device Run-Übersicht mit allgemeinen Informationen gelesen.
- Eine eigenständige ausführbare Android-Datei (z. B. eine kompilierte C++-Binärdatei, ein Benchmark-Runner oder ein Shell-Script) vorbereitet haben.
Schritt 1: Ausführbare Ausführung konfigurieren
Optionen für ausführbare Android-Dateien
- Mehrere Geräte: Wenn Sie dieselbe ausführbare Datei auf mehreren Geräten ausführen möchten, geben Sie das Flag
--devicemit mehreren Geräte-IDs an, die durch Kommas getrennt sind, z. B.--device shiba-34,tokay-36, oder mit mehreren--device-Flags, die jeweils eine eindeutige Geräte-ID angeben (z. B.--device shiba-34 --device tokay-36). - Dateien auf das Gerät übertragen: Übertragen Sie vor der Ausführung mit
--other-files-to-push=SOURCE=DEST,...zusätzliche Dateien (z. B. ML-Modellgewichtungen, Testeingaben oder.sogemeinsam genutzte Bibliotheken) auf das Gerät.SOURCEunterstützt sowohl lokale Pfade als auch Cloud Storage-Pfade (gs://...) undDESTist der Zielpfad auf dem Gerät. - Dateien vom Gerät abrufen: Generierte Dateien oder Verzeichnisse nach Abschluss der Ausführung mit
--paths-to-pull=DEVICE_PATH,...vom Gerät abrufen. - Benutzerdefinierter Cloud Storage-Bucket: Geben Sie mit
--bucket-name=einen vorhandenen Cloud Storage-Bucket-Namen (ohnegs://-Schema oder -Pfad) an. Wenn Sie keinen Bucket angeben, verwendet oder erstellt die Google Cloud CLI einen Standard-Bucket mit dem NamenPROJECT_ID-devicerun. - Wiederholungen instabiler Tests: Legen Sie die maximale Anzahl von Versuchen pro Job oder Shard fest, um Instabilität zu beheben:
--flaky-test-attempts=3(Standardwert ist1Versuch). - Geräteumgebung und Diagnose: Konfigurieren Sie die Geräteausrichtung (
--orientation=portraitoderlandscape), die Sprache (--locale=en-US), den simulierten GPS-Standort (--coordinates=LATITUDE,LONGITUDE), die Bildschirmvideoaufzeichnung (--video=alwaysoderon-failure), diedumpsys-Erfassung (--dumpsys=alwaysoderon-failure) oder diebugreport-Erfassung (--bugreport=alwaysoderon-failure). - Labels: Hängen Sie mit
--labels=KEY=VALUE,...benutzerdefinierte Schlüssel/Wert-Labels an die Sitzung an. - Ausführbare Argumente: Übergeben Sie Befehlszeilenargumente an die ausführbare Datei. Verwenden Sie dazu
--executable-args=ARG,...als durch Kommas getrennte Liste oder wiederholen Sie das Flag. Jedes Element wird zu einem Argument. Schreiben Sie daher durch Leerzeichen getrennte Befehlszeilen in kommagetrennter Form um (z. B.--executable-args="--input=a.file,--threads=4"). Wenn Sie ein Argument übergeben möchten, das selbst ein Komma enthält, stellen Sie dem Wert^SEP^voran, um ein anderes Trennzeichen anzugeben (z. B.--executable-args="^;^--shape=1,224,224,3;--threads=4"). - Umgebungsvariablen: Legen Sie Umgebungsvariablen für den ausführbaren Prozess auf dem Gerät mit
--executable-env-vars=KEY=VALUE,...fest (z. B.--executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib). - Zeitlimit für die ausführbare Datei: Begrenzen Sie die Ausführungsdauer der ausführbaren Datei:
--executable-timeout=10m(gültiger Bereich ist1mbis3h, Standardwert ist5m, ohne Vorbereitungs- und Bereinigungszeit für das Gerät).
Synchrone und asynchrone Ausführungen
Standardmäßig ist der Befehl „submit“ blockierend (synchron). Es wartet, bis die ausführbare Datei abgeschlossen ist, und gibt eine Übersichtstabelle der Ergebnisse aus.
Wenn Sie die Sitzung senden und sofort nach dem Hochladen von Dateien in Cloud Storage zurückkehren möchten, fügen Sie das Flag --async hinzu:
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--async
Dadurch wird sofort eine Sitzungs-ID zurückgegeben. Sie können dann mit dem Befehl sessions wait darauf warten:
gcloud beta device-run sessions wait SESSION_ID
Der Befehl wird blockiert, bis der Job abgeschlossen ist.
Mehrere Geräte
Wenn Sie dieselbe ausführbare Datei auf mehreren Geräten ausführen möchten, geben Sie das Flag --device mit mehreren Geräte-IDs durch Kommas getrennt oder mit mehreren --device-Flags an, die jeweils eine eindeutige Geräte-ID angeben.
gcloud beta device-run sessions submit android-executable \
--device shiba-34,tokay-36 \
--executable ./MY_EXECUTABLE
oder:
gcloud beta device-run sessions submit android-executable \
--device shiba-34 \
--device tokay-36 \
--executable ./MY_EXECUTABLE
Zeitlimit für ausführbare Datei
Begrenzen Sie die Dauer der Ausführung der ausführbaren Datei:
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--executable-timeout=10m
Der gültige Bereich für Ausführungen liegt zwischen 1m und 3h. Der Standardwert ist 5m.
Schritt 2: Geräte auswählen
Mit der device-run-Befehlszeile können ausführbare Android-Dateien auf verfügbaren physischen und virtuellen Geräten ausgeführt werden. Eine vollständige Liste der verfügbaren Geräte finden Sie im interaktiven Gerätekatalog. Sie können auch folgenden Befehl ausführen:
gcloud beta device-run devices list
Beispielausgabe:
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
Im Gerätekatalog erfährst du, wie du diese Liste filtern kannst. Wenn Sie ein bestimmtes Gerät für die Ausführung verwenden möchten, geben Sie im Befehl zum Senden die entsprechende ID an (z. B. tegu-35).
Schritt 3: Ausführbare Datei ausführen
Reichen Sie eine eigenständige ausführbare Android-Datei ein.
Wenn Sie eine eigenständige ausführbare Datei (z. B. eine kompilierte C++-Binärdatei, einen Benchmark-Runner für maschinelles Lernen auf dem Gerät wie LiteRT oder ein Shell-Script) direkt auf einem Android-Gerät ausführen möchten, ohne sie in ein APK zu verpacken, verwenden Sie den Befehl sessions submit
android-executable.
Diese Flags sind für ausführbare Android-Dateien erforderlich:
- Gerät: Geben Sie ein Gerät mit
--devicean:--device shiba-35 - Ausführbare Datei: Geben Sie den lokalen oder Cloud Storage-Pfad zur ausführbaren Datei mit
--executablean:--executable /path/to/my_executable
Führen Sie die ausführbare Datei mit einem Befehl wie dem folgenden aus. Verwenden Sie dabei Ihre eigenen Geräte-IDs und den Pfad zur ausführbaren Datei:
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
Der Ordner mit dem Ergebnisbericht des Jobs befindet sich in einem Cloud Storage-Pfad wie gs://BUCKET_NAME/automation/sessions/SESSION_ID/. In der Befehlsausgabe finden Sie den Link, der in etwa so aussieht: https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.
Schritt 4: Ausführbaren Lauf ansehen und verwalten
Sowohl für den asynchronen als auch für den synchronen Modus des Befehls sessions submit android-executable können Sie den Befehl sessions describe verwenden, um den Jobstatus während der Ausführung abzufragen oder das Ergebnis nach Abschluss abzurufen:
gcloud beta device-run sessions describe SESSION_ID
Die Ausgabe fasst die Ausführungsergebnisse zusammen und enthält Links zu den Ergebnissen in derGoogle Cloud Console. Beispiel:
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
Verwenden Sie den folgenden Befehl, um alle laufenden und abgeschlossenen Sitzungen aufzulisten:
gcloud beta device-run sessions list
Sie erhalten eine Ausgabe mit der Liste der Sitzungen in Ihrem Projekt, die in etwa so aussieht:
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
Der Befehl sessions list unterstützt alle Standard-Flag-Optionen der Google Cloud CLI. Beispiel:
gcloud beta device-run sessions list --limit 5
Das Ergebnis sieht in etwa so aus:
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
Oder führen Sie den folgenden Befehl aus, um alle laufenden Sitzungen aufzulisten:
gcloud beta device-run sessions list --filter RUNNING
Wenn Sie laufende Sitzungen haben, sehen Sie Ergebnisse, die in etwa so aussehen:
SESSION_ID START_TIME STATE
session-d7ff8b81 RUNNING
Andernfalls erhalten Sie Listed 0 items..
Führen Sie diesen Befehl mit Ihrer Sitzungs-ID aus, um eine laufende Sitzung abzubrechen:
gcloud beta device-run sessions cancel SESSION_ID
Der Befehl wird sofort zurückgegeben, da die Sitzung nur zum Abbrechen markiert ist. Der Abbruch erfolgt asynchron im Backend.
Wenn die Sitzung bereits beendet ist, wird nur der aktuelle Status ausgegeben. Wenn Sie den Abbruch einer abgeschlossenen Sitzung anfordern, ist dies kein Fehler.
Nächste Schritte
Als Nächstes können Sie einen Android-Instrumentierungstest ausführen oder Logs suchen und analysieren.