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_phone
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 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_phone
Definiowanie 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.json
Uruchom 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_host
w 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.txt
i powiąż z nim konfiguracjębig_phone
, dodając do plikudevice/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk
ten wiersz:TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
Oznacz typ urządzenia za pomocą konfiguracji
big_phone
, wypełniającdevice/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
tymi informacjami:config=big_phone