Zrzut VNDK to zestaw bibliotek VNDK-core i VNDK-SP dla wersji Androida.
Możesz uaktualnić tylko partycję systemową, jeśli system.img
zawiera odpowiedni zrzut VNDK wymagany przez
vendor.img
Oficjalne zrzuty VNDK są tworzone automatycznie na serwerze kompilacji Androida.
i zameldował(a) się w /prebuilts/vndk
drzewa źródłowego Androida. Dla:
w celach programistycznych, można tworzyć zrzuty VNDK lokalnie. Zrzuty VNDK są
obsługiwane w przypadku odmian arm, arm64, x86 i x86_64 TARGET_ARCH
.
Zrzuty kompilacji
Serwer kompilacji Androida generuje artefakty kompilacji i pliki zrzutu VNDK za pomocą podanych niżej parametrów kompilacji i poleceń kompilacji.
Parametry kompilacji
Nazwa celu kompilacji to vndk
. Konfiguracja celu kompilacji
poniżej.
TARGET_PRODUCT |
TARGET_ARCH |
TARGET_ARCH_VARIANT |
---|---|---|
aosp_arm |
arm |
armv7-a-neon |
aosp_arm64 |
arm64 |
armv8-a |
aosp_x86 |
x86 |
x86 |
aosp_x86_64 |
x86_64 |
x86_64 |
TARGET_PRODUCT=aosp_$(TARGET_ARCH)
TARGET_BUILD_VARIANT=user
- Element
TARGET_ARCH
jest taki sam jak ogólny obraz systemu (GSI) łupy docelowe (arm
,arm64
,x86
,x86_64
). TARGET_ARCH_VARIANT
W przypadku zrzutu w wersji 28 (Android 9) lub nowszej obejmuje popularne konfiguracje wymienione powyżej.
Polecenia kompilacji
Oficjalne podsumowania: Android 9 i nowsze wersje
zawiera przykładowy cel (vndk
) w:
vndk.mk
, który kompiluje i wyświetla VNDK
zrzut do $DIST_DIR
. Plik ZIP ze zrzutem używa formatu
android-vndk-$(TARGET_ARCH).zip
Na przykład:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
Serwer kompilacji Androida używa polecenia
skrypt build.sh
do utworzenia całego obsługiwanego archiwum.
rodzaje za pomocą poniższego polecenia.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
Zrzut VNDK wersji Androida jest generowany na podstawie gałąź wydania.
Kompiluj lokalnie
W trakcie programowania możesz tworzyć zrzuty VNDK z lokalnego drzewa źródłowego za pomocą tych poleceń.
- Aby utworzyć wszystkie obsługiwane łuki jednocześnie, wykonaj ten skrypt kompilacji
(
build.sh
).cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- Aby utworzyć konkretny element
TARGET_ARCH
, wykonaj to poleceń.lunch aosp_TARGET_ARCH-user
m -j vndk dist
Zostanie utworzony odpowiedni plik android-vndk-$(TARGET_ARCH).zip
poniżej $DIST_DIR
.
Pliki zrzutów
Zrzut VNDK zawiera następujące pliki.
- Wariant dostawcy bibliotek udostępnionych VNDK-core i VNDK-SP.
- Udostępnione biblioteki LL-NDK nie są potrzebne, ponieważ są zgodne wstecznie.
- W przypadku 64-bitowych celów:
TARGET_ARCH
i Liczba utworzonych i uwzględnionych bibliotekTARGET_2ND_ARCH
:
- Lista bibliotek z rdzeniami VNDK, VNDK-SP, LL-NDK i VNDK-prywatnych znajduje się na stronie
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
- Pliki licencji.
module_paths.txt
Rejestruje ścieżki modułów dla wszystkich plików VNDK bibliotekami potrzebnymi do sprawdzenia, czy projekty SGT mają źródła w danym drzewie źródłowym Androida.
Dla danego pliku ZIP ze zrzutem VNDK
android-vndk-$(TARGET_ARCH).zip
, gotowe biblioteki VNDK są
pogrupowane w osobnych katalogach o nazwach
arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
według interfejsu ABI
i indywidualnością. Na przykład w języku android-vndk-arm64.zip
jest 64-bitowa libs,
są umieszczane w hierarchii poniżej arch-arm64-armv8-a
, a 32-bitowe biblioteki lib to
umieszczonych na liście arch-arm-armv8-a
. Poniższy przykład pokazuje
Struktura katalogu dla VNDK w arm64 (TARGET_ARCH=arm64
)
plik ZIP ze zrzutem (android-vndk-arm64.zip
).
Kompilacja na potrzeby zrzutów dostawców
Android 11 obsługuje
dostawca
, które pozwalają kompilować vendor.img
niezależnie
wersję Androida z drzewa źródłowego. Domyślny zrzut VNDK zawiera
pliki z biblioteki udostępnionej (.so
), które można zainstalować na urządzeniach i
z plikami binarnymi w C++ dostawcy w czasie działania. Aby budować w porównaniu
tego zrzutu VNDK, potrzebujesz dodatkowych artefaktów, takich jak pliki nagłówka
wyeksportowanych flag.
Generowanie takich artefaktów (wraz ze zrzutem VNDK) ze źródła lokalnego użyj poniższego polecenia.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
To polecenie tworzy android-vndk-$(TARGET_ARCH).zip
pliki w
$DIST_DIR
Przykład poniżej to plik ZIP ze zrzutem arm64 VNDK
za pomocą artefaktów kompilacji. Pliki pogrubione to nowo dodane pliki do normalnego folderu VNDK
(widoczne na Rys. 1) i dołącz pliki JSON (które przechowują
cflags
każdej biblioteki) i wszystkie wyeksportowane pliki nagłówka.
android-vndk-arm64.zip ├── arch-arm64-armv8-a │ └── shared │ ├── vndk-core -> *.so files, *.json files │ └── vndk-sp -> *.so files, *.json files ├── arch-arm-armv8-a -> (same as arch-arm64-armv8-a) ├── configs -> *.libraries.txt, module_paths.txt, module_names.txt ├── include -> exported header files (*.h, *.hh, etc.) └── NOTICE_FILES -> license txt files
Prześlij zrzuty VNDK
Zrzuty VNDK są sprawdzane w drzewie źródłowym w
/prebuilts/vndk/vVER
, gdzie
Wartość VER
jest równa wersji zrzutu VNDK
(jest ona zgodna z wersją pakietu SDK odpowiedniej wersji Androida). Dla:
na przykład zrzut VNDK Androida 8.1 ma wersję 27.
Używanie skryptu update.py
Skrypt update.py
(/development/vndk/snapshot/update.py
) automatyzuje proces
przez dodanie gotowego zrzutu VNDK do drzewa źródłowego. Automatycznie wykrywa
i poprawnie wypełnia powiązane właściwości w
– Android.bp
. Ten skrypt wykonuje te zadania:
- W
/prebuilts/vndk/vVER
do utworzenia nowej gałęzi Git używana jestrepo start
. - Pobiera i rozpakowuje artefakty kompilacji zrzutu VNDK.
- Uruchamia polecenie
gen_buildfiles.py
, aby automatycznie generować pliki kompilacji (Android.bp
). - Uruchamia polecenie
check_gpl_license.py
, aby zweryfikować gotowe biblioteki licencjonowane na mocy ogólnej licencji publicznej (GPL) mają źródła udostępnione w bieżącego drzewa źródłowego. - Wykorzystuje
git commit
do zatwierdzania nowych zmian.
Używaj lokalnie utworzonych zrzutów VNDK
Możesz też używać lokalnie utworzonych zrzutów VNDK. Gdy --local
określono opcję, skrypt update.py
pobiera zrzut VNDK
artefaktów kompilacji z określonego katalogu lokalnego (a nie
serwer kompilacji), który ma pliki android-vndk-$(TARGET_ARCH).zip
,
wygenerowany na podstawie development/vndk/snapshot/build.sh
. Za pomocą
--local
, skrypt update.py
pomija
sprawdzanie licencji i git commit
czynności.
Składnia:
python update.py VER --local local_path
Przykładowe polecenie aktualizacji zrzutu VNDK Androida 8.1 za pomocą kompilacji lokalnej
artefakty w /path/to/local/dir
:
python update.py 27 --local /path/to/local/dir
Przykładowa struktura katalogu lokalnego zrzutu VNDK:
prebuilts/vndk ├── v30 │ ├── arm64 │ │ ├── arch-arm64-armv8-a -> (prebuilt libs) │ │ ├── arch-arm-armv8-a -> (prebuilt libs) │ │ ├── configs -> (config files) │ │ ├── include -> (exported header files) │ │ └── Android.bp -> (VNDK modules with cflags) │ ├── arm -> (same as above) │ ├── x86_64 -> (same as above) │ ├── x86 -> (same as above) │ ├── common │ │ ├── NOTICE_FILES -> (license files) │ │ └── Android.bp -> (license file modules) │ └── Android.bp -> (*.libraries.30.txt modules) └── (other VNDK versions) -> (same as above)Lokalne artefakty kompilacji są dodawane automatycznie, jeśli artefakty zostały utworzone za pomocą
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
Zainstaluj zrzuty VNDK
Obraz systemu instaluje biblioteki zrzutu VNDK w czasie kompilacji przy użyciu
informacje w: BOARD_VNDK_VERSION
,
PRODUCT_EXTRA_VNDK_VERSIONS
i ro.vndk.version
.
Możesz kontrolować, które zrzuty VNDK mają być instalowane z gotowego dysku VNDK
katalogów zrzutów (np. /prebuilts/vndk/v29
lub
/prebuilts/vndk/v30
), używając jednej z poniższych opcji.
- Opcja 1.
BOARD_VNDK_VERSION
. Użyj modułów migawek do tworzenia bieżących modułów dostawcy i instalowania tylko oraz moduły zrzutów, które są wymagane dla modułów dostawcy. - Opcja 2.
PRODUCT_EXTRA_VNDK_VERSIONS
. Zainstaluj moduły zrzutu VNDK niezależnie od bieżących modułów dostawcy. Spowoduje to zainstalowanie gotowych zrzutów VNDK wymienionych wPRODUCT_EXTRA_VNDK_VERSIONS
bez łączenia go z żadnym innym kontem modułów podczas tworzenia kampanii.
Ustaw BOARD_VNDK_VERSION
BOARD_VNDK_VERSION
pokazuje wersję VNDK używaną przez obecnego dostawcę
które są niezbędne. Jeśli BOARD_VNDK_VERSION
ma
dostępna wersja zrzutu VNDK w katalogu /prebuilts/vndk
,
Zainstalowano zrzut VNDK wskazany w BOARD_VNDK_VERSION
. Jeśli
zrzut VNDK nie jest dostępny w katalogu, występuje błąd kompilacji.
Zdefiniowanie atrybutu BOARD_VNDK_VERSION
umożliwia również skonfigurowanie modułów VNDK
Zainstalowano. Moduły dostawcy są połączone z wersją zrzutu VNDK zdefiniowaną w
BOARD_VNDK_VERSION
w momencie kompilacji (nie jest to bieżąca wersja
VNDK w źródle systemowym). Podczas pobierania pełnego drzewa źródłowego z
jest repozytorium, źródła systemowe i źródła oparte na tym samym Androidzie
wersji.
Ustaw PRODUCT_EXTRA_VNDK_VERSIONS
PRODUCT_EXTRA_VNDK_VERSIONS
wyświetla dodatkowe wersje VNDK, które mają zostać
Zainstalowano. Normalnie wystarczy jeden zrzut VNDK dla bieżącego
partycji dostawcy. Jednak w niektórych przypadkach konieczne może być dodanie kilku
i zrzuty w jednym obrazie systemu. Na przykład GSI zawiera wiele zrzutów dysku,
obsługi wielu wersji dostawców z jednym obrazem systemu. Wg ustawienia
PRODUCT_EXTRA_VNDK_VERSIONS
, możesz zainstalować zrzut VNDK
modułów oprócz wersji VNDK w BOARD_VNDK_VERSION
.
Jeśli PRODUCT_EXTRA_VNDK_VERSIONS
ma konkretną listę wersji,
system kompilacji wyszukuje gotowe zrzuty listy wersji w
prebuilts/vndk
. Jeśli system kompilacji znajdzie wszystkie
dodaje zrzuty ekranu, instaluje te pliki zrzutów dla każdego punktu APEX VNDK
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
.
Brak wersji powoduje błąd kompilacji.
Moduły VNDK nie łączą się z modułami dostawcy w momencie kompilacji, ale można je
jest używana w czasie działania, jeśli moduły dostawcy na partycji dostawcy wymagają jednego z tych elementów:
z zainstalowanymi wersjami VNDK. Wartość PRODUCT_EXTRA_VNDK_VERSIONS
jest prawidłowa
tylko wtedy, gdy zdefiniowano BOARD_VNDK_VERSION
.
PLATFORM_VNDK_VERSION
PLATFORM_VNDK_VERSION
określa wersję VNDK dla bieżącego VNDK
w źródle systemowym. Wartość jest ustawiana automatycznie:
- Przed wydaniem sekcji
PLATFORM_VNDK_VERSION
jest ustawiony jakoPLATFORM_VERSION_CODENAME
- W momencie wersji aplikacja
PLATFORM_SDK_VERSION
jest kopiowana doPLATFORM_VNDK_VERSION
Po opublikowaniu wersji na Androida bieżące biblioteki VNDK zostaną
zainstalowano w VNDK APEX
(/system/apex/com.android.vndk.vVER
), gdzie
VER
to wersja przechowywana w
PLATFORM_VNDK_VERSION
Gdy BOARD_VNDK_VERSION
ma wartość current
, makro
PLATFORM_VNDK_VERSION
jest przechowywane w: ro.vndk.version
,
w przeciwnym razie BOARD_VNDK_VERSION
jest przechowywana w
ro.vndk.version
PLATFORM_VNDK_VERSION
ma wartość:
wersję pakietu SDK w momencie opublikowania Androida; przed jego wydaniem alfanumeryczny system operacyjny
dla PLATFORM_VNDK_VERSION
jest używany kryptonim.
Podsumowanie ustawień wersji VNDK
Tabela zawiera podsumowanie ustawień wersji VNDK.
Tworzenie dostawcy |
Wersja tablicy |
Wersja pakietu SDK |
Wersja platformy |
Właściwość wersji |
Zainstaluj katalog |
---|---|---|---|---|---|
Bieżące moduły VNDK | current |
Przed | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
Po | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
Gotowe moduły zrzutu | VNDK_VER dla zrzutu |
Przed lub po | CODE_NAME lub SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- Wersja płyty (
BOARD_VNDK_VERSION
). VNDK wersji wymaganej przez moduły dostawcy. Ustaw jakocurrent
, jeśli moduły dostawcy można połączyć z bieżącymi modułami systemowymi. - Wersja platformy (
PLATFORM_VNDK_VERSION
). Wersja VNDK tworzona przez bieżące moduły systemowe. Utworzone tylko wtedy, gdyBOARD_VNDK_VERSION
– wartość bieżąca. - Usługa wersji (
ro.vndk.version
). Usługa określające wersję VNDK, której pliki binarne i lib w pliku provider.img wymagają bieganie. Zapisano w:vendor.img
w/vendor/default.prop