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écompilés du noyau, des précompilés du bootloader, des propriétés du 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 compilation pouvant être personnalisés, consultez device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
.
Les étapes suivantes décrivent comment créer un appareil big_phone
x86-64 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 répertoire
device/google/cuttlefish/vsoc_x86_64/big_phone
. - Créez un fichier
aosp_cf.mk
dans 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 un objectif de déjeuner
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_phone
Dé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.json
Exécuter launch_cvd (ancienne version)
Certaines propriétés de configuration ne sont pas disponibles au format JSON hiérarchique. Pour de telles 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 des options de configuration, consultez cf_flags_validator.cpp
.
L'exemple suivant décrit comment remplacer les valeurs par défaut des options de l'indicateur launch_cvd
à l'aide d'un fichier de configuration JSON et comment permettre au lanceur Cuttlefish de 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 au fichierdevice/google/cuttlefish/shared/config/config_big_phone.json
en procédant comme suit :Déclarez l'artefact JSON comme artefact de compilation en ajoutant la strophe
prebuilt_etc_host
dans 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 de l'artefact de compilation résultant 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.txt
et associez la configurationbig_phone
au 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.txt
Attribuez un libellé au type d'appareil avec la configuration
big_phone
en remplissantdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
avec les éléments suivants :config=big_phone