Skill detail
developer-device-platform-basics
>- Provides guidance and instructions on managing remote devices on Developer Device Platform (DDP). Use when reserving remote Android devices, establishing connection tunnels, checking session status, or extending/cancelling leases. Don't use for iOS or local device/hardware inquiries.
Why we recommend it: Guides managing remote Android devices on Google's Developer Device Platform: reserving devices, connection tunnels, session status, and lease management.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: developer-device-platform-basics
description: >-
Provides guidance and instructions on managing remote devices on Developer Device Platform (DDP).
Use when reserving remote Android devices, establishing connection tunnels, checking session status, or extending/cancelling leases.
Don't use for iOS or local device/hardware inquiries.
metadata:
category: CloudInfrastructureAndServices
---
# Developer Device Platform
Developer Device Platform (DDP) is a Google fully managed, global infrastructure
providing access to a wide variety of physical and virtual devices.
> [!WARNING] Developer Device Platform (DDP) is currently at Preview.
> [!IMPORTANT] For all devicerun and devicestreaming API operations (reserving,
> status checking, stopping/canceling, updating, or listing a session), always
> verify and use the exact instructions and curl commands provided in the linked
> reference `.md` files.
## Authentication & Setup
**CRITICAL**: Before running any requests, you MUST ensure the environment is
correctly initialized by following these steps:
Before running any requests, verify if the `gcloud` executable is present. If
missing, refer to the official
[Google Cloud CLI Installation Guide](https://docs.cloud.google.com/sdk/docs/install-sdk.md.txt)
to install it on the current platform (Linux, macOS, Windows, etc.).
1. **Google Cloud Authentication**: Authenticate with your Google Cloud
credentials and configure active Application Default Credentials (ADC) for
the Developer Device Platform:
```bash
gcloud auth login --no-browser
gcloud auth application-default login --no-browser
```
2. **Enable APIs** (if not already enabled):
```bash
gcloud services enable devicerun.googleapis.com devicestreaming.googleapis.com testing.googleapis.com --quiet
```
> [!NOTE] Cloud Testing API is needed for Device Streaming API during Preview.
3. **Enable gcloud beta component**:
```bash
gcloud components install beta
```
4. **Setup Environment Variables**: Set up the required project variable and
access token:
```bash
export PROJECT_ID=$(gcloud config get project)
export ACCESS_TOKEN=$(gcloud auth application-default print-access-token 2>/dev/null)
```
5. **Python Environment**: For instructions on setting up the python virtual
environment, see [start_adb_forwarder.md].
## Listing Available Devices
To find the correct `modelCode` and `osVersion` to use when starting a session,
you can list the available devices:
1. **List Models**: Run the following command to list available Android device
models:
```bash
gcloud beta device-run devices list
```
Use the `ID` column to find the value for the `CATALOG_ID` parameter to
describe a specific device (e.g., `shiba-36`).
2. **Describe a Model**: Run the API request to get more details about a
specific model (e.g., supportedProducts, resolution). Always rely on the
exact curl command and instructions provided in [describe_device.md].
## Starting a Device Session
When the user asks to reserve or connect to a device:
1. **Check Device Availability**:
Look up `CATALOG_ID` of the device using `Listing Available Devices`
instructions. Check the device availability of the `CATALOG_ID` by using the
exact curl command and instructions provided in [describe_device.md]. The
device MUST contain "deviceStreaming" in "supportedProducts" to be reserved.
If no specific device is specified, use `CATALOG_ID=shiba-34` (Pixel 8 on
SDK 34).
If `OS_VERSION` was not specified by the user, ask the user to select a
version from the device list (preferring the version with the highest
availability {"available": "AVAILABILITY_HIGH" }).
If `OS_VERSION` is unavailable for `deviceStreaming`, do not reserve one.
Prompt the user for an alternative `OS_VERSION`.
2. **Extract Parameters**:
* `model_id`: `modelCode` from device details. ReqRead the full source on GitHub (opens external page)