diff --git a/core/Makefile b/core/Makefile index 736622962..fd20f6793 100644 --- a/core/Makefile +++ b/core/Makefile @@ -40,7 +40,9 @@ $(foreach cf,$(unique_product_copy_files_pairs), \ $(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 $(and $(filter %.jar,$(_dest)),$(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 16afbe5e8..27d427e89 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2637,6 +2637,14 @@ $(2): $(1) $$(copy-file-to-target) endef +define copy-and-uncompress-dexs +$(2): $(1) $(ZIPALIGN) + @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 45512b810..e4916b899 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -64,12 +64,16 @@ else # !LOCAL_IS_STATIC_JAVA_LIBRARY $(common_javalib.jar): PRIVATE_DEX_FILE := $(built_dex) $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar) $(common_javalib.jar): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) -$(common_javalib.jar) : $(built_dex) $(java_resource_sources) | $(ZIPTIME) +$(common_javalib.jar) : $(built_dex) $(java_resource_sources) | $(ZIPTIME) $(ZIPALIGN) @echo "target Jar: $(PRIVATE_MODULE) ($@)" $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@.tmp) $(call add-dex-to-package-arg,$@.tmp) $(hide) $(ZIPTIME) $@.tmp $(call commit-change-for-toc,$@) +ifneq (,$(filter $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES), $(LOCAL_MODULE))) + $(uncompress-dexs) + $(align-package) +endif # PRODUCT_LOADED_BY_PRIVILEGED_MODULES .KATI_RESTAT: $(common_javalib.jar) diff --git a/core/package_internal.mk b/core/package_internal.mk index a78652947..11908f01a 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -577,7 +577,7 @@ $(LOCAL_BUILT_MODULE): PRIVATE_RES_PACKAGE := $(my_res_package) $(LOCAL_BUILT_MODULE) : $(my_res_package) $(AAPT2) | $(ACP) else $(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_LIST := $(all_res_assets) -$(LOCAL_BUILT_MODULE) : $(all_res_assets) $(full_android_manifest) $(AAPT) +$(LOCAL_BUILT_MODULE) : $(all_res_assets) $(full_android_manifest) $(AAPT) $(ZIPALIGN) endif ifdef LOCAL_COMPRESSED_MODULE $(LOCAL_BUILT_MODULE) : $(MINIGZIP) @@ -618,6 +618,9 @@ ifneq (nostripping,$(LOCAL_DEX_PREOPT)) $(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 cc0d1f8c1..8be8ad6cc 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -391,6 +391,10 @@ $(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR) 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 diff --git a/core/product.mk b/core/product.mk index 4682dac99..1819293cc 100644 --- a/core/product.mk +++ b/core/product.mk @@ -117,6 +117,7 @@ _product_var_list := \ 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 deb68baaf..777c29dbe 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -266,6 +266,7 @@ PRODUCT_BOOT_JARS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BOOT_JARS)) 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))