Cette page explique comment créer un appareil Cuttlefish personnalisé. Cuttlefish
inclut des types d'appareils prédéfinis dans différents facteurs de forme, comme indiqué dans
AndroidProducts.mk. En plus des options générales de personnalisation des appareils
décrites dans
Ajouter un nouvel appareil, vous pouvez effectuer des
personnalisations spécifiques à Cuttlefish, telles que des préréglages de configuration de carte d'appareil virtuel (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), des précompilations de noyau, des précompilations de bootloader, des propriétés de fournisseur, des configurations système, la prise en charge de la virtualisation
imbriquée et des options d'affichage. Pour obtenir la liste complète des
paramètres de durée de la compilation qui peuvent être personnalisés, consultez
device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.
Les étapes suivantes décrivent comment créer un appareil x86-64 big_phone fictif dix fois plus grand qu'un appareil Cuttlefish ordinaire.
Hériter d'une cible existante
Pour hériter d'une cible existante :
- Créez un
device/google/cuttlefish/vsoc_x86_64/big_phonerépertoire. - Créez un fichier
aosp_cf.mkdans ce répertoire.
$(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)
Ajouter une cible de lancement
Insérez la cible lunch dans le fichier device/google/cuttlefish/AndroidProducts.mk :
PRODUCT_MAKEFILES := \
...
big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
...
lunch big_phoneDéfinir la configuration JSON
Pour lancer l'appareil Cuttlefish, créez un fichier de configuration JSON nommé
big_phone.json avec une structure hiérarchique représentant
les propriétés de l'appareil. Par exemple, dans le fichier de configuration JSON, vous pouvez spécifier des options telles que la RAM allouée à la VM et la configuration de l'affichage. Ce fichier ne doit pas nécessairement se trouver dans l'arborescence AOSP.
Pour en savoir plus sur le format JSON des configurations, consultez
Configurations canoniques.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Pour lancer la configuration, exécutez la commande suivante :
cvd create --config_file=big_phone.jsonExécuter launch_cvd (hérité)
Certaines propriétés de configuration ne sont pas disponibles au format de configuration JSON hiérarchique. Pour ces configurations, vous pouvez définir des valeurs par défaut pour l'indicateur launch_cvd à partir d'un dictionnaire JSON à un seul niveau. Pour obtenir la liste complète de toutes les
options de configuration, consultez
cf_flags_validator.cpp.
L'exemple suivant explique comment remplacer les valeurs par défaut des options d'indicateur
launch_cvd
à l'aide d'un fichier de configuration JSON et comment activer le lanceur Cuttlefish pour lancer la configuration personnalisée.
Créez un fichier de configuration JSON,
device/google/cuttlefish/shared/config/config_big_phone.json, avec des valeurs personnalisées.{ "x_res": 7200, "y_res": 12800, "dpi": 320, "memory_mb": 40960, "ddr_mem_mb": 49150, }Pour que le lanceur Cuttlefish lance la configuration
big_phone, assurez-vous qu'il a accès audevice/google/cuttlefish/shared/config/config_big_phone.jsonfichier en procédant comme suit :Déclarez l'artefact JSON comme artefact de compilation en ajoutant la strophe
prebuilt_etc_hostdans le fichierdevice/google/cuttlefish/shared/config/Android.bp.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }Ajoutez la déclaration d'artefact de compilation résultante au lanceur Cuttlefish en exécutant la commande suivante dans
device/google/cuttlefish/shared/device.mk.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)Créez un fichier
android_info.txtet associez la configurationbig_phoneau fichier en ajoutant la ligne suivante à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.txtLibellez le type d'appareil avec la configuration
big_phoneen remplissantdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txtavec les éléments suivants :config=big_phone