diff --git a/core/Makefile b/core/Makefile index 755f3bb21..f9c1882be 100644 --- a/core/Makefile +++ b/core/Makefile @@ -2064,6 +2064,8 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(HOST_OUT_EXECUTABLES)/imgdiff \ $(HOST_OUT_EXECUTABLES)/bsdiff \ $(BUILD_IMAGE_SRCS) \ + $(INSTALLED_VENDOR_MANIFEST) \ + $(INSTALLED_VENDOR_MATRIX) \ | $(ACP) @echo "Package target files: $@" $(call create-system-vendor-symlink) @@ -2285,6 +2287,15 @@ endif ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET $(hide) $(call fs_config,$(zip_root)/SYSTEM_OTHER,system/) > $(zip_root)/META/system_other_filesystem_config.txt endif + @# Metadata for compatibility verification. + $(hide) cp $(INSTALLED_SYSTEM_MANIFEST) $(zip_root)/META/system_manifest.xml +ifdef INSTALLED_VENDOR_MANIFEST + $(hide) cp $(INSTALLED_VENDOR_MANIFEST) $(zip_root)/META/vendor_manifest.xml +endif +ifdef INSTALLED_VENDOR_MATRIX + $(hide) cp $(INSTALLED_VENDOR_MATRIX) $(zip_root)/META/vendor_matrix.xml +endif + $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \ ./build/tools/releasetools/add_img_to_target_files -a -v -p $(HOST_OUT) $(zip_root) @# Zip everything up, preserving symlinks and placing META/ files first to diff --git a/core/config.mk b/core/config.mk index 863416ef8..3bceffbad 100644 --- a/core/config.mk +++ b/core/config.mk @@ -686,6 +686,8 @@ else DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey endif +INSTALLED_SYSTEM_MANIFEST := $(PRODUCT_OUT)/system/manifest.xml + # ############################################################### # Set up final options. # ############################################################### diff --git a/target/board/Android.mk b/target/board/Android.mk index f8ecc4ef3..6376156f2 100644 --- a/target/board/Android.mk +++ b/target/board/Android.mk @@ -2,6 +2,8 @@ # Set up product-global definitions and include product-specific rules. # +LOCAL_PATH := $(call my-dir) + -include $(TARGET_DEVICE_DIR)/AndroidBoard.mk # Generate a file that contains various information about the @@ -25,3 +27,25 @@ ifdef board_info_txt else $(hide) echo "board=$(TARGET_BOOTLOADER_BOARD_NAME)" > $@ endif + +# Copy compatibility metadata to the device. + +ifdef DEVICE_MANIFEST_FILE +include $(CLEAR_VARS) +LOCAL_MODULE := manifest.xml +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) +LOCAL_PREBUILT_MODULE_FILE := $(DEVICE_MANIFEST_FILE) +INSTALLED_VENDOR_MANIFEST := $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) +endif + +ifdef DEVICE_MATRIX_FILE +include $(CLEAR_VARS) +LOCAL_MODULE := matrix.xml +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) +LOCAL_PREBUILT_MODULE_FILE := $(DEVICE_MATRIX_FILE) +INSTALLED_VENDOR_MATRIX := $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) +endif diff --git a/target/product/embedded.mk b/target/product/embedded.mk index 81153852f..f5efe5d16 100644 --- a/target/product/embedded.mk +++ b/target/product/embedded.mk @@ -85,6 +85,8 @@ PRODUCT_PACKAGES += \ toybox \ tzdatacheck \ vndservicemanager \ + matrix.xml \ + manifest.xml \ # SELinux packages PRODUCT_PACKAGES += \ @@ -119,5 +121,4 @@ PRODUCT_COPY_FILES += \ system/core/rootdir/etc/hosts:system/etc/hosts # Framework Manifest -PRODUCT_COPY_FILES += \ - system/libhidl/manifest.xml:system/manifest.xml +PRODUCT_COPY_FILES += system/libhidl/manifest.xml:system/manifest.xml