このガイドでは、gcloud beta device-run CLI を使用してスタンドアロンの Android 実行可能ファイルを実行し、 Google Cloud コンソールで結果を確認する方法について説明します。 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)。または、複数の--deviceフラグを指定し、それぞれに異なるデバイス ID を指定します(例:--device shiba-34 --device tokay-36)。 - デバイスにファイルを push する:
--other-files-to-push=SOURCE=DEST,...を使用して、実行前にデバイスに追加のファイル(ML モデルの重み、テスト入力、.so共有ライブラリなど)を push します。SOURCEは、ローカルパスと Cloud Storage(gs://...)パスの両方をサポートしています。DESTは、デバイス上の宛先パスです。 - デバイスからファイルを pull する: 実行が完了したら、
--paths-to-pull=DEVICE_PATH,...を使用して、生成されたファイルまたはディレクトリをデバイスから pull します。 - カスタム 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,...を使用して、ユーザー定義の Key-Value ラベルをセッションにアタッチします。 - 実行可能引数:
--executable-args=ARG,...をカンマ区切りのリストとして使用するか、フラグを繰り返して、コマンドライン引数を実行可能ファイルに渡します。各要素は 1 つの引数になるため、スペース区切りのコマンドラインをカンマ区切りの形式(--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です。デバイスの準備とクリーンアップの時間は含まれません)。
同期実行と非同期実行
デフォルトでは、submit コマンドはブロッキング(同期的)です。実行可能ファイルが完了するまで待機し、結果の概要テーブルを出力します。
セッションを送信し、ファイルを 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
このコマンドは、ジョブが完了するまでブロックされます。
複数のデバイス
複数のデバイスで同じ実行可能ファイルを実行するには、--device フラグに複数のデバイス ID をカンマで区切って指定するか、複数の --device フラグにそれぞれ異なるデバイス ID を指定します。
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
このリストをフィルタする方法については、デバイス カタログをご覧ください。実行対象として特定のデバイスを指定するには、submit コマンドで対応する ID(tegu-35 など)を使用します。
ステップ 3. 実行可能ファイルを実行する
スタンドアロンの Android 実行可能ファイルを送信します。
コンパイル済みの C++ バイナリ、LiteRT などのオンデバイス機械学習ベンチマーク ランナー、シェル スクリプトなどのスタンドアロン実行可能ファイルを、APK にパッケージ化せずに Android デバイスで直接実行するには、sessions submit
android-executable コマンドを使用します。
Android 実行可能ファイルには、次のフラグが必要です。
- デバイス:
--deviceを使用してデバイスを指定します。--device shiba-35 - 実行可能ファイル:
--executableを使用して、実行可能ファイルのローカルパスまたは Cloud Storage パスを指定します。--executable /path/to/my_executable
実行可能ファイルを実行するには、独自のデバイス 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 インストルメンテーション テストを実行するか、ログを検索して分析します。