Na tej stronie znajdziesz informacje o tworzeniu dostosowanego urządzenia Cuttlefish. Cuttlefish zawiera wstępnie zdefiniowane typy urządzeń w różnych formatach, które są wymienione w AndroidProducts.mk. Oprócz ogólnych opcji dostosowywania urządzenia opisanych w sekcji Dodawanie nowego urządzenia możesz wprowadzić dostosowania specyficzne dla Cuttlefish, takie jak gotowe konfiguracje wirtualnej płyty urządzenia (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), wstępnie skompilowane jądra, wstępnie skompilowane programy rozruchowe, 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.
Poniżej znajdziesz instrukcje tworzenia fikcyjnego urządzenia x86-64big_phone 10 razy większego od zwykłego urządzeniabig_phoneCuttlefish.
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 dotyczącego lunchu
Wstaw element docelowy 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. Na przykład w pliku konfiguracyjnym JSON możesz określić opcje takie jak pamięć RAM przydzielona do maszyny wirtualnej i konfiguracja wyświetlania. Ten plik nie musi znajdować się w drzewie AOSP.
Szczegółowe informacje o formacie JSON dla konfiguracji znajdziesz w artykule Konfiguracje kanoniczne.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Aby uruchomić konfigurację, wpisz:
cvd create --config_file=big_phone.jsonUruchom 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 poziomu słownika JSON jednego poziomu. 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 konfiguracyjnego JSON oraz włączania programu uruchamiającego Cuttlefish, aby uruchamiać konfigurację niestandardową.
Utwórz plik konfiguracyjny JSON,
device/google/cuttlefish/shared/config/config_big_phone.json, z własnymi wartościami.{ "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 do plikudevice/google/cuttlefish/shared/config/config_big_phone.json, wykonując te czynności: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
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 do plikudevice/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mkten wiersz:TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txtOznacz typ urządzenia za pomocą konfiguracji
big_phone, wypełniającdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txttymi informacjami:config=big_phone