new LOCAL_DEX_PREOPT option "nostripping"

Set "LOCAL_DEX_PREOPT := nostripping" to do dex-preopt while not strip
the classes.dex.

Bug: 5396625 5502338
Change-Id: Ie8dea4414ebeefeae89c6433b246faea27baa5e7
diff --git a/core/base_rules.mk b/core/base_rules.mk
index e18b6ec..242b53d 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -528,7 +528,7 @@
 	$(copy-file-to-target-with-cp)
 endif
 
-ifeq ($(LOCAL_DEX_PREOPT),true)
+ifdef LOCAL_DEX_PREOPT
 installed_odex := $(basename $(LOCAL_INSTALLED_MODULE)).odex
 built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex
 $(installed_odex) : $(built_odex) | $(ACP)
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 643a138..d9f3372 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -109,7 +109,7 @@
 LOCAL_RENDERSCRIPT_CC:=
 LOCAL_RENDERSCRIPT_TARGET_API:=
 LOCAL_BUILD_HOST_DEX:=
-LOCAL_DEX_PREOPT:=
+LOCAL_DEX_PREOPT:= # '',true,false,nostripping
 LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,full
 LOCAL_PROTOC_FLAGS:=
 LOCAL_NO_CRT:=
diff --git a/core/java_library.mk b/core/java_library.mk
index 23417d0..fa40c0e 100644
--- a/core/java_library.mk
+++ b/core/java_library.mk
@@ -29,13 +29,18 @@
 common_javalib.jar := $(intermediates.COMMON)/$(LOCAL_BUILT_MODULE_STEM)
 LOCAL_INTERMEDIATE_TARGETS += $(common_javalib.jar)
 
-ifeq (true,$(WITH_DEXPREOPT))
+ifneq (true,$(WITH_DEXPREOPT))
+LOCAL_DEX_PREOPT :=
+else
 ifeq (,$(TARGET_BUILD_APPS))
 ifndef LOCAL_DEX_PREOPT
 LOCAL_DEX_PREOPT := true
 endif
 endif
 endif
+ifeq (false,$(LOCAL_DEX_PREOPT))
+LOCAL_DEX_PREOPT :=
+endif
 
 #################################
 include $(BUILD_SYSTEM)/java.mk
@@ -64,7 +69,7 @@
 	$(add-java-resources-to-package)
 endif
 
-ifeq ($(LOCAL_DEX_PREOPT),true)
+ifdef LOCAL_DEX_PREOPT
 dexpreopt_boot_jar_module := $(filter $(LOCAL_MODULE),$(DEXPREOPT_BOOT_JARS_MODULES))
 ifneq ($(dexpreopt_boot_jar_module),)
 # boot jar's rules are defined in dex_preopt.mk
@@ -89,7 +94,9 @@
 
 $(LOCAL_BUILT_MODULE) : $(common_javalib.jar) | $(ACP) $(AAPT)
 	$(call copy-file-to-target)
+ifneq (nostripping,$(LOCAL_DEX_PREOPT))
 	$(call dexpreopt-remove-classes.dex,$@)
+endif
 
 endif # dexpreopt_boot_jar_module
 
diff --git a/core/package.mk b/core/package.mk
index 07cdbd0..0cca209 100644
--- a/core/package.mk
+++ b/core/package.mk
@@ -147,7 +147,9 @@
 endif # !custom
 LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS)
 
-ifeq (true,$(WITH_DEXPREOPT))
+ifneq (true,$(WITH_DEXPREOPT))
+LOCAL_DEX_PREOPT :=
+else
 ifeq (,$(TARGET_BUILD_APPS))
 ifneq (,$(LOCAL_SRC_FILES))
 ifndef LOCAL_DEX_PREOPT
@@ -156,6 +158,9 @@
 endif
 endif
 endif
+ifeq (false,$(LOCAL_DEX_PREOPT))
+LOCAL_DEX_PREOPT :=
+endif
 
 #################################
 include $(BUILD_SYSTEM)/java.mk
@@ -332,7 +337,7 @@
 
 # Define the rule to build the actual package.
 $(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN)
-ifeq ($(LOCAL_DEX_PREOPT),true)
+ifdef LOCAL_DEX_PREOPT
 # Make sure the boot jars get dexpreopt-ed first
 $(LOCAL_BUILT_MODULE): $(DEXPREOPT_BOOT_ODEXS) | $(DEXPREOPT) $(DEXOPT)
 endif
@@ -362,10 +367,12 @@
 	$(sign-package)
 	@# Alignment must happen after all other zip operations.
 	$(align-package)
-ifeq ($(LOCAL_DEX_PREOPT),true)
+ifdef LOCAL_DEX_PREOPT
 	$(hide) rm -f $(patsubst %.apk,%.odex,$@)
 	$(call dexpreopt-one-file,$@,$(patsubst %.apk,%.odex,$@))
+ifneq (nostripping,$(LOCAL_DEX_PREOPT))
 	$(call dexpreopt-remove-classes.dex,$@)
+endif
 
 built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex
 $(built_odex): $(LOCAL_BUILT_MODULE)