Cuttlefish: 맞춤 기기 만들기

이 페이지에서는 맞춤설정된 Cuttlefish 기기를 만드는 방법을 설명합니다. Cuttlefish에는 AndroidProducts.mk에 나열된 다양한 폼 팩터로 사전 정의된 기기 유형이 포함되어 있습니다. 새 기기 추가에 설명된 일반 기기 맞춤설정 옵션 외에도 가상 기기 보드 구성 미리 설정(vsoc_x88_64, vsoc_arm64, vsoc_riscv64), 커널 사전 빌드, 부트로더 사전 빌드, 공급업체 속성, 시스템 구성, 중첩 가상화 지원, 디스플레이 옵션 등 Cuttlefish 관련 맞춤설정을 할 수 있습니다. 맞춤설정할 수 있는 빌드 시간 매개변수의 전체 목록은 device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk를 참고하세요.

다음 단계에서는 일반 Cuttlefish 기기보다 10배 큰 가상의 x86-64 big_phone 기기를 만드는 방법을 설명합니다.

기존 타겟에서 상속

기존 타겟에서 상속받으려면 다음을 실행하세요.

  • device/google/cuttlefish/vsoc_x86_64/big_phone 디렉터리를 만듭니다.
  • 해당 디렉터리에서 aosp_cf.mk 파일을 만듭니다.
$(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)

PRODUCT_NAME: big_phone
PRODUCT_DEVICE: vsoc_x86_64
PRODUCT_MANUFACTURER := My Company
PRODUCT_MODEL: My Company very large phone

PRODUCT_VENDOR_PROPERTIES += \
    ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
    ro.soc.model=$(PRODUCT_DEVICE)

lunch 타겟 추가

device/google/cuttlefish/AndroidProducts.mk 파일에 lunch 타겟을 삽입합니다.

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

JSON 구성 정의

Cuttlefish 기기를 실행하려면 계층 구조가 기기 속성을 나타내는 big_phone.json이라는 JSON 구성 파일을 만듭니다. 예를 들어 JSON 구성 파일에서는 VM에 할당된 RAM과 디스플레이 구성 등의 옵션을 지정할 수 있습니다. 이 파일은 AOSP 트리에 없어도 됩니다. 구성의 JSON 형식에 관한 자세한 내용은 표준 구성을 참고하세요.

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

구성을 실행하려면 다음을 실행합니다.

cvd start --config_file=big_phone.json

launch_cvd(기존) 실행

특정 구성 속성은 계층적 JSON 구성 형식에서 사용할 수 없습니다. 이러한 구성의 경우에는 단일 수준 JSON 사전에서 launch_cvd 플래그 기본값을 설정할 수 있습니다. 모든 구성 옵션의 전체 목록은 cf_flags_validator.cpp를 참고하세요.

다음은 JSON 구성 파일을 사용하여 launch_cvd 플래그 옵션의 기본값을 재정의하고 Cuttlefish 런처를 사용 설정하여 맞춤 구성을 실행하는 방법을 예를 들어 설명합니다.

  1. 맞춤 값을 사용하여 JSON 구성 파일 device/google/cuttlefish/shared/config/config_big_phone.json을 만듭니다.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Cuttlefish 런처에서 big_phone 구성을 실행하려면 다음을 실행하여 device/google/cuttlefish/shared/config/config_big_phone.json 파일에 액세스할 수 있어야 합니다.

    1. device/google/cuttlefish/shared/config/Android.bp 파일에 prebuilt_etc_host 스탠자를 추가하여 JSON 아티팩트를 빌드 아티팩트로 선언합니다.

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. device/google/cuttlefish/shared/device.mk에서 다음을 실행하여 결과 빌드 아티팩트 선언을 Cuttlefish 런처에 추가합니다.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. android_info.txt 파일을 만들고 device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk에 다음 줄을 추가하여 big_phone 구성을 파일에 연결합니다.

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. 다음과 같이 device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt를 채워 big_phone 구성으로 기기 유형에 라벨을 지정합니다.

      config=big_phone