From 98f5e866608a2caf16ba74c32c984f2dec5bbe84 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Tue, 12 Feb 2019 13:12:47 +0000 Subject: [PATCH] Revert "Revert "Never strip and store dex files uncompressed when they are preopted on system."" This reverts commit a81dad1bc46db7beac3e03de632eda2303bcf9e2. Test: build && atest android.text.cts.EmojiTest#testEmojiGlyphWebView on Cuttlefish Change-Id: Ie3c43830fc9a994ed35883abb8ca71d97bd5c44d --- core/dex_preopt_config.mk | 7 ++++++- core/dex_preopt_odex_install.mk | 11 +++++++++++ core/product.mk | 1 + core/product_config.mk | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/dex_preopt_config.mk b/core/dex_preopt_config.mk index 767e99a9f9..4d308aa808 100644 --- a/core/dex_preopt_config.mk +++ b/core/dex_preopt_config.mk @@ -45,7 +45,11 @@ SYSTEM_OTHER_ODEX_FILTER ?= \ product/app/% \ product/priv-app/% \ -# The default values for pre-opting: always preopt PIC. +# The default values for pre-opting. To support the runtime module we ensure no dex files +# get stripped. +ifeq ($(PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING),) + PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING := true +endif # Conditional to building on linux, as dex2oat currently does not work on darwin. ifeq ($(HOST_OS),linux) WITH_DEXPREOPT ?= true @@ -134,6 +138,7 @@ ifeq ($(WRITE_SOONG_VARIABLES),true) $(call add_json_str, DefaultCompilerFilter, $(PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER)) $(call add_json_str, SystemServerCompilerFilter, $(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)) $(call add_json_bool, GenerateDmFiles, $(PRODUCT_DEX_PREOPT_GENERATE_DM_FILES)) + $(call add_json_bool, NeverAllowStripping, $(PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING)) $(call add_json_bool, NoDebugInfo, $(filter false,$(WITH_DEXPREOPT_DEBUG_INFO))) $(call add_json_bool, AlwaysSystemServerDebugInfo, $(filter true,$(PRODUCT_SYSTEM_SERVER_DEBUG_INFO))) $(call add_json_bool, NeverSystemServerDebugInfo, $(filter false,$(PRODUCT_SYSTEM_SERVER_DEBUG_INFO))) diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk index f5d1491370..4106b75872 100644 --- a/core/dex_preopt_odex_install.mk +++ b/core/dex_preopt_odex_install.mk @@ -119,6 +119,17 @@ endif my_dexpreopt_archs := ifdef LOCAL_DEX_PREOPT + ifeq (,$(filter PRESIGNED,$(LOCAL_CERTIFICATE))) + # Store uncompressed dex files preopted in /system + ifeq ($(BOARD_USES_SYSTEM_OTHER_ODEX),true) + ifeq ($(call install-on-system-other, $(my_module_path)),) + LOCAL_UNCOMPRESS_DEX := true + endif # install-on-system-other + else # BOARD_USES_SYSTEM_OTHER_ODEX + LOCAL_UNCOMPRESS_DEX := true + endif + endif + ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) my_module_multilib := $(LOCAL_MULTILIB) # If the module is not an SDK library and it's a system server jar, only preopt the primary arch. diff --git a/core/product.mk b/core/product.mk index 0baa9f2e84..a1c3bdb0e2 100644 --- a/core/product.mk +++ b/core/product.mk @@ -180,6 +180,7 @@ _product_var_list := \ PRODUCT_DEX_PREOPT_PROFILE_DIR \ PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \ PRODUCT_DEX_PREOPT_GENERATE_DM_FILES \ + PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING \ PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE \ PRODUCT_SYSTEM_SERVER_COMPILER_FILTER \ PRODUCT_SANITIZER_MODULE_CONFIGS \ diff --git a/core/product_config.mk b/core/product_config.mk index 01fbc0ac9d..8919354d09 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -408,6 +408,8 @@ PRODUCT_DEX_PREOPT_BOOT_FLAGS := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_BOOT_FLAGS)) PRODUCT_DEX_PREOPT_PROFILE_DIR := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_PROFILE_DIR)) +PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING := \ + $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING)) # Boot image options. PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE := \