VINTF: verified assembled manifest

verified assembled manifest

系统最终生成2个verified assembled manifest, 只在host端,而不放在target板上。包含各种fragments.

BUILT_ASSEMBLED_FRAMEWORK_MANIFEST := $(PRODUCT_OUT)/verified_assembled_framework_manifest.xml
BUILT_ASSEMBLED_VENDOR_MANIFEST := $(PRODUCT_OUT)/verified_assembled_vendor_manifest.xml

可以直接make对应的文件, 如

$ make out/target/product/<TARGET_PRODUCT>/verified_assembled_framework_manifest.xml
$ make out/target/product/<TARGET_PRODUCT>/verified_assembled_vendor_manifest.xml

vasm 包含sm + system fragments + product fragments, 用vm来检查有效性

主要步骤如下:

vasm: export PRODUCT_ENFORCE_VINTF_MANIFEST=true
vasm:
assemble_vintf \
-i $(ANDROID_PRODUCT_OUT)/system/etc/vintf/manifest.xml \
$(addprefix -i ,$(wildcard $(ANDROID_PRODUCT_OUT)/system/etc/vintf/manifest/*.xml) $(wildcard $(ANDROID_PRODUCT_OUT)/product/etc/vintf/manifest/*.xml)) \
-c $(ANDROID_PRODUCT_OUT)/vendor/etc/vintf/manifest.xml \
-o verified_assembled_framework_manifest.xml

vsvm 包含vm + vendor fragments, 用sm来检查有效性

主要步骤如下

tmpKernelInfo := $(shell mktemp -d)
.INTERMEDIATE: $(tmpKernelInfo)/kernel_configs.txt
$(tmpKernelInfo)/kernel_configs.txt:
build/make/tools/extract_kernel.py \
--input out/target/product/$(TARGET_PRODUCT)/kernel \
--output-configs $(tmpKernelInfo)/kernel_configs.txt \
--output-version $(tmpKernelInfo)/kernel_version.txt

# BUILT_ASSEMBLED_VENDOR_MANIFEST := $(PRODUCT_OUT)/verified_assembled_vendor_manifest.xml
vavm: export PRODUCT_ENFORCE_VINTF_MANIFEST=true
vavm: export VINTF_ENFORCE_NO_UNUSED_HALS=true
vavm:
vavm: $(tmpKernelInfo)/kernel_configs.txt
assemble_vintf \
--kernel $(shell cat $(tmpKernelInfo)/kernel_version.txt):$(tmpKernelInfo)/kernel_configs.txt \
-i $(ANDROID_PRODUCT_OUT)/vendor/etc/vintf/manifest.xml \
$(addprefix -i ,$(wildcard $(ANDROID_PRODUCT_OUT)/vendor/etc/vintf/manifest/*.xml)) \
-c $(ANDROID_PRODUCT_OUT)/system/etc/vintf/manifest.xml \
-o verified_assembled_vendor_manifest.xml
rm -r $(tmpKernelInfo)