diff options
author | Ying Wang <wangying@google.com> | 2013-08-21 18:32:49 -0700 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2013-08-22 17:12:38 -0700 |
commit | 7311a344bed507062e781ba70331d85652c217d8 (patch) | |
tree | 1712442faa0cc5ea167485d3620ac94a488074b5 /core/definitions.mk | |
parent | f4723fa49b6e61f727b6321a4006ee8ba3f393b9 (diff) | |
download | build-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.mk | 56 |
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 ########################################################### |