Android 11 поддерживает артефакты сборки снимков VNDK и снимки вендоров, которые можно использовать для сборки vendor.img независимо от версии Android в исходном дереве. Это позволяет использовать смешанные версии образов, например, образ старого вендора и новый образ системы.
Смешанные версии изображений не поддерживаются для следующих случаев.
- Android.mk.Поскольку Soong генерирует снимок поставщика, модули, определённые в- Android.mkне сохраняются как снимок поставщика (работоспособность проприетарных модулей SoC в- Android.mkтакже не гарантируется).
- Санитайзер. Снимки Vendor и VNDK не поддерживают Санитайзер, поскольку его варианты необходимо создавать отдельно. 
О снимках поставщиков
 Снимок вендора — это снимок, принадлежащий OEM-производителю. Это набор готовых модулей C++, установленных в /vendor , но поддерживаемых в AOSP. Без создания снимка вендора предыдущей версии Android обновление до новой версии Android может привести к повреждению раздела вендора, поскольку модули снимка вендора могут быть удалены или изменены без совместимости с API или ABI.
Снимок поставщика содержит следующие модули на AOSP.
-  Общие, статические и заголовочные библиотеки с vendor: trueилиvendor_available: true
-  Статические библиотеки VNDK с vendor_available: true
-  Исполняемые файлы и объектные файлы с vendor: trueилиvendor_available: true
Модули в следующих каталогах считаются аппаратным кодом, принадлежащим SoC, и игнорируются.
-  device/
-  vendor/
-  hardware/, за исключением-  hardware/interfaces
-  hardware/libhardware
-  hardware/libhardware_legacy
 
-  
Аппаратные коды, принадлежащие SoC, также могут находиться в других каталогах. В настоящее время снимки состояния, предоставляемые поставщиком, не поддерживают такие конфигурации.
Сборка снимков поставщика
Создайте снимок поставщика с помощью следующих команд.
. build/envsetup.shlunch targetm dist vendor-snapshot
 Эти команды создают файл vendor-$(TARGET_DEVICE).zip в $DIST_DIR . В следующем примере показан zip-файл снимка состояния поставщика:
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
-  Файлы JSON содержат такие флаги, как имя модуля, экспортированные каталоги, файлы init_rcи файлыvintf_fragments.
-  Каталог configsсодержит файлы.rcи.xmlиз флаговinit_rcиvintf_fragments.
Установка снимков поставщика
Чтобы установить снимок поставщика, перейдите в целевой каталог и используйте следующие команды.
python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
    vendor/vendor name/vendor_snapshot VER Эта команда создаёт /vendor/ vendor name /vendor_snapshot/v VER /$(TARGET_ARCH)/Android.bp . В следующем примере показана структура каталогов снимка вендора:
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)
Создание образов поставщиков
 Используя артефакты сборки снимка VNDK и снимок поставщика, вы можете собрать vendor.img независимо от версии Android в исходном дереве, что позволяет создавать смешанные версии образов. После установки снимков VNDK и снимка поставщика установите BOARD_VNDK_VERSION в соответствии с версией поставщика. Например:
# BoardConfig.mk
BOARD_VNDK_VERSION := 29
 Если BOARD_VNDK_VERSION установлено на значение, отличное от current , система сборки:
-  Включает модули снимков VNDK и модули снимков вендора BOARD_VNDK_VERSION. Каждый модуль снимков переопределяет исходный модуль C++ с тем же именем.
-  Устанавливает ro.vndk.versionвBOARD_VNDK_VERSION.
-  Устанавливает модули снимков VNDK BOARD_VNDK_VERSIONвsystem_ext.
