Mürekkepbalığı: Özel cihaz oluşturma

Bu sayfada, özelleştirilmiş bir Cuttlefish cihazının nasıl oluşturulacağı açıklanmaktadır. Cuttlefish, AndroidProducts.mk bölümünde listelendiği gibi farklı form faktörlerinde önceden tanımlanmış cihaz türlerini içerir. Yeni cihaz ekleme bölümünde açıklanan genel cihaz özelleştirme seçeneklerine ek olarak, Cuttlefish'e özel özelleştirmeler de yapabilirsiniz. Örneğin, sanal cihaz kartı yapılandırma hazır ayarları (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), önceden oluşturulmuş çekirdekler, önceden oluşturulmuş önyükleyiciler, tedarikçi özellikleri, sistem yapılandırmaları, iç içe sanallaştırma desteği ve ekran seçenekleri. Özelleştirilebilen derleme zamanı parametrelerinin tam listesi için device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk bölümüne bakın.

Aşağıdaki adımlarda, normal bir Cuttlefish cihazının on katı büyüklüğünde kurgusal bir x86-64 big_phone cihazın nasıl oluşturulacağı açıklanmaktadır.

Mevcut bir hedeften devralma

Mevcut bir hedeften devralmak için:

  • device/google/cuttlefish/vsoc_x86_64/big_phone dizin oluşturun.
  • Bu dizinde bir aosp_cf.mk dosyası oluşturun.
$(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)

Öğle yemeği hedefi ekleme

lunch hedefini device/google/cuttlefish/AndroidProducts.mk dosyasına ekleyin:

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

JSON yapılandırmasını tanımlama

Cuttlefish cihazını başlatmak için cihaz özelliklerini temsil eden hiyerarşik bir yapıya sahip big_phone.json adlı bir JSON yapılandırma dosyası oluşturun. Örneğin, JSON yapılandırma dosyasında VM'ye ayrılan RAM ve ekran yapılandırması gibi seçenekleri belirtebilirsiniz. Bu dosyanın AOSP ağacında olması gerekmez. Yapılandırmalar için JSON biçimi hakkında ayrıntılı bilgi edinmek istiyorsanız Canonical configurations (Standart yapılandırmalar) başlıklı makaleyi inceleyin.

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

Yapılandırmayı başlatmak için şu komutu çalıştırın:

cvd create --config_file=big_phone.json

launch_cvd'yi (eski) çalıştırma

Belirli yapılandırma özellikleri, hiyerarşik JSON yapılandırma biçiminde kullanılamaz. Bu tür yapılandırmalar için launch_cvd işaretinin varsayılan değerlerini tek düzeyli bir JSON sözlüğünden ayarlayabilirsiniz. Tüm yapılandırma seçeneklerinin tam listesi için cf_flags_validator.cpp sayfasına bakın.

Aşağıda, JSON yapılandırma dosyası kullanarak launch_cvd işaret seçeneklerinin varsayılan değerlerinin nasıl geçersiz kılınacağı ve Cuttlefish başlatıcının özel yapılandırmayı başlatmasının nasıl sağlanacağı ile ilgili bir örnek açıklanmaktadır.

  1. Özel değerler içeren bir JSON yapılandırma dosyası oluşturun, device/google/cuttlefish/shared/config/config_big_phone.json,

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Cuttlefish başlatıcının big_phone yapılandırmasını başlatabilmesi için aşağıdakileri yaparak device/google/cuttlefish/shared/config/config_big_phone.json dosyasına erişimi olduğundan emin olun:

    1. prebuilt_etc_host dosyasında prebuilt_etc_host bölümünü ekleyerek JSON yapısını derleme yapısı olarak bildirin.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. Aşağıdaki kodu device/google/cuttlefish/shared/device.mk içinde çalıştırarak ortaya çıkan derleme yapısı bildirimini Cuttlefish başlatıcıya ekleyin.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Bir android_info.txt dosyası oluşturun ve big_phone yapılandırmasını device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk dosyasına bağlamak için device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk dosyasına aşağıdaki satırı ekleyin:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. Aşağıdaki bilgileri device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt ile doldurarak cihaz türünü big_phone yapılandırmasıyla etiketleyin:

      config=big_phone