EXPERIMENT Add a product variable for priv-apps dependencies.
Those dependencies are jars/apks on which we want to
uncompress their dexs.
bug: 30972906
bug: 63920015
Test: sailfish build
Change-Id: Ic96ffe9dbe39abc1c28e7de134892d689207c9ca
(cherry picked from commit 434020940557107b1c290007588e8904ac61a3e8)
diff --git a/core/Makefile b/core/Makefile
index 7f0e1cd..97cb7fd 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -40,7 +40,9 @@
$(eval _fulldest := $(call append-path,$(PRODUCT_OUT),$(_dest))) \
$(if $(filter %.xml,$(_dest)),\
$(eval $(call copy-xml-file-checked,$(_src),$(_fulldest))),\
- $(eval $(call copy-one-file,$(_src),$(_fulldest)))) \
+ $(if $(filter $(basename $(notdir $(_dest))), $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES)),\
+ $(eval $(call copy-and-uncompress-dexs,$(_src),$(_fulldest))), \
+ $(eval $(call copy-one-file,$(_src),$(_fulldest))))) \
$(eval ALL_DEFAULT_INSTALLED_MODULES += $(_fulldest)) \
$(eval unique_product_copy_files_destinations += $(_dest))))
unique_product_copy_files_pairs :=
diff --git a/core/definitions.mk b/core/definitions.mk
index 95e9a02..d6b383e 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2783,6 +2783,14 @@
$$(copy-file-to-target)
endef
+define copy-and-uncompress-dexs
+$(2): $(1)
+ @echo "Uncompress dexs in: $$@"
+ $$(copy-file-to-target)
+ $$(uncompress-dexs)
+ $$(align-package)
+endef
+
# Copies many files.
# $(1): The files to copy. Each entry is a ':' separated src:dst pair
# Evaluates to the list of the dst files (ie suitable for a dependency list)
diff --git a/core/java_library.mk b/core/java_library.mk
index 84f4419..f2b030f 100644
--- a/core/java_library.mk
+++ b/core/java_library.mk
@@ -92,6 +92,10 @@
ifdef LOCAL_JACK_ENABLED
$(add-carried-jack-resources)
endif
+ifneq (,$(filter $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES), $(LOCAL_MODULE)))
+ $(uncompress-dexs)
+ $(align-package)
+endif # PRODUCT_LOADED_BY_PRIVILEGED_MODULES
$(remove-timestamps-from-package)
ifdef LOCAL_DEX_PREOPT
diff --git a/core/package_internal.mk b/core/package_internal.mk
index 5c4ad28..9dded49 100644
--- a/core/package_internal.mk
+++ b/core/package_internal.mk
@@ -643,6 +643,9 @@
$(call dexpreopt-remove-classes.dex,$@)
endif
endif
+ifneq (,$(filter $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES), $(LOCAL_MODULE)))
+ $(uncompress-dexs)
+endif # PRODUCT_LOADED_BY_PRIVILEGED_MODULES
$(sign-package)
ifdef LOCAL_COMPRESSED_MODULE
$(compress-package)
diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk
index 620c22c..0ccd012 100644
--- a/core/prebuilt_internal.mk
+++ b/core/prebuilt_internal.mk
@@ -379,6 +379,15 @@
$(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR)
$(transform-prebuilt-to-target)
$(uncompress-shared-libs)
+ifneq (true,$(DONT_UNCOMPRESS_PRIV_APPS_DEXS))
+ifeq (true,$(LOCAL_PRIVILEGED_MODULE))
+ $(uncompress-dexs)
+else
+ ifneq (,$(filter $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES), $(LOCAL_MODULE)))
+ $(uncompress-dexs)
+ endif # PRODUCT_LOADED_BY_PRIVILEGED_MODULES
+endif # LOCAL_PRIVILEGED_MODULE
+endif # DONT_UNCOMPRESS_PRIV_APPS_DEXS
ifdef LOCAL_DEX_PREOPT
ifneq ($(BUILD_PLATFORM_ZIP),)
@# Keep a copy of apk with classes.dex unstripped
diff --git a/core/product.mk b/core/product.mk
index 4682dac..1819293 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -117,6 +117,7 @@
PRODUCT_SYSTEM_SERVER_JARS \
PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK \
PRODUCT_DEXPREOPT_SPEED_APPS \
+ PRODUCT_LOADED_BY_PRIVILEGED_MODULES \
PRODUCT_VBOOT_SIGNING_KEY \
PRODUCT_VBOOT_SIGNING_SUBKEY \
PRODUCT_VERITY_SIGNING_KEY \
diff --git a/core/product_config.mk b/core/product_config.mk
index f7ae834..762abcd 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -259,6 +259,7 @@
PRODUCT_SYSTEM_SERVER_JARS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_JARS))
PRODUCT_SYSTEM_SERVER_APPS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_APPS))
PRODUCT_DEXPREOPT_SPEED_APPS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEXPREOPT_SPEED_APPS))
+PRODUCT_LOADED_BY_PRIVILEGED_MODULES := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_LOADED_BY_PRIVILEGED_MODULES))
# All of the apps that we force preopt, this overrides WITH_DEXPREOPT.
PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK))