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
do dispositivo descritas em
Adicionar um novo dispositivo, é possível 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é-criações de kernel,
pré-criações de carregador de inicialização, propriedades do fornecedor, configurações do sistema,
suporte a virtualização aninhada e opções de exibição. Para conferir 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 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 atual:
- 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)
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 represente
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 a configuração
de exibição. Esse arquivo não precisa estar na árvore do 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 create --config_file=big_phone.json
Executar launch_cvd (legado)
Algumas propriedades de configuração não estão disponíveis no formato de configuração JSON
hierárquico. Para essas configurações, defina valores padrão da sinalização launch_cvd
a partir de um dicionário JSON de nível único. Para uma lista completa de todas
as opções de configuração, consulte
cf_flags_validator.cpp
.
Confira abaixo um exemplo de como substituir os valores padrão das
opções de flag launch_cvd
usando um arquivo de configuração JSON e permitir que a tela de início do 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 a tela de início do Cuttlefish inicie a configuração
big_phone
, verifique se ela tem acesso ao arquivodevice/google/cuttlefish/shared/config/config_big_phone.json
fazendo o seguinte:Declare o artefato JSON como um artefato de build adicionando a estrofe
prebuilt_etc_host
ao 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 build resultante ao iniciador 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çãobig_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
big_phone
preenchendodevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
com o seguinte:config=big_phone