Willkommen bei „Developer Device Platform Device Run“. Damit können Sie Tests auf physischen und virtuellen Android-Geräten sowie auf physischen iOS-Geräten in der Cloud ausführen. Auf dieser Seite werden Gemeinsamkeiten beim Ausführen von Android- und iOS-Tests beschrieben. Plattformspezifische Schritte findest du unter Device Run für Android und Device Run für iOS.
Wenn Sie diese Google Cloud CLI verwenden möchten, müssen Sie die ID Ihres Google Cloud Projekts angeben. Eine Zusammenfassung der Befehle finden Sie unter gcloud beta
device-run.
Diese Flags sind erforderlich:
- Gerät: Geben Sie ein Gerät mit
--devicean:--device shiba-35oder--device iphonese3-18-4 - Test: Geben Sie das Test-APK oder ‑IPA mit
--testan:--test /path/to/test.apkoder--test /path/to/test.ipa
Die folgenden Konfigurationsoptionen sind sowohl für Android- als auch für iOS-Tests verfügbar.
Cloud Storage-Pfade für Ein- und Ausgabe
- Benutzerdefinierter Cloud Storage-Bucket: Sie können einen benutzerdefinierten Cloud Storage-Bucket für Ein- und Ausgaben angeben:
--bucket-name=my-custom-bucketWenn Sie keinen Cloud Storage-Bucket mit dem Flag--bucket-name=angeben, verwendet die Google Cloud CLI einen Standard-Bucket mit dem NamenPROJECT_ID-devicerun. - Eingabedateien: Wenn Sie mit den Flags
--test,--additional-appsoder--xctestrun-fileeinen lokalen Pfad angeben, kopiert die Google Cloud CLI ihn automatisch in Ihren Cloud Storage-Bucket untergs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/, wenn Sie den Befehl ausführen.BUCKET_NAMEwird standardmäßig aufPROJECT_ID-devicerungesetzt. - Cloud-Pfade: Da das Hochladen großer Dateien zeitaufwendig sein kann, können Sie direkt auf sie verweisen, indem Sie ihre
gs://-Pfade in Cloud Storage verwenden. So sparen Sie Uploadzeit. - Ergebnisdateien: Ausgabeartefakte werden in Ihren Cloud Storage-Bucket unter
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/hochgeladen.
Synchrone und asynchrone Ausführungen
Standardmäßig ist der Befehl „submit“ blockierend (synchron). Das Tool wartet, bis der Test abgeschlossen ist, und gibt dann eine Zusammenfassungstabelle der Ergebnisse aus.
Wenn Sie die Sitzung einreichen und sofort nach dem Hochladen von Dateien in Cloud Storage zurückkehren möchten, fügen Sie das Flag --async hinzu:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--async
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
Dadurch wird sofort eine Sitzungs-ID zurückgegeben. Anschließend können Sie 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 dieselben Tests auf mehreren Geräten ausführen möchten, geben Sie das Flag --device mit mehreren durch Kommas getrennten Geräte-IDs oder mit mehreren --device-Flags an, wobei jedes eine eigene Geräte-ID angibt.
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
oder:
gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--device tokay-36 \
--test ./ANDROID_TESTS.apk
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
oder:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
Testzeitlimit
Ausführungsdauer des Tests begrenzen:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--instrumentation-timeout=10m
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
Der gültige Bereich liegt zwischen 1m und 1h. Der Standardwert ist 5m.
Softwareversionen
Verfügbare Softwarepakete und Versionen von AndroidX Test Orchestrator und Apple Xcode finden und verwenden. Prüfen Sie vor dem Konfigurieren von Testläufen deren Lebenszyklen, unterstützte Versionen und Metadaten.
Listen Sie zuerst alle verfügbaren Softwarepakete und ihre Versionen auf:
gcloud beta device-run software-versions list
Die Ausgabe sollte in etwa so aussehen:
ID NAME SOFTWARE_TYPE VERSION STATE IS_DEFAULT
androidx-test-orchestrator-1-4-1 AndroidX Test Orchestrator 1.4.1 ANDROIDX_TEST_ORCHESTRATOR 1.4.1 ACTIVE True
androidx-test-orchestrator-1-6-1 AndroidX Test Orchestrator 1.6.1 ANDROIDX_TEST_ORCHESTRATOR 1.6.1 ACTIVE
xcode-16-4 Xcode 16.4 XCODE 16.4 ACTIVE
xcode-26-2 Xcode 26.2 XCODE 26.2 ACTIVE True
Beschreiben Sie dann ein bestimmtes Paket anhand seiner genauen Ressourcen-ID aus der Liste:
Android
gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1
iOS
gcloud beta device-run software-versions describe xcode-16-4
Die Ausgabe sollte in etwa so aussehen:
Android
id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1
iOS
id: xcode-16-4
lifecycle:
state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:
- '15.0'
- '15.1'
- '15.2'
- '15.4'
- '15.7'
- '16.0'
- '16.1'
- '16.2'
- '16.3'
- '16.5'
- '16.6'
- '18.0'
- '18.3'
- '18.4'
version: '16.4'
Nachdem Sie nun wissen, welche Softwareversionen verfügbar sind, können Sie sie in Ihren Testläufen mit den Flags --orchestrator-version oder --xcode-version verwenden:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
Weitere Informationen finden Sie unter Orchestrator aktivieren.
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
Weitere Informationen finden Sie unter Device Run für iOS.
Eingabevalidierung
Die Developer Device Platform versucht, Ihre Eingaben, einschließlich Artefakte, zu validieren und gibt bei fehlerhaften Eingaben ERROR anstelle von PASSED oder FAILED zurück:
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
Hängen Sie nun --full an den Befehl sessions describe an, um weitere Details zur Sitzung aufzurufen:
gcloud beta device-run sessions describe --full session-94b57778
Die Ausgabe sieht dann etwa so aus:
name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
requirement:
deviceId: mediumphone-arm-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://user-test1-devicerun/automation/sessions
sessionReport:
endTime: '2026-09-16T18:55:49.721Z'
id: ed681f23-669b-4464-8a93-b28456e58136
jobReports:
- displayName: job-000
endTime: '2026-09-16T18:55:45.839Z'
executionReports:
- displayName: execution-000
endTime: '2026-09-16T18:55:46.694Z'
id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
result:
cause:
summary:
message: The instrumentation target package does not match any of the
installable packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '1970-01-01T00:00:00Z'
status:
statusType: PENDING
id: 953b5106-3c20-40f0-aceb-18af89cd1b83
result:
cause:
summary:
message: The instrumentation target package does not match any of the installable
packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '2026-09-16T18:55:31.651Z'
status:
statusType: DONE
result:
resultType: ERROR
startTime: '2026-09-16T18:55:24.442Z'
status:
statusType: DONE
Nächste Schritte
Android-Test ausführen oder iOS-Test ausführen mit der Developer Device Platform