Mực nang: Tạo thiết bị tuỳ chỉnh

Trang này mô tả cách tạo thiết bị Mực ống tuỳ chỉnh. Cuttlefish bao gồm các loại thiết bị được xác định trước ở nhiều kiểu dáng như được liệt kê trong AndroidProducts.mk. Ngoài các tuỳ chọn tuỳ chỉnh thiết bị chung được mô tả trong phần Thêm thiết bị mới, bạn có thể tuỳ chỉnh dành riêng cho cá nhảy, chẳng hạn như các giá trị đặt trước cấu hình bảng thiết bị ảo (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), kernel tạo sẵn, tạo sẵn cho trình tải khởi động, thuộc tính của nhà cung cấp, cấu hình hệ thống, hỗ trợ ảo hoá lồng nhau và các tuỳ chọn hiển thị. Để biết danh sách đầy đủ các tham số thời gian xây dựng có thể tuỳ chỉnh, hãy xem device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.

Các bước sau đây mô tả cách tạo một thiết bị big_phone x86-64 giả định có kích thước gấp 10 lần so với một thiết bị mực ống thông thường.

Kế thừa từ một mục tiêu hiện có

Để kế thừa từ một mục tiêu hiện có:

  • Tạo thư mục device/google/cuttlefish/vsoc_x86_64/big_phone.
  • Tạo một tệp aosp_cf.mk trong thư mục đó.
$(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)

Thêm mục tiêu cho bữa trưa

Chèn mục tiêu lunch vào tệp device/google/cuttlefish/AndroidProducts.mk:

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

Xác định cấu hình JSON

Để khởi chạy thiết bị Cuttlefish, hãy tạo một tệp cấu hình JSON có tên big_phone.json với cấu trúc phân cấp đại diện cho các thuộc tính thiết bị. Ví dụ: trong tệp cấu hình JSON, bạn có thể chỉ định các tuỳ chọn như RAM được phân bổ cho máy ảo và cấu hình màn hình. Tệp này không bắt buộc phải nằm trong cây AOSP. Để biết thông tin chi tiết về định dạng JSON cho cấu hình, hãy xem phần Cấu hình chuẩn.

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

Để chạy cấu hình, hãy chạy:

cvd create --config_file=big_phone.json

Chạy launch_cvd (cũ)

Một số thuộc tính cấu hình không có sẵn ở định dạng cấu hình JSON phân cấp. Đối với các cấu hình như vậy, bạn có thể đặt giá trị mặc định cho cờ launch_cvd từ từ điển JSON một cấp. Để biết danh sách đầy đủ tất cả tuỳ chọn cấu hình, hãy xem cf_flags_validator.cpp.

Phần sau đây mô tả ví dụ về cách ghi đè các giá trị mặc định của các tuỳ chọn cờ launch_cvd bằng tệp cấu hình JSON và cho phép trình chạy Cuttlefish chạy cấu hình tuỳ chỉnh.

  1. Tạo tệp cấu hình JSON, device/google/cuttlefish/shared/config/config_big_phone.json, với các giá trị tuỳ chỉnh.

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Để trình chạy Cuttlefish khởi chạy cấu hình big_phone, hãy đảm bảo trình chạy này có quyền truy cập vào tệp device/google/cuttlefish/shared/config/config_big_phone.json bằng cách thực hiện như sau:

    1. Khai báo cấu phần phần mềm JSON dưới dạng cấu phần phần mềm bản dựng bằng cách thêm bài thơ prebuilt_etc_host trong tệp 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. Thêm nội dung khai báo cấu phần phần mềm bản dựng thu được vào trình chạy Cuttlefish bằng cách chạy lệnh sau trong device/google/cuttlefish/shared/device.mk.

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. Tạo tệp android_info.txt và liên kết cấu hình big_phone với tệp đó bằng cách thêm dòng sau vào 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. Gắn nhãn loại thiết bị bằng cấu hình big_phone bằng cách điền sẵn device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt như sau:

      config=big_phone