Gli snapshot VNDK possono essere utilizzati da un'immagine di sistema per fornire il VNDK corretto alle immagini dei fornitori anche quando le immagini di sistema e dei fornitori vengono create diverse versioni di Android. La creazione di uno snapshot VNDK richiede l'acquisizione le librerie VNDK come snapshot e le contrassegnandole con un numero di versione. La l'immagine del fornitore può collegarsi a una versione VNDK specifica che fornisce le ABI richieste per i moduli nell'immagine del fornitore. Tuttavia, nella stessa versione VNDK, le librerie VNDK devono essere Stabile con ABI.
La progettazione degli snapshot VNDK include metodi per generando precompilazioni di uno snapshot VNDK dall'immagine di sistema attuale installazione le librerie predefinite nella partizione di sistema di una versione più recente di Android.
Informazioni sulle librerie VNDK
HIDL-HAL, introdotti in Android 8.0 consente upgrade separati per le partizioni di sistema e del fornitore. VNDK definisce insiemi di librerie (VNDK-core, VNDK-SP e LL-NDK) che il codice del fornitore può collegarsi e impedire ai fornitori di utilizzare librerie che non si trovano in un VNDK per iniziare. Di conseguenza, è possibile creare ed eseguire l'immagine del fornitore se il VNDK corretto i set di dati nell'immagine di sistema vengono forniti all'immagine del fornitore.
Core VNDK
Il set di librerie VNDK-core è installato
/system/lib[64]/vndk-${VER}
ed è disponibile
solo per i processi del fornitore con un livello API pari a
${VER}
. I processi di sistema non possono utilizzare queste librerie e devono
utilizza invece le librerie installate in /system/lib[64]
. Poiché
della rigorosa restrizione dello spazio dei nomi per ogni processo, le librerie VNDK-core
sono protetti dal doppio caricamento.
Per includere una libreria in VNDK-core, aggiungi quanto segue a
Android.bp
:
vendor_available: true, vndk: { enabled: true, },
VNDK-SP
Le librerie VNDK-SP sono installate in /system/lib[64]/vndk-sp-${VER}
e sono disponibili per i processi del fornitore e i processi di sistema (tramite SP-HAL
librerie installate nella partizione del fornitore). Le librerie VNDK-SP possono essere
a doppio caricamento.
Per includere una libreria in VNDK-SP, aggiungi quanto segue a Android.bp
:
vendor_available: true, vndk: { enabled: true, support_system_process: true, },
LL-NDK
Le librerie LL-NDK sono installate in /system/lib[64]
. Moduli dei fornitori
possono utilizzare le librerie stub LL-NDK per accedere ai simboli preselezionati di LL-NDK
librerie. Le librerie LL-NDK devono essere compatibili con le versioni precedenti e stabili per ABI
consente alle versioni precedenti dei moduli del fornitore di utilizzare nuove versioni delle librerie LL-NDK.
A causa delle caratteristiche stabili in ABI di LL-NDK, lo snapshot VNDK
non c'è bisogno di includere librerie LL-NDK per le immagini dei vecchi fornitori.
Informazioni sugli snapshot VNDK
Android 8.1 includeva VNDK librerie create dal codice sorgente. Tuttavia, nelle versioni successive Android, ogni versione VNDK deve essere acquisita come istantanea e fornita come pre-build per abilitare il collegamento a un'immagine precedente del fornitore.
A partire da Android 9, le nuove versioni di Android
includi almeno uno snapshot delle directory VNDK-core e VNDK-SP per le
nel codice sorgente di Android. Al momento della creazione, gli snapshot richiesti
installato in /system/lib[64]/vndk-${VER}
e
/system/lib[64]/vndk-sp-${VER}
(directory che possono essere utilizzate
la partizione del fornitore), dove ${VER}
è la variabile di stringa che
rappresenta il nome della versione dello snapshot VNDK.
Poiché le librerie degli snapshot VNDK possono differire per ogni versione VNDK,
lo snapshot include anche le configurazioni dello spazio dei nomi Linker, installate
etc/ld.config.${VER}.txt
,
/etc/llndk.libraries.${VER}.txt
e
/etc/vndksp.libraries.${VER}.txt
.
Esempio: eseguire l'upgrade del sistema e del fornitore immagini
Nessuno snapshot richiesto; build senza configurazioni aggiuntive per VNDK snapshot.
Esempio: eseguire l'upgrade solo dell'immagine di sistema
Devi includere i file di configurazione dello spazio dei nomi per snapshot VNDK e linker per
l'immagine del fornitore nell'immagine di sistema. I file di configurazione dello spazio dei nomi del linker
vengono configurate automaticamente per cercare
librerie VNDK in
/system/lib[64]/vndk-${VER}
e
/system/lib[64]/vndk-sp-${VER}
.
Esempio: eseguire l'upgrade dell'immagine di sistema, modifica secondaria dell'immagine del fornitore
La creazione di un'immagine del fornitore su uno snapshot VNDK non è ancora supportata, quindi deve creare l'immagine del fornitore separatamente con il suo codice sorgente originale, eseguire l'upgrade dell'immagine di sistema come descritto nell'esempio precedente.
Architettura dello snapshot VNDK
Per creare un'immagine di sistema Android 9 compatibile con un Immagine del fornitore di Android 8.1, l'istantanea VNDK corrispondente ad Android 8.1 l'immagine del fornitore deve essere fornita insieme ad Android 9 immagine di sistema, come mostrato di seguito:
La progettazione dello snapshot VNDK include i seguenti metodi:
- Generazione di uno snapshot per VNDK-core e VNDK-SP
librerie. Android 9 include uno script
per creare uno snapshot della build VNDK attuale. Questo script raggruppa tutti
biblioteche in
/system/lib[64]/vndk-28
e/system/lib[64]/vndk-sp-28
create con la versione attuale come snapshot VNDK, dove28
è la versione VNDK di Android 9. Lo snapshot include anche il linker di configurazione dello spazio dei nomi/etc/ld.config.28.txt
,/etc/llndk.libraries.28.txt
e/etc/vndksp.libraries.28.txt
. Lo snapshot generato verrà utilizzato con versioni di Android più recenti (superiori ad Android 9). - Installazione delle librerie VNDK-core e VNDK-SP predefinite da un
un'istantanea. In Android 9, un'istantanea VNDK ha
un insieme di librerie VNDK-core predefinite e un set di librerie VNDK-SP,
come file di configurazione dello spazio dei nomi linker. Quando fornisci un elenco di VNDK
versioni degli snapshot da installare, al momento della creazione, l'immagine di sistema viene installata
le librerie di snapshot VNDK in
/system/lib[64]/vndk-${VER}
e le directory e il linker/system/lib[64]/vndk-sp-${VER}
di configurazione dello spazio dei nomi per gli snapshot VNDK Directory/etc
.
Controllo delle versioni VNDK
Ogni release di Android ha un solo snapshot VNDK e la versione dell'SDK viene utilizzata come
una versione VNDK (che significa che la versione VNDK ha un numero intero, ad esempio 27
per Android 8.1). La versione VNDK viene corretta con la versione Android
rilasciate. La versione VNDK utilizzata dalla partizione del fornitore viene archiviata
automaticamente nella proprietà ro.vndk.version
, che può essere letta
sul runtime. Questa versione viene quindi utilizzata per identificare la versione VNDK del fornitore
per alcune librerie e identifica la versione dello snapshot VNDK per lo spazio dei nomi
configurazione.
Creare librerie VNDK
Il comando make vndk
crea librerie con vndk:
{ enabled: true, … }
, inclusi dipendenze e spazio dei nomi
di configurazione dei deployment. Se il criterio BOARD_VNDK_VERSION := current
è impostato,
vengono create con il comando make
.
Poiché questa build non installa le librerie VNDK dallo snapshot, le librerie VNDK installate non sono stabili per ABI. Tuttavia, quando una versione di Android viene rilasciata, l'ABI per la versione VNDK corrente è corretta. A questo punto, qualsiasi L'interruzione dell'ABI è un errore di build, quindi le patch per la versione di Android non devono modificare l'ABI per le librerie VNDK.