Cumi-cumi: Membuat perangkat khusus

Halaman ini menjelaskan cara membuat perangkat Cuttlefish yang disesuaikan. Sotong menyertakan jenis perangkat yang telah ditetapkan dalam berbagai faktor bentuk seperti yang tercantum dalam AndroidProducts.mk. Selain opsi penyesuaian perangkat umum yang dijelaskan dalam Menambahkan perangkat baru, Anda dapat membuat penyesuaian khusus Cuttlefish seperti preset konfigurasi board perangkat virtual (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), bawaan kernel, bawaan bootloader, properti vendor, konfigurasi sistem, dukungan virtualisasi bertingkat, dan opsi tampilan. Untuk daftar lengkap parameter waktu build yang dapat disesuaikan, lihat device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

Langkah-langkah berikut menjelaskan cara membuat perangkat big_phone fiktif 10 kali ukuran perangkat Cuttlefish biasa.

Mewarisi dari target yang sudah ada

Untuk mewarisi dari target yang ada:

  • Buat direktori device/google/cuttlefish/vsoc_x86_64/big_phone.
  • Buat file aosp_cf.mk di direktori tersebut.
$(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)

Menambahkan target makan siang

Sisipkan target lunch ke dalam file device/google/cuttlefish/AndroidProducts.mk:

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

Menentukan konfigurasi JSON

Untuk meluncurkan perangkat Cuttlefish, buat file konfigurasi JSON bernama big_phone.json dengan struktur hierarkis yang mewakili properti perangkat. Misalnya, dalam file konfigurasi JSON, Anda dapat menentukan opsi seperti RAM yang dialokasikan untuk VM dan konfigurasi tampilan. File ini tidak harus berada dalam hierarki AOSP. Untuk mengetahui detail tentang format JSON untuk konfigurasi, lihat Konfigurasi kanonis.

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

Untuk meluncurkan konfigurasi, jalankan:

cvd create --config_file=big_phone.json

Jalankan launch_cvd (lama)

Properti konfigurasi tertentu tidak tersedia dalam format konfigurasi JSON hierarkis. Untuk konfigurasi tersebut, Anda dapat menetapkan nilai default tanda launch_cvd dari kamus JSON satu tingkat. Untuk mengetahui daftar lengkap semua opsi konfigurasi, lihat cf_flags_validator.cpp.

Berikut ini contoh cara mengganti nilai default opsi flag launch_cvd menggunakan file konfigurasi JSON dan mengaktifkan peluncur Cuttlefish untuk meluncurkan konfigurasi kustom.

  1. Buat file konfigurasi JSON, device/google/cuttlefish/shared/config/config_big_phone.json, dengan nilai kustom.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Agar peluncur Cuttlefish dapat meluncurkan konfigurasi big_phone, pastikan peluncur tersebut memiliki akses ke file device/google/cuttlefish/shared/config/config_big_phone.json dengan melakukan hal berikut:

    1. Deklarasikan artefak JSON sebagai artefak build dengan menambahkan baris prebuilt_etc_host dalam file 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. Tambahkan deklarasi artefak build yang dihasilkan ke peluncur Cuttlefish dengan menjalankan perintah berikut di device/google/cuttlefish/shared/device.mk.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Buat file android_info.txt dan kaitkan konfigurasi big_phone ke file tersebut dengan menambahkan baris berikut ke 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. Beri label jenis perangkat dengan konfigurasi big_phone dengan mengisi device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt dengan hal berikut:

      config=big_phone