Uno snapshot VNDK è un insieme di librerie VNDK-core e VNDK-SP per una release Android.
Puoi eseguire l'upgrade solo della partizione di sistema se system.img
include lo snapshot VNDK corrispondente necessario
vendor.img
.
Gli snapshot VNDK ufficiali vengono creati automaticamente sul server di build Android
ed è stato registrato in /prebuilts/vndk
della struttura di origine di Android. Per
per scopi di sviluppo, puoi creare snapshot VNDK localmente. Gli snapshot VNDK vengono
supportato per le versioni TARGET_ARCH
ARM, Arm64, x86 e x86_64.
Crea snapshot
Il server di build Android genera artefatti della build e file di snapshot VNDK utilizzando i seguenti parametri e comandi build.
Parametri build
Il nome della destinazione di build è vndk
. La configurazione della destinazione della build
è mostrato di seguito.
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
TARGET_ARCH
è uguale all'immagine di sistema generica (GSI) archi di destinazione (arm
,arm64
,x86
,x86_64
).TARGET_ARCH_VARIANT
. Per snapshot v28 (Android 9) e versioni successive, include le configurazioni più comuni elencate sopra.
Comandi di Build
Per le istantanee ufficiali, Android 9 e versioni successive
include un target di esempio (vndk
) in
vndk.mk
che crea e restituisce un VNDK
snapshot a $DIST_DIR
. Il file ZIP dello snapshot utilizza il formato
android-vndk-$(TARGET_ARCH).zip
.
Ad esempio:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
Il server di build Android utilizza
Script build.sh
per creare tutti gli archi supportati
con il seguente comando.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
L'istantanea VNDK per una versione Android viene generata dal modello ramo di rilascio.
Crea localmente
Durante lo sviluppo, puoi creare snapshot VNDK da una struttura di origine locale con i seguenti comandi.
- Per creare contemporaneamente tutti gli archi supportati, esegui il seguente script di build
(
build.sh
)cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- Per creare uno specifico
TARGET_ARCH
, esegui questo comando: tramite comandi SQL.lunch aosp_TARGET_ARCH-user
m -j vndk dist
Il file android-vndk-$(TARGET_ARCH).zip
corrispondente è stato creato
sotto $DIST_DIR
.
File di snapshot
Uno snapshot VNDK include i seguenti file.
- Variante del fornitore delle librerie condivise con core VNDK e VNDK-SP.
- Le librerie condivise LL-NDK non sono necessarie perché sono compatibili con le versioni precedenti.
- Per i target a 64 bit, sia
TARGET_ARCH
che Sono state create e incluseTARGET_2ND_ARCH
librerie.
- L'elenco delle librerie VNDK-core, VNDK-SP, LL-NDK e VNDK-private è disponibile all'indirizzo
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
. - File di licenza.
module_paths.txt
. Registra i percorsi dei moduli per tutte le VNDK che è necessario per verificare che i progetti GPL dispongano di fonti disponibili in un determinato albero di origine Android.
Per un determinato file ZIP snapshot VNDK,
android-vndk-$(TARGET_ARCH).zip
, le librerie predefinite VNDK vengono
raggruppate in directory separate denominate
arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
secondo ABI
un po' di freschezza. Ad esempio, per android-vndk-arm64.zip
, il file libs a 64 bit
sono posizionati in arch-arm64-armv8-a
e le librerie a 32 bit
posizionato sotto arch-arm-armv8-a
. L'esempio seguente mostra
struttura di directory per un VNDK arm64 (TARGET_ARCH=arm64
)
il file ZIP dello snapshot (android-vndk-arm64.zip
).
Crea per snapshot dei fornitori
Android 11 supporta
fornitore
snapshot, che ti consentono di creare vendor.img
indipendentemente
la versione di Android nell'albero del codice sorgente. Uno snapshot VNDK predefinito contiene
i file della raccolta condivisa (.so
) che possono essere installati sui dispositivi e
collegati dai file binari C++ del fornitore in runtime. Per creare contro
lo snapshot VNDK, ti servono artefatti aggiuntivi, come file di intestazione
i flag esportati.
a generare questi artefatti (insieme allo snapshot VNDK) da un'origine locale. usa il seguente comando.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
Questo comando crea android-vndk-$(TARGET_ARCH).zip
file in
$DIST_DIR
. L'esempio di seguito è un file ZIP snapshot VNDK ARM64
con gli artefatti della build. I file in grassetto sono file appena aggiunti al VNDK normale.
uno snapshot (mostrato nella Figura 1) e includere file JSON (che archiviano
cflags
di ogni libreria) e tutti i file di intestazione esportati.
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
Carica snapshot VNDK
Gli snapshot VNDK vengono controllati nell'albero di origine in
/prebuilts/vndk/vVER
, dove
VER
è uguale alla versione dello snapshot VNDK
(che segue la versione dell'SDK della release di Android corrispondente). Per
ad esempio, l'istantanea VNDK di Android 8.1 ha la versione 27.
Utilizza lo script update.py
Lo script update.py
(/development/vndk/snapshot/update.py
) automatizza il processo di
con l'aggiunta di uno snapshot VNDK predefinito all'albero di origine. Rileva automaticamente
creare artefatti e compilare correttamente le proprietà associate nel
generato Android.bp
. Questo script esegue le seguenti attività:
- In
/prebuilts/vndk/vVER
, utilizzarepo start
per creare un nuovo ramo Git. - Recupera e decomprime gli artefatti di build dello snapshot VNDK.
- Esegue
gen_buildfiles.py
per generare automaticamente i file di build (Android.bp
). - Esegue
check_gpl_license.py
per verificare le librerie predefinite autorizzate ai sensi della General Public License (GPL) dispongono di fonti rilasciate in struttura di origine attuale. - Utilizza
git commit
per eseguire il commit di nuove modifiche.
Usa snapshot VNDK creati localmente
Puoi anche utilizzare snapshot VNDK creati localmente. Quando --local
, lo script update.py
recupera lo snapshot VNDK
gli artefatti della build dalla directory locale specificata (anziché l'interfaccia
server di compilazione) che contiene i file android-vndk-$(TARGET_ARCH).zip
generati a partire da development/vndk/snapshot/build.sh
. Con
Opzione --local
, lo script update.py
ignora la modalità GPL
controllo delle licenze e git commit
passaggi.
Sintassi:
python update.py VER --local local_path
Comando di esempio per aggiornare lo snapshot VNDK di Android 8.1 con una build locale
elementi in /path/to/local/dir
:
python update.py 27 --local /path/to/local/dir
Esempio di struttura di directory di uno snapshot VNDK creato localmente:
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)Gli artefatti locali della build vengono aggiunti automaticamente se gli artefatti sono stati creati con
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
.
Installa snapshot VNDK
L'immagine di sistema installa le librerie di snapshot VNDK al momento della creazione utilizzando
informazioni in BOARD_VNDK_VERSION
,
PRODUCT_EXTRA_VNDK_VERSIONS
e ro.vndk.version
.
Puoi controllare quali snapshot VNDK vengono installati dalla piattaforma VNDK predefinita
directory di snapshot (ad esempio, /prebuilts/vndk/v29
o
/prebuilts/vndk/v30
) utilizzando una delle seguenti opzioni.
- Opzione 1:
BOARD_VNDK_VERSION
. Utilizza la moduli snapshot per creare gli attuali moduli del fornitore e installare solo i moduli snapshot richiesti per i moduli del fornitore. - Opzione 2:
PRODUCT_EXTRA_VNDK_VERSIONS
. Installa i moduli snapshot VNDK a prescindere dai moduli del fornitore attuale. Verranno installati gli snapshot VNDK predefiniti elencati inPRODUCT_EXTRA_VNDK_VERSIONS
senza collegarlo ad altri moduli al momento della creazione.
Imposta BOARD_VNDK_VERSION
BOARD_VNDK_VERSION
mostra la versione VNDK del fornitore attuale
sono necessari per la creazione. Se BOARD_VNDK_VERSION
ha un
versione dello snapshot VNDK disponibile nella directory /prebuilts/vndk
,
Lo snapshot VNDK indicato in BOARD_VNDK_VERSION
è installato. Se
lo snapshot VNDK non è disponibile nella directory, si verifica un errore di generazione.
La definizione di BOARD_VNDK_VERSION
consente anche ai moduli VNDK di
installato. Link ai moduli del fornitore con la versione dello snapshot VNDK definita in
BOARD_VNDK_VERSION
al momento della creazione (non viene creato
moduli VNDK nell'origine del sistema). Quando scarichi l'intera struttura di origine da
un repository, le origini del sistema e dei fornitori si basano sullo stesso
.
Imposta PRODUCT_EXTRA_VNDK_VERSIONS
PRODUCT_EXTRA_VNDK_VERSIONS
elenca le versioni VNDK aggiuntive da utilizzare
installato. Di solito è sufficiente avere uno snapshot VNDK per l'attuale
del fornitore. Tuttavia, in alcuni casi potrebbe essere necessario includere più
di snapshot in un'unica immagine di sistema. Ad esempio, GSI dispone di più snapshot
supportare più versioni del fornitore con una sola immagine di sistema. Mediante l'impostazione
PRODUCT_EXTRA_VNDK_VERSIONS
, puoi installare lo snapshot VNDK
oltre alla versione VNDK in BOARD_VNDK_VERSION
.
Se PRODUCT_EXTRA_VNDK_VERSIONS
ha un elenco specifico di versioni,
il sistema di compilazione cerca snapshot predefiniti dell'elenco delle versioni nella
Directory prebuilts/vndk
. Se il sistema di compilazione individua tutti gli elementi elencati
di snapshot, installa i file di snapshot su ogni APEX VNDK
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
,
Le versioni mancanti generano un errore di build.
I moduli VNDK non sono collegati ai moduli del fornitore al momento della creazione, ma possono
utilizzate in fase di runtime, se i moduli del fornitore nella partizione del fornitore richiedono uno dei seguenti
le versioni VNDK installate. PRODUCT_EXTRA_VNDK_VERSIONS
è valido
solo se BOARD_VNDK_VERSION
è definito.
VERSIONE_PIATTAFORMA_VNDK
PLATFORM_VNDK_VERSION
definisce la versione VNDK per l'attuale VNDK
moduli nell'origine del sistema. Il valore viene impostato automaticamente:
- Prima della release,
PLATFORM_VNDK_VERSION
è impostato comePLATFORM_VERSION_CODENAME
. - Al momento del rilascio, l'elemento
PLATFORM_SDK_VERSION
viene copiato inPLATFORM_VNDK_VERSION
.
Dopo il rilascio della versione di Android, le librerie VNDK attuali vengono
installato su VNDK APEX
(/system/apex/com.android.vndk.vVER
), dove
VER
è la versione archiviata in
PLATFORM_VNDK_VERSION
.
Quando il criterio BOARD_VNDK_VERSION
è impostato su current
, il valore
PLATFORM_VNDK_VERSION
è archiviato in ro.vndk.version
,
altrimenti BOARD_VNDK_VERSION
viene archiviato
ro.vndk.version
. Il valore di PLATFORM_VNDK_VERSION
è impostato sul
Versione dell'SDK al momento del rilascio di Android; prima del rilascio, i caratteri alfanumerici Android
nome in codice è utilizzato per PLATFORM_VNDK_VERSION
.
Riepilogo delle impostazioni della versione VNDK
La tabella riassume le impostazioni della versione VNDK.
Creazione fornitore |
Versione bacheca |
Release SDK |
Versione piattaforma |
Proprietà versione |
Installa directory |
---|---|---|---|---|---|
Moduli VNDK attuali | current |
Prima | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
Dopo | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
Moduli di snapshot predefiniti | VNDK_VER per l'istantanea |
Prima o dopo | CODE_NAME o SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- Board Version (
BOARD_VNDK_VERSION
). VNDK la versione richiesta dai moduli del fornitore. Imposta sucurrent
se I moduli del fornitore possono collegarsi ai moduli di sistema attuali. - Versione piattaforma (
PLATFORM_VNDK_VERSION
). Versione VNDK sviluppata dagli attuali moduli di sistema. Creata solo quandoBOARD_VNDK_VERSION
equivale a attuale. - Proprietà versione (
ro.vndk.version
). Proprietà che specifica la versione VNDK richiesta da file binari e libs in reseller.img vengono eseguiti tutti i test delle unità. Archiviato invendor.img
alle ore/vendor/default.prop
.