이 가이드에서는 gcloud beta device-run CLI를 사용하여 독립형 Android 실행 파일을 실행하고 Google Cloud Console에서 결과를 찾는 방법을 설명합니다. Google Cloud 계정과 프로젝트가 있다고 가정합니다.
Firebase Test Lab에서 Developer Device Platform으로 이전하는 경우 AI 에이전트의 이전 가이드, 명령어 및 플래그 변환, 이전 기술을 참고하세요.
이 Google Cloud CLI를 사용하려면 Google Cloud 프로젝트 ID를 제공해야 합니다. 명령어 요약은 gcloud beta device-run를 참조하세요.
시작하기 전에
이 단계에서는 다음 작업을 이미 완료했다고 가정합니다.
- Google Cloud 프로젝트를 만들었습니다.
- 빠른 시작에 따라 Developer Device Platform을 설정합니다.
- 터미널에서
gcloud로 인증했습니다. - 일반적인 정보는 기기 실행 개요를 검토했습니다.
- 독립형 Android 실행 파일 (예: 컴파일된 C++ 바이너리, 벤치마크 실행기, 셸 스크립트)을 준비했습니다.
1단계: 실행 파일 실행 구성
Android 실행 파일 옵션
- 여러 기기: 여러 기기에서 동일한 실행 파일을 실행하려면
--device플래그와 함께 쉼표로 구분된 여러 기기 ID(예:--device shiba-34,tokay-36)를 제공하거나 각각 고유한 기기 ID를 지정하는 여러--device플래그(예:--device shiba-34 --device tokay-36)를 제공합니다. - 기기에 파일 푸시:
--other-files-to-push=SOURCE=DEST,...를 사용하여 실행하기 전에 추가 파일 (예: ML 모델 가중치, 테스트 입력 또는.so공유 라이브러리)을 기기에 푸시합니다.SOURCE는 로컬 경로와 Cloud Storage (gs://...) 경로를 모두 지원하며DEST는 기기의 대상 경로입니다. - 기기에서 파일 가져오기: 실행이 완료된 후
--paths-to-pull=DEVICE_PATH,...를 사용하여 기기에서 생성된 파일 또는 디렉터리를 가져옵니다. - 커스텀 Cloud Storage 버킷:
--bucket-name=를 사용하여 기존 Cloud Storage 버킷 이름 (gs://스키마 또는 경로 없음)을 지정합니다. 버킷을 지정하지 않으면 Google Cloud CLI는PROJECT_ID-devicerun라는 기본 버킷을 사용하거나 만듭니다. - 불안정한 테스트 재시도: 불안정성을 처리하기 위해 작업 또는 샤드당 최대 시도 횟수를 설정합니다.
--flaky-test-attempts=3(기본값은1회 시도) - 기기 환경 및 진단: 기기 방향(
--orientation=portrait또는landscape), 언어 (--locale=en-US), 모의 GPS 위치 (--coordinates=LATITUDE,LONGITUDE), 화면 동영상 녹화(--video=always또는on-failure),dumpsys수집 (--dumpsys=always또는on-failure) 또는bugreport수집 (--bugreport=always또는on-failure)을 구성합니다. - 라벨:
--labels=KEY=VALUE,...를 사용하여 사용자 정의 키-값 라벨을 세션에 연결합니다. - 실행 파일 인수:
--executable-args=ARG,...를 쉼표로 구분된 목록으로 사용하거나 플래그를 반복하여 명령줄 인수를 실행 파일에 전달합니다. 각 요소는 하나의 인수가 되므로 공백으로 구분된 명령줄을 쉼표로 구분된 형식으로 다시 작성합니다 (예:--executable-args="--input=a.file,--threads=4"). 쉼표가 포함된 인수를 전달하려면 값 앞에^SEP^를 추가하여 다른 구분자를 지정합니다 (예:--executable-args="^;^--shape=1,224,224,3;--threads=4"). - 환경 변수:
--executable-env-vars=KEY=VALUE,...를 사용하여 기기에서 실행 가능한 프로세스의 환경 변수를 설정합니다 (예:--executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib). - 실행 파일 제한 시간: 실행 파일의 실행 시간을 제한합니다.
--executable-timeout=10m(유효한 범위는1m~3h이며 기본값은5m입니다. 기기 준비 및 정리 시간은 제외됩니다.)
동기 및 비동기 실행
기본적으로 제출 명령어는 차단 (동기식)입니다. 실행 파일이 완료될 때까지 기다린 후 결과 요약 표를 출력합니다.
세션을 제출하고 Cloud Storage에 파일을 업로드한 직후에 반환하려면 --async 플래그를 추가합니다.
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--async
그러면 세션 ID가 즉시 반환됩니다. 그런 다음 sessions wait 명령어를 사용하여 기다릴 수 있습니다.
gcloud beta device-run sessions wait SESSION_ID
작업이 완료될 때까지 명령어가 차단됩니다.
다수의 기기
여러 기기에서 동일한 실행 파일을 실행하려면 쉼표로 구분된 여러 기기 ID와 함께 --device 플래그를 제공하거나 각각 고유한 기기 ID를 지정하는 여러 --device 플래그를 제공합니다.
gcloud beta device-run sessions submit android-executable \
--device shiba-34,tokay-36 \
--executable ./MY_EXECUTABLE
또는
gcloud beta device-run sessions submit android-executable \
--device shiba-34 \
--device tokay-36 \
--executable ./MY_EXECUTABLE
실행 파일 제한 시간
실행 파일 실행 기간을 제한합니다.
gcloud beta device-run sessions submit android-executable \
--device shiba-35 \
--executable ./MY_EXECUTABLE \
--executable-timeout=10m
유효한 범위는 실행의 경우 1m~3h이며 기본값은 5m입니다.
2단계: 기기 선택
device-run CLI를 사용하면 사용 가능한 실제 기기와 가상 기기에서 Android 실행 파일을 실행할 수 있습니다. 사용 가능한 기기의 전체 목록을 보려면 대화형 기기 카탈로그를 방문하거나 다음을 실행하세요.
gcloud beta device-run devices list
출력 예시:
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
이 목록을 필터링하는 방법은 기기 카탈로그를 참고하세요. 실행할 특정 기기를 타겟팅하려면 제출 명령어에서 해당 ID (예: tegu-35)를 사용합니다.
3단계: 실행 파일 실행
독립형 Android 실행 파일을 제출합니다.
APK로 패키징하지 않고 Android 기기에서 직접 독립형 실행 파일 (예: 컴파일된 C++ 바이너리, LiteRT와 같은 기기 내 머신러닝 벤치마크 실행기, 셸 스크립트)을 실행하려면 sessions submit
android-executable 명령어를 사용합니다.
Android 실행 파일에는 다음 플래그가 필요합니다.
- 기기:
--device를 사용하여 기기를 지정합니다.--device shiba-35 - 실행 파일:
--executable:--executable /path/to/my_executable를 사용하여 실행 파일의 로컬 또는 Cloud Storage 경로를 지정합니다.
실행 파일을 실행하려면 자체 기기 ID와 실행 파일 경로를 사용하여 다음과 유사한 명령어를 실행합니다.
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
작업의 결과 보고서 폴더는 gs://BUCKET_NAME/automation/sessions/SESSION_ID/과 같은 Cloud Storage 경로에서 찾을 수 있습니다. https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/와 유사한 링크의 명령어 출력을 확인합니다.
4단계: 실행 파일 실행 탐색 및 관리
sessions submit android-executable 명령어의 비동기 및 동기 모드 모두에서 sessions describe 명령어를 사용하여 실행 중에 작업 상태를 쿼리하거나 완료 후 결과를 가져올 수 있습니다.
gcloud beta device-run sessions describe SESSION_ID
출력은 실행 결과를 요약하고Google Cloud 콘솔의 결과에 연결됩니다. 예를 들면 다음과 같습니다.
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
다음 명령어를 사용하여 실행 중인 세션과 완료된 세션을 모두 나열합니다.
gcloud beta device-run sessions list
프로젝트의 세션 목록이 포함된 출력을 받습니다. 다음과 유사합니다.
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
sessions list 명령어는 모든 표준 Google Cloud CLI 플래그 옵션을 지원합니다. 예를 들면 다음과 같습니다.
gcloud beta device-run sessions list --limit 5
그러면 다음과 같은 결과가 표시됩니다.
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
실행 중인 모든 세션을 찾으려면 다음을 실행합니다.
gcloud beta device-run sessions list --filter RUNNING
실행 중인 세션이 있는 경우 다음과 같은 결과가 표시됩니다.
SESSION_ID START_TIME STATE
session-d7ff8b81 RUNNING
그렇지 않으면 Listed 0 items.가 표시됩니다.
실행 중인 세션을 취소하려면 세션 ID를 사용하여 다음 명령어를 실행합니다.
gcloud beta device-run sessions cancel SESSION_ID
세션이 취소된 것으로만 표시되므로 명령어가 즉시 반환됩니다. 취소는 백엔드에서 비동기식으로 이루어집니다.
세션이 이미 완료된 경우 현재 상태만 출력됩니다. 완료된 세션에 대한 취소 요청은 오류가 아닙니다.
다음 단계
다음으로 Android 계측 테스트를 실행하거나 로그를 찾아 분석합니다.