Seiche: créer un appareil personnalisé

Cette page explique comment créer un appareil Settlefish personnalisé. Settlefish inclut des types d'appareils prédéfinis dans différents facteurs de forme, comme indiqué dans AndroidProducts.mk. En plus des options de personnalisation générales de l'appareil décrites dans la section Ajouter un appareil, vous pouvez effectuer des personnalisations spécifiques à Cuttlefish, telles que des préréglages de configuration de la carte d'appareil virtuel (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), des précompilations du noyau, des précompilations 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 durée de compilation que vous pouvez personnaliser, 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 10 fois la taille d'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 une cible 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 d'affichage. Ce fichier ne doit pas nécessairement se trouver dans l'arborescence AOSP. Pour en savoir plus sur le format JSON pour les configurations, consultez la section 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 (ancien)

Certaines propriétés de configuration ne sont pas disponibles au format de configuration JSON hiérarchique. Pour de telles configurations, vous pouvez définir des valeurs par défaut d'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 montre 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.

  1. 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,
    }
    
  2. Pour que le lanceur Cuttlefish lance la configuration big_phone, assurez-vous qu'il a accès au fichier device/google/cuttlefish/shared/config/config_big_phone.json en procédant comme suit :

    1. Déclarez l'artefact JSON en tant qu'artefact de compilation en ajoutant le bloc prebuilt_etc_host dans le fichier 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. Ajoutez la déclaration d'artefact de compilation obtenue dans le lanceur Cuttlefish en exécutant ce qui suit dans device/google/cuttlefish/shared/device.mk.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Créez un fichier android_info.txt et associez la configuration big_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
      
    4. Ajoutez une étiquette au type d'appareil avec la configuration big_phone en renseignant device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt avec les éléments suivants:

      config=big_phone