diff --git a/core/package_internal.mk b/core/package_internal.mk index 6987842631..75cc547be7 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -87,6 +87,23 @@ else LOCAL_RESOURCE_DIR := $(foreach d,$(LOCAL_RESOURCE_DIR),$(call clean-path,$(d))) endif +# If LOCAL_MODULE matches a rule in PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES, +# override the manfest package name by the (first) rule matched +override_manifest_name := $(strip $(word 1,\ + $(foreach rule,$(PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES),\ + $(eval _pkg_name_pat := $(call word-colon,1,$(rule)))\ + $(eval _manifest_name_pat := $(call word-colon,2,$(rule)))\ + $(if $(filter $(_pkg_name_pat),$(LOCAL_MODULE)),\ + $(patsubst $(_pkg_name_pat),$(_manifest_name_pat),$(LOCAL_MODULE))\ + )\ + )\ +)) + +ifneq (,$(override_manifest_name)) +# Note: this can override LOCAL_MANFEST_PACKAGE_NAME value set in Android.mk +LOCAL_MANIFEST_PACKAGE_NAME := $(override_manifest_name) +endif + include $(BUILD_SYSTEM)/force_aapt2.mk # Process Support Library dependencies. diff --git a/core/product.mk b/core/product.mk index 8497b28301..1420b46e10 100644 --- a/core/product.mk +++ b/core/product.mk @@ -213,6 +213,7 @@ _product_var_list := \ PRODUCT_RETROFIT_DYNAMIC_PARTITIONS \ PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS \ PRODUCT_XOM_EXCLUDE_PATHS \ + PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES \ define dump-product $(info ==== $(1) ====)\ diff --git a/core/product_config.mk b/core/product_config.mk index f0f7da14e7..47b4c7aa03 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -346,6 +346,11 @@ PRODUCT_SHIPPING_API_LEVEL := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SHI # used for adding properties to default.prop PRODUCT_DEFAULT_PROPERTY_OVERRIDES := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEFAULT_PROPERTY_OVERRIDES)) + +$(foreach rule,$(PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES),\ + $(if $(filter 2,$(words $(subst :,$(space),$(rule)))),,\ + $(error Rule "$(rule)" in PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDE is not :))) + .KATI_READONLY := PRODUCT_DEFAULT_PROPERTY_OVERRIDES # A list of property assignments, like "key = value", with zero or more @@ -549,3 +554,10 @@ PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION := \ # set this variable to prevent OTA failures. PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS)) + +# List of : pairs to override the manifest package name +# of a module to . Patterns can be used as in +# com.android.%:com.acme.android.%.release +PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES := \ + $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES)) +.KATI_READONLY := PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES diff --git a/core/soong_config.mk b/core/soong_config.mk index 85be1e7a8b..31c77d4b88 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -144,6 +144,8 @@ $(call add_json_bool, FlattenApex, $(filter true,$(TARGET_ $(call add_json_str, DexpreoptGlobalConfig, $(DEX_PREOPT_CONFIG)) +$(call add_json_list, ManifestPackageNameOverrides, $(PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES)) + $(call add_json_map, VendorVars) $(foreach namespace,$(SOONG_CONFIG_NAMESPACES),\ $(call add_json_map, $(namespace))\