Trang này mô tả cách tạo một 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 lựa 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 chế độ tuỳ chỉnh dành riêng cho Cuttlefish, chẳng hạn như các chế độ đặt trước cấu hình bảng thiết bị ảo (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), các bản dựng sẵn của nhân, các bản dựng sẵn của trình tải khởi động, các thuộc tính của nhà cung cấp, cấu hình hệ thống, khả năng hỗ trợ ảo hoá lồng nhau và các lựa chọn hiển thị. Để xem 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ả tưởng có kích thước gấp 10 lần một thiết bị Cuttlefish 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 một 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
Để chạy thiết bị Cuttlefish, hãy tạo một tệp cấu hình JSON có tên là big_phone.json
với cấu trúc phân cấp đại diện cho các thuộc tính của thiết bị. Ví dụ: trong tệp cấu hình JSON, bạn có thể chỉ định các lựa chọn như RAM được phân bổ cho VM và cấu hình màn hình. Tệp này không nhất thiết 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ó trong định dạng cấu hình JSON phân cấp. Đối với những cấu hình như vậy, bạn có thể đặt các giá trị mặc định của cờ launch_cvd
từ một từ điển JSON một cấp. Để biết danh sách đầy đủ về tất cả các lựa chọn cấu hình, hãy xem cf_flags_validator.cpp
.
Sau đây mô tả một ví dụ về cách ghi đè các giá trị mặc định của các lựa chọn về cờ launch_cvd
bằng cách sử dụ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 một tệp cấu hình JSON,
device/google/cuttlefish/shared/config/config_big_phone.json
, có 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 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 khổ thơ
prebuilt_etc_host
vào 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 khai báo cấu phần phần mềm kết quả 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)
Tạo một 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ền sẵndevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
bằng nội dung sau:config=big_phone