Choco: Crie um dispositivo personalizado

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

As etapas a seguir descrevem como criar um dispositivo big_phone x86-64 fictício dez vezes maior que um dispositivo Cuttlefish comum.

Herdar de um destino existente

Para herdar de um destino existente:

  • Crie um diretório device/google/cuttlefish/vsoc_x86_64/ big_phone .
  • 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)

Adicione uma meta de almoço

Insira o alvo 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 denominado big_phone .json com uma estrutura hierárquica que representa as propriedades do dispositivo. Por exemplo, no arquivo de configuração JSON, você pode especificar opções como a RAM alocada para a VM e a configuração de exibição. Este arquivo não precisa estar na árvore AOSP. Para obter 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

Execute launch_cvd (legado)

Certas propriedades de configuração não estão disponíveis no formato de configuração JSON hierárquico. Para essas configurações, é possível definir valores padrão do sinalizador launch_cvd a partir de um dicionário JSON de nível único. Para obter uma lista completa de todas as opções de configuração, consulte cf_flags_validator.cpp .

A seguir descreve-se um exemplo de como substituir os valores padrão das opções de sinalização launch_cvd usando um arquivo de configuração JSON e permitir que o inicializador Cuttlefish inicie a 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 o iniciador do Cuttlefish inicie a configuração do big_phone , certifique-se de que ele tenha acesso ao device/google/cuttlefish/shared/config/config_ big_phone .json fazendo o seguinte:

    1. Declare o artefato JSON como um artefato de construção adicionando a sub-rotina prebuilt_etc_host no 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 construção resultante ao inicializador do Cuttlefish executando o seguinte em 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 arquivo adicionando a seguinte linha a 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. Rotule o tipo de dispositivo com a configuração do big_phone preenchendo device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt com o seguinte:

      config=big_phone