Na tej stronie dowiesz się, jak utworzyć dostosowane urządzenie Cuttlefish. Cuttlefish
zawiera predefiniowane typy urządzeń w różnych formatach, które są wymienione w
AndroidProducts.mk. Oprócz ogólnych opcji dostosowywania urządzeń
opisanych w
Dodawanie nowego urządzenia możesz wprowadzać
dostosowania specyficzne dla Cuttlefish, takie jak ustawienia wstępne konfiguracji płyty wirtualnego urządzenia (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), wstępnie skompilowane jądra,
wstępnie skompilowane programy ładujące, właściwości dostawcy, konfiguracje systemu, obsługa zagnieżdżonej
wirtualizacji i opcje wyświetlania. Pełną listę
parametrów czasu kompilacji, które można dostosować, znajdziesz w
device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk.
Z tych instrukcji dowiesz się, jak utworzyć fikcyjne urządzenie big_phone x86-64, które jest 10 razy większe od zwykłego urządzenia Cuttlefish.
Dziedziczenie z istniejącego celu
Aby dziedziczyć z istniejącego celu:
- Utwórz katalog
device/google/cuttlefish/vsoc_x86_64/big_phone. - Utwórz w tym katalogu plik
aosp_cf.mk.
$(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)
Dodawanie celu lunch
Wstaw cel lunch do pliku device/google/cuttlefish/AndroidProducts.mk:
PRODUCT_MAKEFILES := \
...
big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
...
lunch big_phoneDefiniowanie konfiguracji JSON
Aby uruchomić urządzenie Cuttlefish, utwórz plik konfiguracji JSON o nazwie
big_phone.json z hierarchiczną strukturą reprezentującą
właściwości urządzenia. W pliku konfiguracji JSON możesz na przykład określić opcje takie jak ilość pamięci RAM przydzielonej do maszyny wirtualnej i konfiguracja wyświetlacza. Ten plik nie musi znajdować się w drzewie AOSP.
Więcej informacji o formacie JSON w przypadku konfiguracji znajdziesz w artykule
Konfiguracje kanoniczne.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Aby uruchomić konfigurację, wykonaj to polecenie:
cvd create --config_file=big_phone.jsonUruchamianie launch_cvd (starsza wersja)
Niektóre właściwości konfiguracji nie są dostępne w hierarchicznym formacie konfiguracji JSON. W przypadku takich konfiguracji możesz ustawić wartości domyślne flagi launch_cvd z jednowymiarowego słownika JSON. Pełną listę wszystkich
opcji konfiguracji znajdziesz w
cf_flags_validator.cpp.
Poniżej znajdziesz przykład zastępowania wartości domyślnych opcji flagi
launch_cvd za pomocą pliku konfiguracji JSON i włączania programu uruchamiającego Cuttlefish, aby uruchomić
konfigurację niestandardową.
Utwórz plik konfiguracji JSON,
device/google/cuttlefish/shared/config/config_big_phone.json, z wartościami niestandardowymi.{ "x_res": 7200, "y_res": 12800, "dpi": 320, "memory_mb": 40960, "ddr_mem_mb": 49150, }Aby program uruchamiający Cuttlefish mógł uruchomić konfigurację
big_phone, upewnij się, że ma dostęp dodevice/google/cuttlefish/shared/config/config_big_phone.jsonpliku. Aby to zrobić:Zadeklaruj artefakt JSON jako artefakt kompilacji, dodając sekcję
prebuilt_etc_hostw plikudevice/google/cuttlefish/shared/config/Android.bp.prebuilt_etc_host { name: "cvd_config_big_phone.json", src: "config_big_phone.json", sub_dir: "cvd_config", }Dodaj deklarację artefaktu kompilacji do programu uruchamiającego Cuttlefish, wykonując to polecenie w pliku
device/google/cuttlefish/shared/device.mk.$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)Utwórz plik
android_info.txti powiąż z nim konfiguracjębig_phone, dodając ten wiersz do plikudevice/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.txtOznacz typ urządzenia konfiguracją
big_phone, wypełniającdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txttymi informacjami:config=big_phone