Seiche : créer un appareil personnalisé

Cette page décrit comment créer un appareil Cuttlefish personnalisé. Cuttlefish inclut des types d'appareils prédéfinis dans différents facteurs de forme répertoriés dans AndroidProducts.mk . En plus des options générales de personnalisation de périphérique décrites dans Ajout d'un nouveau périphérique , vous pouvez effectuer des personnalisations spécifiques à Cuttlefish telles que les préréglages de configuration de la carte de périphérique virtuel (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), les préconfigurations du noyau, les préconfigurations du chargeur de démarrage, les propriétés du fournisseur, les configurations système, les configurations imbriquées. prise en charge de la virtualisation et options d'affichage. Pour une liste complète des paramètres de temps de construction 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 périphérique big_phone x86-64 fictif dix fois plus grand qu'un périphérique 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 d'affichage. Il n'est pas nécessaire que ce fichier se trouve dans l'arborescence AOSP. Pour plus de détails sur le format JSON pour les configurations, consultez Configurations canoniques .

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

Pour lancer la configuration, exécutez :

cvd start --config_file=big_phone.json

Exécutez launch_cvd (ancien)

Certaines propriétés de configuration ne sont pas disponibles dans le format de configuration hiérarchique JSON. Pour de telles configurations, vous pouvez définir les valeurs par défaut de l'indicateur launch_cvd à partir d'un dictionnaire JSON à un seul niveau. Pour une liste complète de toutes les options de configuration, consultez cf_flags_validator.cpp .

Ce qui suit décrit un exemple de la façon de remplacer les valeurs par défaut des options de l'indicateur launch_cvd à l'aide d'un fichier de configuration JSON et d'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 build en ajoutant la strophe 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 construction résultante 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. Étiquetez le type d'appareil avec la configuration big_phone en remplissant device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt avec ce qui suit :

      config=big_phone