Android 11 unterstützt den VNDK-Snapshot-Build
Artefakte
und Anbieter-Snapshots, mit denen Sie vendor.img
unabhängig von
Android-Version in der Quellstruktur. Dies ermöglicht gemischte Versionen von Bildern wie
älterer Anbieter und ein neueres System-Image.
Gemischte Bildversionen werden in folgenden Fällen nicht unterstützt.
Android.mk.
Da Soong den Anbieter-Snapshot generiert, sind die inAndroid.mk
werden nicht als Anbieter-Snapshot erfasst (proprietäre SoC-Module inAndroid.mk
funktionieren möglicherweise auch nicht.Desinfektionsmittel. Anbieter- und VNDK-Snapshots unterstützen Sanitizer nicht als Desinfektionsmittel müssen separat erstellt werden.
Anbieter-Snapshots
Ein Anbieter-Snapshot ist ein OEM-eigener Snapshot. Es besteht aus einer Reihe vorgefertigter C++-Module
installiert in /vendor
, aber auf AOSP verwaltet. Ohne einen Zulieferunternehmen
Übersicht über die vorherige Android-Version, ein Upgrade auf eine neue Android-Version
Die Anbieterpartition wird möglicherweise beschädigt, da anbieter-Snapshot-Module entfernt werden können
ohne API- oder ABI-Kompatibilität geändert werden.
Ein Anbieter-Snapshot enthält die folgenden Module auf AOSP.
- Freigegebene, statische und Header-Bibliotheken mit
vendor: true
odervendor_available: true
- Statische VNDK-Bibliotheken mit
vendor_available: true
- Ausführbare Dateien und Objektdateien mit
vendor: true
odervendor_available: true
Module in den folgenden Verzeichnissen gelten als SoC-eigener Hardwarecode und werden ignoriert.
device/
vendor/
hardware/
mit Ausnahme von <ph type="x-smartling-placeholder">- </ph>
hardware/interfaces
hardware/libhardware
hardware/libhardware_legacy
SoC-eigene Hardwarecodes können auch in anderen Verzeichnissen vorhanden sein. Derzeit Anbieter-Snapshots unterstützen solche Konfigurationen nicht.
Anbieter-Snapshots erstellen
Erstellen Sie mit den folgenden Befehlen einen Anbieter-Snapshot.
. build/envsetup.sh
lunch target
m dist vendor-snapshot
Mit diesen Befehlen wird eine vendor-$(TARGET_DEVICE).zip
-Datei in
$DIST_DIR
. Das folgende Beispiel zeigt eine ZIP-Datei mit einem Anbieter-Snapshot:
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
- Die JSON-Dateien enthalten Flags wie den Modulnamen, exportierte Verzeichnisse,
init_rc
Dateien undvintf_fragments
Dateien. - Das Verzeichnis
configs
enthält die Dateien.rc
und.xml
aus den Flagsinit_rc
undvintf_fragments
.
Anbieter-Snapshots installieren
Wechseln Sie zum Installieren eines Anbieter-Snapshots zum Zielverzeichnis und verwenden Sie den folgenden Befehle.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
vendor/vendor name/vendor_snapshot VER
Dieser Befehl generiert
/vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp
Das folgende Beispiel zeigt die Verzeichnisstruktur eines Anbieter-Snapshots:
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)
Anbieter-Images erstellen
VNDK-Snapshot-Build verwenden
Artefakte
und einen Anbieter-Snapshot haben, können Sie vendor.img
unabhängig von der
Version in der Quellstruktur, wodurch es möglich ist, gemischte Versionen von
Bilder. Nachdem Sie sowohl den VNDK-Snapshot als auch den Anbieter-Snapshot installiert haben,
BOARD_VNDK_VERSION
auf die Version des Anbieters. Beispiel:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
Wenn BOARD_VNDK_VERSION
auf einen anderen Wert als current
gesetzt ist, erstellt der Build
System:
- Aktiviert VNDK- und Anbieter-Snapshot-Module von
BOARD_VNDK_VERSION
Jedes Snapshot-Modul überschreibt ein C++-Quellmodul mit demselben Namen. - Legt für
ro.vndk.version
den WertBOARD_VNDK_VERSION
fest. - Installiert die VNDK-Snapshot-Module von
BOARD_VNDK_VERSION
insystem_ext
.