Trang này mô tả cách tạo thiết bị Cuttlefish 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ể thực hiện các tuỳ chỉnh dành riêng cho Cuttlefish, chẳng hạn như các tuỳ chọn cài đặt trước cấu hình bảng thiết bị ảo (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), hạt nhân tạo sẵn, trình tải khởi động tạo sẵn, thuộc tính nhà cung cấp, cấu hình hệ thống, hỗ trợ ảo hoá lồng nhau và 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 lớn gấp 10 lần so với một thiết bị Cuttlefish thông thường.
Kế thừa từ một mục tiêu hiện có
Cách 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 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 nhất định không có trong đị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 của cờ launch_cvd
từ một từ điển JSON cấp một. Để biết danh sách đầy đủ tất cả cá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.
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, }
Để 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ệpdevice/google/cuttlefish/shared/config/config_big_phone.json
bằng cách làm như sau: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ệpdevice/google/cuttlefish/shared/config/Android.bp
.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }
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 nội dung sau trong
device/google/cuttlefish/shared/device.mk
.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
Tạo tệp
android_info.txt
và liên kết cấu hìnhbig_phone
với tệp bằng cách thêm dòng sau vàodevice/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
Gắn nhãn loại thiết bị bằng cấu hình
big_phone
bằng cách điềndevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
bằng nội dung sau:config=big_phone