デベロッパー デバイス プラットフォームのデバイス実行の概要

Developer Device Platform デバイスランへようこそ。このサービスでは、クラウド内の物理 Android デバイス、仮想 Android デバイス、物理 iOS デバイスでテストを実行できます。このページでは、Android と iOS のテスト実行の共通点について説明します。プラットフォーム固有の手順については、Android のデバイスランと iOS のデバイスランをご覧ください。

Firebase Test Lab から Developer Device Platform に移行する場合は、移行ガイド、コマンドとフラグの変換、AI エージェントの移行スキルをご覧ください。

この Google Cloud CLI を使用するには、 Google Cloud プロジェクト ID を指定する必要があります。コマンドの概要については、gcloud beta device-run をご覧ください。

次のフラグは必須です。

  • デバイス: --device を使用してデバイスを指定します。--device shiba-35 または --device iphonese3-18-4
  • テスト: --test: --test /path/to/test.apk または --test /path/to/test.ipa を使用してテスト APK または IPA を指定します。

次の構成オプションは、Android テストと iOS テストの両方に共通です。

入力と出力の Cloud Storage パス

  • カスタム Cloud Storage バケット: 入力と出力にカスタム Cloud Storage バケットを指定できます。--bucket-name=my-custom-bucket --bucket-name= フラグを使用して Cloud Storage バケットを指定しない場合、Google Cloud CLI は PROJECT_ID-devicerun という名前のデフォルト バケットを使用します。
  • 入力ファイル: --test、--additional-apps、または --xctestrun-file フラグを使用してローカルパスを指定すると、コマンドを実行するたびに、Google Cloud CLI は gs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/ の下の Cloud Storage バケットに自動的にコピーします。ここで、BUCKET_NAME のデフォルトは PROJECT_ID-devicerun です。
  • クラウドパス: 大量のファイルをアップロードすると時間がかかるため、Cloud Storage の gs:// パスを使用して直接参照し、アップロード時間を短縮できます。
  • 結果ファイル: 出力アーティファクトは、gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/ の下の Cloud Storage バケットにアップロードされます。

同期実行と非同期実行

デフォルトでは、送信コマンドはブロック(同期)されます。テストが完了するまで待機し、結果の概要テーブルを出力します。

ファイルを Cloud Storage にアップロードした直後にセッションを送信してすぐに戻るには、--async フラグを追加します。

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

これにより、セッション ID がすぐに返されます。sessions wait コマンドを使用して待機できます。

gcloud beta device-run sessions wait SESSION_ID

このコマンドは、ジョブが完了するまでブロックされます。

複数のデバイス

複数のデバイスで同じテストを実行するには、カンマで区切られた複数のデバイス ID を指定した --device フラグを指定するか、それぞれ異なるデバイス ID を指定した複数の --device フラグを指定します。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-34,tokay-36 \
  --test ./ANDROID_TESTS.apk

または

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

または

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

テストのタイムアウト

テストの実行時間を制限します。

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

有効範囲は 1m~1h で、デフォルトは 5m です。

ソフトウェアのバージョン

利用可能なソフトウェア パッケージと AndroidX Test Orchestrator および Apple Xcode のバージョンを検出して使用し、テスト実行を構成する前に、ライフサイクル、サポートされているバージョン、メタデータを検査します。

まず、利用可能なすべてのソフトウェア パッケージとそのバージョンを一覧表示します。

gcloud beta device-run software-versions list

次のような出力が返されます。

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

次に、リストから正確なリソース ID を使用して特定のパッケージを記述します。

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

次のような出力が返されます。

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'

利用可能なソフトウェア バージョンがわかったので、--orchestrator-version フラグまたは --xcode-version フラグを使用して、次のようにテスト実行で使用できます。

Android

gcloud beta device-run sessions submit instrumentation \
  --device shiba-35 \
  --test ./ANDROID_TESTS.apk \
  --orchestrator-version=1.4.1

詳細については、Orchestrator を有効にするをご覧ください。

iOS

gcloud beta device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

詳しくは、iOS 向けデバイスランをご覧ください。

入力の検証

Developer Device Platform は、アーティファクトなどの入力を検証しようとします。エラーのある入力が検出された場合は、PASSED や FAILED ではなく ERROR を返します。

Session [session-94b57778] finished with result [ERROR].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000   execution-000   ERROR

次に、sessions describe コマンドに --full を追加して、セッションの詳細を表示します。

gcloud beta device-run sessions describe --full session-94b57778

出力は次のようになります。

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

次のステップ

Developer Device Platform で Android テストを実行するか、iOS テストを実行する。