2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
Cuttlefish: 환경 제어
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
이 페이지에서는 REST API나 명령줄 인터페이스를 사용하여 Cuttlefish 기기의 환경을 제어하는 방법을 설명합니다. 예를 들어 Wi-Fi 신호를 수정하거나 Cuttlefish 기기의 GPS 위치를 업데이트할 수 있습니다.
서비스
cvd env
명령어는 Cuttlefish 환경을 제어하는 다음 서비스를 제공합니다.
REST API를 사용하여 환경 제어
이 섹션에서는 <https://localhost:1443>
서비스 엔드포인트를 통해 REST API를 사용하여 환경을 제어하는 방법을 설명합니다.
사용 가능한 서비스 또는 메서드 목록
모든 서비스의 목록을 가져오려면 GET
요청을 기기 ID와 함께 다음 URL로 전송합니다.
https://localhost:1443/devices/DEVICE_ID/services
서비스의 모든 메서드 목록을 가져오려면 기기 ID 및 서비스 이름과 함께 GET
요청을 다음 URL로 전송합니다.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME
요청 또는 응답 메시지 유형과 같은 메서드의 세부정보를 가져오려면 기기 ID와 서비스 이름, 메서드 이름과 함께 다음 URL로 GET
요청을 전송합니다.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
요청 및 응답 유형에 관한 세부정보 확인
요청 또는 응답 메시지 유형의 세부정보를 가져오려면 기기 ID와 서비스 이름, 요청 또는 응답 메시지 유형과 함께 GET
요청을 다음 URL로 전송합니다. 이렇게 하면 메시지에 있는 각 필드의 모든 이름과 유형이 출력됩니다. 그러면 이 정보를 사용하여 RPC 요청 전송을 위한 JSON 형식의 proto 메시지를 작성할 수 있습니다.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/REQUEST_OR_RESPONSE_TYPE_NAME/type
환경을 변경하기 위해 RPC 요청 전송
JSON 형식 proto를 사용하여 서비스 메서드를 호출하는 RPC 요청을 전송하려면 기기 ID와 서비스 이름, 메서드 이름과 함께 POST
요청을 다음 URL로 전송합니다. JSON 형식 proto는 본문에 포함되어야 합니다.
https://localhost:1443/devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
사용 사례
다음은 SetTxpower
를 호출하여 Wi-Fi 신호 강도를 수정하기 위한 REST API의 사용 사례입니다.
Wi-Fi 신호 강도를 수정하기 위한 서비스 이름, 메서드 이름, 요청 메시지 유형 이름을 결정합니다.
GET
요청을 다음 URL로 전송하여 사용할 수 있는 모든 서비스 목록을 가져옵니다.
https://localhost:1443/devices/cvd-1/services
다음은 응답 예입니다.
{"services":["OpenwrtControlService","EchoService","GnssGrpcProxy","WmediumdService"]}
GET
요청을 다음 URL로 전송하여 WmediumdService
의 메서드 목록을 가져옵니다.
https://localhost:1443/devices/cvd-1/services/WmediumdService
다음은 응답 예입니다.
{"methods":["ListStations","LoadConfig","ReloadConfig","SetCivicloc","SetLci","SetPosition","SetSnr","SetTxpower","StartPcap","StopPcap"]}
GET
요청을 다음 URL로 전송하여 SetTxpower
메서드의 요청 및 응답 메시지 유형에 관한 정보를 가져옵니다.
https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
다음은 응답 예입니다.
{"request_type_name":"wmediumdserver.SetTxpowerRequest","response_type_name":"google.protobuf.Empty"}
GET
요청을 다음 URL로 전송하여 wmediumdserver.SetTxpowerRequest
요청 메시지 유형의 세부정보를 가져옵니다.
https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type
다음은 응답 예입니다.
message SetTxpowerRequest {
string mac_address = 1;
int32 tx_power = 2;
}
다음 요청 본문과 함께 다음 URL에 POST
요청을 전송해 Wi-Fi 신호 강도를 원하는 수준으로 수정하려면 WmediumdService
서비스에 RPC 요청을 전송합니다.
https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower
{"mac_address":"42:00:00:00:00:00", "tx_power":1}
다음은 응답 예입니다.
{}
명령줄을 사용하여 환경 제어
이 섹션에서는 cvd env
CLI 명령어에 사용할 수 있는 하위 명령어를 설명합니다.
자세한 내용을 확인하려면 cvd help env
를 사용하여 도움말 메시지를 출력하세요.
사용 가능한 서비스 또는 메서드 목록
모든 서비스 목록을 가져오려면 인수 없이 cvd env ls
를 사용하세요.
cvd env ls
서비스를 위한 모든 메서드 목록을 가져오려면 서비스 이름을 인수로 포함합니다.
cvd env ls SERVICE_NAME
메서드의 요청 또는 응답 메시지 유형과 같은 자세한 내용을 확인하려면 서비스 이름과 메서드 이름을 포함하세요.
cvd env ls SERVICE_NAME METHOD_NAME
요청 및 응답 유형에 관한 세부정보 확인
요청 또는 응답 메시지 유형에 관한 자세한 내용을 확인하려면 cvd env type
명령어를 사용하세요. 이 명령어는 메시지에 있는 각 필드의 모든 이름과 유형을 출력합니다. 그러면 이 정보를 사용하여 RPC 요청 전송을 위한 JSON 형식의 proto 메시지를 작성할 수 있습니다.
cvd env type SERVICE_NAME REQUEST_OR_RESPONSE_TYPE_NAME
환경을 변경하기 위해 RPC 요청 전송
JSON 형식 proto를 사용하여 서비스 메서드를 호출하는 RPC 요청을 전송하려면 cvd enc call
명령어를 사용하세요. RPC 요청이 종료되면 인터페이스가 Rpc succeeded with OK status
메시지를 출력하며, 가능한 경우 값이 포함된 응답 메시지도 출력합니다.
cvd env call SERVICE_NAME METHOD_NAME JSON_FORMATTED_PROTO
사용 사례
다음은 SetTxpower
를 호출하여 Wi-Fi 신호 강도를 수정하기 위한 cvd env
CLI 명령어의 사용 사례입니다.
Wi-Fi 신호 강도를 수정하기 위한 서비스 이름, 메서드 이름, 요청 메시지 유형 이름을 결정합니다.
사용 가능한 모든 서비스 목록을 가져옵니다.
cvd env ls
(Omitted)
{
"services" :
[
"OpenwrtControlService",
"EchoService",
"GnssGrpcProxy",
"WmediumdService"
]
}
WmediumdService
의 메서드 목록을 가져옵니다.
cvd env ls WmediumdService
(Omitted)
{
"methods" :
[
"ListStations",
"LoadConfig",
"ReloadConfig",
"SetCivicloc",
"SetLci",
"SetPosition",
"SetSnr",
"SetTxpower",
"StartPcap",
"StopPcap"
]
}
SetTxpower
메서드의 요청 및 응답 메시지 유형에 관한 정보를 가져옵니다.
cvd env ls WmediumdService SetTxpower
(Omitted)
{
"request_type" : "wmediumdserver.SetTxpowerRequest",
"response_type" : "google.protobuf.Empty"
}
wmediumdserver.SetTxpowerRequest
요청 메시지 유형의 세부정보를 가져옵니다.
cvd env type WmediumdService wmediumdserver.SetTxpowerRequest
(Omitted)
message SetTxpowerRequest {
string mac_address = 1;
int32 tx_power = 2;
}
WmediumdService
서비스에 RPC 요청을 전송하여 Wi-Fi 신호 강도를 원하는 수준으로 수정합니다.
cvd env call WmediumdService SetTxpower "{mac_address:'42:00:00:00:00:00', tx_power:1}"
(Omitted)
Rpc succeeded with OK status
{}
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Cuttlefish: Environment control\n\nThis page describes how to control the environment in a Cuttlefish device\nusing the REST API or the command line interface. For example, you can modify the\nWi-Fi signal or update the GPS location of the Cuttlefish device.\n\nServices\n--------\n\nThe `cvd env` command provides the following services for controlling the\nCuttlefish environment:\n\n| Services | Description |\n|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|\n| `GnssGrpcProxy` | Controls GNSS for the Cuttlefish geolocation feature. |\n| [`OpenwrtControlService`](/docs/devices/cuttlefish/wifi#openwrt_control_service) | Controls `Openwrt`, a virtualized Wi-Fi AP provider for the Cuttlefish Wi-Fi feature. |\n| [`WmediumdService`](/docs/devices/cuttlefish/wifi#wmediumd_service) | Controls `Wmediumd`, a wireless medium simulator for the Cuttlefish Wi-Fi feature. |\n| [`CasimirControlService`](/docs/devices/cuttlefish/nfc#casimir_control_service) | Controls `Casimir`, a simulator for external NFC devices. |\n\nControl the environment using the REST API\n------------------------------------------\n\nThis section describes how to control the environment using the Rest API\nthrough the `\u003chttps://localhost:1443\u003e` service endpoint.\n\n### List available services or methods\n\nTo get a list of all services, send a `GET` request to the following URL with\na device ID. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services\n\nTo get a list of all the methods for a service, send a `GET` request to the\nfollowing URL with a device ID and the service name. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e\n\nTo get detailed information for a method, such as the request or response\nmessage types, send a `GET` request to the following URL with a device ID,\na service name, and the method name. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Get detailed information on request and response types\n\nTo get detailed information of a request or response message type, send a `GET`\nrequest to the following URL with a device ID, a service name, and the\nrequest or response message type. This prints all the names and types of each\nfield in the message. You can then use this information to write a\nJSON-formatted proto message for sending a RPC request. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eREQUEST_OR_RESPONSE_TYPE_NAME\u003c/var\u003e/type\n\n### Send RPC request to make changes to the environment\n\nTo send a RPC request to call a method of a service with a JSON-formatted proto,\nsend a `POST` request to the following URL with a device ID, a service\nname, and the method name. The JSON-formatted proto must be included in the\nbody. \n\n https://localhost:1443/devices/\u003cvar translate=\"no\"\u003eDEVICE_ID\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e/\u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Example use case\n\nThe following is an example use case of the Rest API for modifying the Wi-Fi\nsignal strength by calling `SetTxpower`.\n\n1. Determine the service name, method name, and the request message type\n name for modifying the Wi-Fi signal strength.\n\n 1. Get a list of all available services by sending a `GET` request to the\n following URL.\n\n https://localhost:1443/devices/cvd-1/services\n\n This is an example response. \n\n {\"services\":[\"OpenwrtControlService\",\"EchoService\",\"GnssGrpcProxy\",\"WmediumdService\"]}\n\n 2. Get a list of methods for `WmediumdService` by sending a `GET` request\n to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService\n\n This is an example response. \n\n {\"methods\":[\"ListStations\",\"LoadConfig\",\"ReloadConfig\",\"SetCivicloc\",\"SetLci\",\"SetPosition\",\"SetSnr\",\"SetTxpower\",\"StartPcap\",\"StopPcap\"]}\n\n 3. Get information on the request and response message types for the\n `SetTxpower` method by sending a `GET` request to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower\n\n This is an example response. \n\n {\"request_type_name\":\"wmediumdserver.SetTxpowerRequest\",\"response_type_name\":\"google.protobuf.Empty\"}\n\n2. Get detailed information for the `wmediumdserver.SetTxpowerRequest` request\n message type by sending a `GET` request to the following URL.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/wmediumdserver.SetTxpowerRequest/type\n\n This is an example response. \n\n message SetTxpowerRequest {\n string mac_address = 1;\n int32 tx_power = 2;\n }\n\n3. Send a RPC request to the `WmediumdService` service to modify the Wi-Fi\n signal strength to the desired level by sending a `POST` request to this URL\n with the following request body.\n\n https://localhost:1443/devices/cvd-1/services/WmediumdService/SetTxpower\n\n {\"mac_address\":\"42:00:00:00:00:00\", \"tx_power\":1}\n\n This is an example response. \n\n {}\n\nControl the environment using the command line\n----------------------------------------------\n\nThis section describes the subcommands available for the `cvd env` CLI command.\nFor further details, print the help message using `cvd help env`.\n\n### List available services or methods\n\nTo get a list of all services, use `cvd env ls` without any arguments. \n\n cvd env ls\n\nTo get a list of all the methods for a service, include the name of the\nservice as an argument. \n\n cvd env ls \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e\n\nTo get detailed information such as the request or response message types of a\nmethod, include the service name and method name. \n\n cvd env ls \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e\n\n### Get detailed information on request and response types\n\nTo get detailed information of a request or response message type, use the\n`cvd env type` command. This command prints all names and types of each field\nin the message. You can then use this information to write a JSON-formatted\nproto message for sending a RPC request. \n\n cvd env type \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eREQUEST_OR_RESPONSE_TYPE_NAME\u003c/var\u003e\n\n### Send RPC request to make changes to the environment\n\nTo send a RPC request to call a method of a service with a JSON-formatted proto,\nuse the `cvd enc call` command. When the RPC request terminates, the interface\nprints the message `Rpc succeeded with OK status` and, if available, a response\nmessage including values. \n\n cvd env call \u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eMETHOD_NAME\u003c/var\u003e \u003cvar translate=\"no\"\u003eJSON_FORMATTED_PROTO\u003c/var\u003e\n\n### Example use case\n\nThe following is an example use case of the `cvd env` CLI command for modifying\nthe Wi-Fi signal strength by calling `SetTxpower`.\n\n1. Determine the service name, method name, and the request message type\n name for modifying the Wi-Fi signal strength.\n\n Get a list of all available services. \n\n cvd env ls\n (Omitted)\n {\n \"services\" :\n [\n \"OpenwrtControlService\",\n \"EchoService\",\n \"GnssGrpcProxy\",\n \"WmediumdService\"\n ]\n }\n\n Get a list of methods for `WmediumdService`. \n\n cvd env ls WmediumdService\n (Omitted)\n {\n \"methods\" :\n [\n \"ListStations\",\n \"LoadConfig\",\n \"ReloadConfig\",\n \"SetCivicloc\",\n \"SetLci\",\n \"SetPosition\",\n \"SetSnr\",\n \"SetTxpower\",\n \"StartPcap\",\n \"StopPcap\"\n ]\n }\n\n Get information on the request and response message types for the\n `SetTxpower` method. \n\n cvd env ls WmediumdService SetTxpower\n (Omitted)\n {\n \"request_type\" : \"wmediumdserver.SetTxpowerRequest\",\n \"response_type\" : \"google.protobuf.Empty\"\n }\n\n2. Get detailed information for the `wmediumdserver.SetTxpowerRequest` request\n message type.\n\n cvd env type WmediumdService wmediumdserver.SetTxpowerRequest\n (Omitted)\n message SetTxpowerRequest {\n string mac_address = 1;\n int32 tx_power = 2;\n }\n\n3. Send RPC request to the `WmediumdService` service to modify the Wi-Fi\n signal strength to the desired level.\n\n cvd env call WmediumdService SetTxpower \"{mac_address:'42:00:00:00:00:00', tx_power:1}\"\n (Omitted)\n Rpc succeeded with OK status\n {}"]]