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.
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, }
Para que o iniciador do Cuttlefish inicie a configuração do
big_phone
, certifique-se de que ele tenha acesso aodevice/google/cuttlefish/shared/config/config_ big_phone .json
fazendo o seguinte:Declare o artefato JSON como um artefato de construção adicionando a sub-rotina
prebuilt_etc_host
no arquivodevice/google/cuttlefish/shared/config/Android.bp
.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }
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)
Crie um arquivo
android_info.txt
e vincule a configuração dobig_phone
ao arquivo adicionando a seguinte linha adevice/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
Rotule o tipo de dispositivo com a configuração do
big_phone
preenchendodevice/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt
com o seguinte:config=big_phone