Android 11 supporta la creazione di snapshot VNDK
elementi
e snapshot dei fornitori, che puoi utilizzare per creare vendor.img
indipendentemente
Versione di Android nell'albero delle origini. Ciò consente versioni miste delle immagini, come
di un fornitore precedente e una nuova immagine di sistema.
Le versioni immagine miste non sono supportate per quanto segue.
Android.mk.
Poiché Takeg genera l'istantanea del fornitore, i moduli definiti IAndroid.mk
non vengono acquisiti come snapshot del fornitore (moduli di proprietà SoC in il funzionamento diAndroid.mk
non è garantito).Igienizzante. Gli snapshot del fornitore e VNDK non supportano il sanitizer come sanitizer varianti devono essere create separatamente.
Informazioni sugli snapshot dei fornitori
Uno snapshot del fornitore è uno snapshot di proprietà dell'OEM. È un insieme di moduli C++ predefiniti
installata in /vendor
, ma mantenuta su AOSP. Senza acquisire un fornitore
istantanea della versione precedente di Android, con upgrade a una nuova versione di Android
potrebbe interrompere la partizione del fornitore perché i moduli dello snapshot del fornitore possono essere rimossi
o modificati senza compatibilità con API o ABI.
Uno snapshot del fornitore contiene i seguenti moduli su AOSP.
- Librerie condivise, statiche e di intestazione con
vendor: true
ovendor_available: true
- Librerie statiche VNDK con
vendor_available: true
- Eseguibili e file di oggetto con
vendor: true
ovendor_available: true
I moduli nelle seguenti directory sono considerati codice hardware di proprietà del SoC e vengono ignorati.
device/
vendor/
hardware/
, ad eccezione dihardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
I codici hardware di proprietà dei SoC potrebbero esistere anche in altre directory. Al momento, Gli snapshot dei fornitori non supportano queste configurazioni.
Crea snapshot dei fornitori
Crea uno snapshot del fornitore utilizzando i comandi seguenti.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
Questi comandi creano un file vendor-$(TARGET_DEVICE).zip
in
$DIST_DIR
. L'esempio seguente mostra un file ZIP dello snapshot del fornitore:
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
- I file JSON contengono flag come nome del modulo, directory esportate,
init_rc
evintf_fragments
file. - La directory
configs
contiene.rc
e.xml
file dai flaginit_rc
evintf_fragments
.
Installa snapshot dei fornitori
Per installare uno snapshot del fornitore, accedi alla directory di destinazione e utilizza seguenti comandi.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
Questo comando genera
/vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
.
L'esempio seguente mostra la struttura di directory di uno snapshot del fornitore:
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)
Crea immagini dei fornitori
Utilizzo della creazione di snapshot VNDK
elementi
e un'istantanea del fornitore, puoi creare vendor.img
indipendentemente
nell'albero di origine, in modo da poter creare versioni miste
in formato Docker. Dopo aver installato sia lo snapshot VNDK sia lo snapshot del fornitore, imposta
BOARD_VNDK_VERSION
alla versione del fornitore. Ad esempio:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
Se BOARD_VNDK_VERSION
è impostato su un valore diverso da current
, la build
di sistema:
- Abilita i moduli snapshot VNDK e i moduli snapshot fornitore di
BOARD_VNDK_VERSION
. Ogni modulo snapshot esegue l'override di un modulo di origine C++ con lo stesso nome. - Imposta
ro.vndk.version
suBOARD_VNDK_VERSION
. - Installa i moduli snapshot VNDK di
BOARD_VNDK_VERSION
insystem_ext
.