diff --git a/core/package_internal.mk b/core/package_internal.mk index a626dde1a..11138db19 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -122,7 +122,18 @@ ifneq ($(PRODUCT_ENFORCE_RRO_TARGETS),) endif endif -ifndef enforce_rro_enabled +ifdef enforce_rro_enabled + ifneq ($(PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS),) + static_only_resource_overlays := $(filter $(addsuffix %,$(PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS)),$(package_resource_overlays)) + ifneq ($(static_only_resource_overlays),) + package_resource_overlays := $(filter-out $(static_only_resource_overlays),$(package_resource_overlays)) + LOCAL_RESOURCE_DIR := $(static_only_resource_overlays) $(LOCAL_RESOURCE_DIR) + ifeq ($(package_resource_overlays),) + enforce_rro_enabled := + endif + endif + endif +else LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR) endif diff --git a/core/product.mk b/core/product.mk index 1a0e8c6a6..95e3b2794 100644 --- a/core/product.mk +++ b/core/product.mk @@ -94,6 +94,7 @@ _product_var_list := \ PRODUCT_EXTRA_RECOVERY_KEYS \ PRODUCT_PACKAGE_OVERLAYS \ DEVICE_PACKAGE_OVERLAYS \ + PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS \ PRODUCT_ENFORCE_RRO_TARGETS \ PRODUCT_SDK_ATREE_FILES \ PRODUCT_SDK_ADDON_NAME \ diff --git a/core/product_config.mk b/core/product_config.mk index 4194e0045..6ab40c06f 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -434,6 +434,10 @@ PRODUCT_ART_USE_READ_BARRIER := \ PRODUCT_IOT := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_IOT)) +# Resource overlay list which must be excluded from enforcing RRO. +PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := \ + $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS)) + # Package list to apply enforcing RRO. PRODUCT_ENFORCE_RRO_TARGETS := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_RRO_TARGETS))