Mürekkep balığı: Özel bir cihaz oluşturma

Bu sayfada, özelleştirilmiş bir Mürekkep Balığı cihazının nasıl oluşturulacağı açıklanmaktadır. Mürekkepbalığı, AndroidProducts.mk bölümünde listelenen 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, sanal cihaz kartı yapılandırma hazır ayarları (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), çekirdek hazır ayarları, önyükleme yükleyici hazır ayarları, tedarikçi firma özellikleri, sistem yapılandırmaları, iç içe yerleştirilmiş sanallaştırma desteği ve görüntüleme seçenekleri gibi Cuttlefish'e özgü özelleştirmeler yapabilirsiniz. Ö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, sıradan bir Mürekkep Balığı cihazının on katı büyüklüğünde kurgusal bir x86-64 big_phone cihazının nasıl oluşturulacağı açıklanmaktadır.

Mevcut bir hedeften devralma

Mevcut bir hedeften devralmak için:

  • Bir device/google/cuttlefish/vsoc_x86_64/big_phone dizin oluşturun.
  • Söz konusu 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 sanal makine için 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 Kurallı 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 (eski) işlevini ç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 tek düzeyli bir JSON sözlüğünden launch_cvd işareti varsayılan değerlerini ayarlayabilirsiniz. Tüm yapılandırma seçeneklerinin tam listesi için cf_flags_validator.cpp bölümüne bakın.

Aşağıda, JSON yapılandırma dosyası kullanılarak launch_cvd işaret seçeneklerinin varsayılan değerlerinin nasıl geçersiz kılınacağı ve Cuttlefish başlatıcısının özel yapılandırmayı başlatması için nasıl etkinleştirileceği açıklanmaktadır.

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

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

    1. device/google/cuttlefish/shared/config/Android.bp dosyasına prebuilt_etc_host kıtasını ekleyerek JSON yapısını bir derleme yapısı olarak tanımlayın.

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. Elde edilen derleme yapı bildirimini device/google/cuttlefish/shared/device.mk'te aşağıdakileri çalıştırarak Cuttlefish başlatıcısına ekleyin.

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

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

      config=big_phone