summaryrefslogtreecommitdiffstats
path: root/core/definitions.mk
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2013-08-21 18:32:49 -0700
committerYing Wang <wangying@google.com>2013-08-22 17:12:38 -0700
commit7311a344bed507062e781ba70331d85652c217d8 (patch)
tree1712442faa0cc5ea167485d3620ac94a488074b5 /core/definitions.mk
parentf4723fa49b6e61f727b6321a4006ee8ba3f393b9 (diff)
downloadbuild-7311a344bed507062e781ba70331d85652c217d8.zip
build-7311a344bed507062e781ba70331d85652c217d8.tar.gz
build-7311a344bed507062e781ba70331d85652c217d8.tar.bz2
Make it easier to enable obfuscation and optimization.
With this change, use: * LOCAL_PROGUARD_ENABLED := obfuscation # to enable obfuscation * LOCAL_PROGUARD_ENABLED := optimization # to enable optimization * LOCAL_PROGUARD_ENABLED := obfuscation optimization # to enable both Now the meaning of the LOCAL_PROGUARD_ENABLED options: * full: Use the build system's default configurations: with shrink but no obfuscation or optimization, global proguard flags in build/core/proguard.flags are applied. * custom: The same as "full" except no aapt-generated resource-related proguard flags. * nosystem: Don't use any build system's default configurations; but aapt-generated proguard flags are still applied. You are responsible for any other flags. * disabled: Disable proguard. * obfuscation: The same as "full" but with obfuscation enabled. * optimization: The same as "full" but with optimization enabled. * no value (the default): The build system chooses the proper value: "full" if it's an app; "disabled" if it's a library. You can use more than 1 of them in a meaningful combination, for example: LOCAL_PROGUARD_ENABLED := obfuscation optimization Bug: 10307372 Change-Id: Id248caca3048e99547f16559fae74f4afe85c354
Diffstat (limited to 'core/definitions.mk')
-rw-r--r--core/definitions.mk56
1 files changed, 2 insertions, 54 deletions
diff --git a/core/definitions.mk b/core/definitions.mk
index 06437f7..43fdc40 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1716,35 +1716,6 @@ $(if $(PRIVATE_EXTRA_JAR_ARGS), $(call add-java-resources-to-package))
endef
###########################################################
-## Obfuscate a jar file
-###########################################################
-
-# PRIVATE_KEEP_FILE is a file containing a list of classes
-# PRIVATE_INTERMEDIATES_DIR is a directory we can use for temporary files
-# The module using this must depend on
-# $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar
-define obfuscate-jar
-@echo "Obfuscate jar: $(notdir $@) ($@)"
-@mkdir -p $(dir $@)
-@rm -f $@
-@mkdir -p $(PRIVATE_INTERMEDIATES_DIR)
-$(hide) sed -e 's/^/-keep class /' < $(PRIVATE_KEEP_FILE) > \
- $(PRIVATE_INTERMEDIATES_DIR)/keep.pro
-$(hide) java -Xmx512M -jar $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar \
- -injars $< \
- -outjars $@ \
- -target 1.5 \
- -dontnote -dontwarn \
- -printmapping $(PRIVATE_INTERMEDIATES_DIR)/out.map \
- -forceprocessing \
- -renamesourcefileattribute SourceFile \
- -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod \
- -repackageclasses \
- -keepclassmembers "class * { public protected *; }" \
- @$(PRIVATE_INTERMEDIATES_DIR)/keep.pro
-endef
-
-###########################################################
## Commands for copying files
###########################################################
@@ -1887,34 +1858,11 @@ endif
###########################################################
## Commands to call Proguard
###########################################################
-
-# Command to copy the file with acp, if proguard is disabled.
-define proguard-disabled-commands
-@echo Copying: $@
-$(hide) $(ACP) -fp $< $@
-endef
-
-# Command to call Proguard
-# $(1): extra flags for instrumentation.
-define proguard-enabled-commands
-@echo Proguard: $@
-$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS) $(1)
-endef
-
-# Figure out the proguard dictionary file of the module that is instrumentationed for.
-define get-instrumentation-proguard-flags
-$(if $(PRIVATE_INSTRUMENTATION_FOR),$(if $(ALL_MODULES.$(PRIVATE_INSTRUMENTATION_FOR).PROGUARD_ENABLED),-applymapping $(call intermediates-dir-for,APPS,$(PRIVATE_INSTRUMENTATION_FOR),,COMMON)/proguard_dictionary))
-endef
-
define transform-jar-to-proguard
-$(eval _instrumentation_proguard_flags:=$(call get-instrumentation-proguard-flags))
-$(eval _enable_proguard:=$(PRIVATE_PROGUARD_ENABLED)$(_instrumentation_proguard_flags))
-$(if $(_enable_proguard),$(call proguard-enabled-commands,$(_instrumentation_proguard_flags)),$(call proguard-disabled-commands))
-$(eval _instrumentation_proguard_flags:=)
-$(eval _enable_proguard:=)
+@echo Proguard: $@
+$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS)
endef
-
###########################################################
## Stuff source generated from one-off tools
###########################################################