Android 11 obsługuje kompilację zrzutów VNDK
artefakty
i zrzuty ekranu dostawcy, których możesz użyć do utworzenia vendor.img
niezależnie
Wersja Androida w drzewie źródłowym. Umożliwia to korzystanie z mieszanych wersji obrazów, takich jak
jako starszego dostawcy
i nowszy obraz systemu.
W tych przypadkach mieszane wersje obrazów nie są obsługiwane.
Android.mk.
Ponieważ Soong generuje podsumowanie dostawcy, moduły zdefiniowane w ModułyAndroid.mk
nie są rejestrowane jako podsumowanie dostawcy (moduły SoC-zastrzeżone wAndroid.mk
również mogą nie działać).System sanitarny. Zrzuty dostawcy i VNDK nie obsługują narzędzia sanitizer jako środka do dezynfekcji musisz utworzyć osobno.
Informacje o migawkach dostawców
Migawka dostawcy to migawka należąca do OEM. To zestaw gotowych modułów C++,
zainstalowane w systemie /vendor
, ale utrzymywane w AOSP. Bez rejestrowania dostawcy
podsumowanie poprzedniej wersji Androida, aktualizacja do nowej wersji
może uszkodzić partycję dostawcy, ponieważ można usunąć moduły migawki dostawcy.
lub zmienione bez zgodności
z interfejsem API lub ABI.
Migawka dostawcy zawiera poniższe moduły w AOSP.
- Biblioteki udostępnione, statyczne i nagłówki udostępnione w bibliotece
vendor: true
lubvendor_available: true
- Biblioteki statyczne VNDK z elementem
vendor_available: true
- Pliki wykonywalne i pliki obiektów zawierające
vendor: true
lubvendor_available: true
Moduły w tych katalogach są uznawane za kod sprzętowy należący do SoC i są ignorowane.
device/
vendor/
hardware/
opróczhardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
Kody sprzętowe należące do układu SOC mogą też znajdować się w innych katalogach. Od tego momentu zrzuty ekranu dostawcy nie obsługują takich konfiguracji.
Tworzenie zrzutów dostawców
Utwórz zrzut dostawcy za pomocą poniższych poleceń.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
Te polecenia tworzą plik vendor-$(TARGET_DEVICE).zip
w
$DIST_DIR
Ten przykład przedstawia plik ZIP ze zrzutem dostawcy:
vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│ ├── binary -> binary files, *.json files
│ ├── header -> *.json files
│ ├── object -> *.o files, *.json files
│ ├── shared -> *.so files, *.json files
│ └── static -> *.a files, *.json files
├── arch-arm-armv8-a -> (arch-arm64-armv8-a)
├── configs -> *.rc files, *.xml files
├── include -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES -> license txt files
- Pliki JSON zawierają flagi takie jak nazwa modułu, wyeksportowane katalogi
Pliki:
init_rc
i pliki (vintf_fragments
). - Katalog
configs
zawiera pliki.rc
i.xml
z flaginit_rc
ivintf_fragments
.
Instalowanie zrzutów dostawców
Aby zainstalować zrzut dostawcy, przejdź do katalogu docelowego i użyj polecenia tych poleceń.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
To polecenie generuje
/vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
Poniższy przykład przedstawia strukturę katalogu zrzutu dostawcy:
vendor/vendor name/vendor_snapshot/
├── v30
│ ├── arm64
│ │ ├── arch-arm64-armv8-a
│ │ │ ├── binary -> (prebuilt libs)
│ │ │ ├── object -> (prebuilt libs)
│ │ │ ├── shared -> (prebuilt libs)
│ │ │ └── static -> (prebuilt libs)
│ │ ├── arch-arm-armv8-a -> (same as above)
│ │ ├── configs -> (config files)
│ │ ├── include -> (exported header files)
│ │ ├── NOTICE_FILES -> (license files)
│ │ └── Android.bp -> (snapshot modules)
│ ├── arm -> (same as above)
│ ├── x86_64 -> (same as above)
│ └── x86 -> (same as above)
└── (other vendor versions) -> (same as above)
Tworzenie obrazów dostawców
Korzystanie z kompilacji zrzutu VNDK
artefakty
i podsumowanie dostawcy, możesz utworzyć vendor.img
niezależnie
na drzewie źródłowym, co umożliwia tworzenie mieszanych wersji
obrazów. Po zainstalowaniu zrzutu VNDK i zrzutu dostawcy ustaw
BOARD_VNDK_VERSION
do wersji dostawcy. Na przykład:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
Gdy BOARD_VNDK_VERSION
ma wartość inną niż current
, kompilacja
system:
- Włącza moduły zrzutów VNDK i moduły zrzutów od dostawcy
BOARD_VNDK_VERSION
Każdy moduł zrzutu zastępuje moduł źródłowy C++ o tej samej nazwie. - Ustawia wartość
BOARD_VNDK_VERSION
naro.vndk.version
. - Instaluje moduły zrzutu VNDK z
BOARD_VNDK_VERSION
w:system_ext
.