Cuttlefish: criar um dispositivo personalizado

Esta página descreve como criar um dispositivo Cuttlefish personalizado. Choco inclui tipos de dispositivos predefinidos em diferentes formatos, conforme listado em AndroidProducts.mk Além da personalização geral do dispositivo descritas em Ao adicionar um novo dispositivo, você pode fazer Personalizações específicas do Cuttlefish, como a placa do dispositivo virtual predefinições de configuração (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), kernel pré-criados, carregadores de inicialização pré-criados, propriedades do fornecedor, configurações do sistema, recursos virtualização e opções de exibição. Para uma lista completa dos parâmetros de tempo de build que podem ser personalizados, consulte device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk

As etapas a seguir descrevem como criar uma instância x86-64 fictícia Dispositivo big_phone 10 vezes o tamanho de um dispositivo normal Dispositivo Cuttlefish.

Herdar de um destino existente

Para herdar de um destino existente:

  • Criar um device/google/cuttlefish/vsoc_x86_64/big_phone diretório.
  • Crie um arquivo aosp_cf.mk nesse diretório.
$(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)

Adicionar objetivo de almoço

Insira o destino lunch no Arquivo device/google/cuttlefish/AndroidProducts.mk:

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

Definir configuração JSON

Para iniciar o dispositivo Cuttlefish, crie um arquivo de configuração JSON chamado big_phone.json com uma estrutura hierárquica que representa as propriedades do dispositivo. Por exemplo, no arquivo de configuração JSON, é possível especificar opções como a RAM alocada para a VM e o configuração do Terraform. Esse arquivo não precisa estar na árvore AOSP. Para detalhes sobre o formato JSON para configurações, consulte Configurações canônicas.

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

Para iniciar a configuração, execute:

cvd start --config_file=big_phone.json

Executar launch_cvd (legado)

Algumas propriedades de configuração não estão disponíveis no JSON hierárquico de configuração do Terraform. Para essas configurações, defina a flag launch_cvd valores padrão de um dicionário JSON de nível único. Para acessar uma lista completa opções de configuração, consulte cf_flags_validator.cpp

Veja a seguir um exemplo de como substituir os valores padrão do Opções de sinalização launch_cvd usando um arquivo de configuração JSON e ative o acesso rápido do Cuttlefish para iniciar o configuração personalizada.

  1. Crie um arquivo de configuração JSON. device/google/cuttlefish/shared/config/config_big_phone.json, com valores personalizados.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Para que a tela de início do Cuttlefish inicie a configuração big_phone, verifique se ela tem acesso ao device/google/cuttlefish/shared/config/config_big_phone.json fazendo o seguinte:

    1. Declare o artefato JSON como um artefato de compilação adicionando o estrofe prebuilt_etc_host na arquivo device/google/cuttlefish/shared/config/Android.bp.

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. Adicione a declaração de artefato de build resultante ao Cuttlefish acesso rápido executando o seguinte no device/google/cuttlefish/shared/device.mk:

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Crie um arquivo android_info.txt e vincule a configuração do big_phone ao adicionando a seguinte linha ao arquivo device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. Preencha o campo para identificar o tipo de dispositivo com a configuração big_phone. device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt pelo seguinte:

      config=big_phone