ahat: build ahat-test-dump correctly with javac
Use BUILD_JAVA_LIBRARY instead of BUILD_HOST_DALVIK_JAVA_LIBRARY for
ahat-test-dump.jar so that no special handling is needed to enable
proguard obfuscation. This way the ahat-test-dump can be obfuscated
when compiled with javac as well as jack.
Bug: 64594350
Test: m ahat-test, built from scratch
Change-Id: Iad2890b314982b08da876595c3a093cd8ec9f7da
diff --git a/tools/ahat/Android.mk b/tools/ahat/Android.mk
index f79377d..2ce61cf 100644
--- a/tools/ahat/Android.mk
+++ b/tools/ahat/Android.mk
@@ -54,31 +54,22 @@
include $(BUILD_HOST_JAVA_LIBRARY)
AHAT_TEST_JAR := $(LOCAL_BUILT_MODULE)
-# Rule to generate the proguard configuration for the test-dump program.
-# We copy the configuration to the intermediates directory because jack will
-# output the proguard map in that same directory.
-AHAT_TEST_DUMP_PROGUARD_CONFIG := $(intermediates.COMMON)/config.pro
-AHAT_TEST_DUMP_PROGUARD_MAP := $(intermediates.COMMON)/proguard.map
-$(AHAT_TEST_DUMP_PROGUARD_CONFIG): PRIVATE_AHAT_PROGUARD_CONFIG_IN := $(LOCAL_PATH)/test-dump/config.pro
-$(AHAT_TEST_DUMP_PROGUARD_CONFIG): PRIVATE_AHAT_PROGUARD_CONFIG := $(AHAT_TEST_DUMP_PROGUARD_CONFIG)
-$(AHAT_TEST_DUMP_PROGUARD_CONFIG): $(LOCAL_PATH)/test-dump/config.pro
- cp $(PRIVATE_AHAT_PROGUARD_CONFIG_IN) $(PRIVATE_AHAT_PROGUARD_CONFIG)
-
# --- ahat-test-dump.jar --------------
include $(CLEAR_VARS)
LOCAL_MODULE := ahat-test-dump
LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := $(call all-java-files-under, test-dump)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(AHAT_TEST_DUMP_PROGUARD_CONFIG)
-LOCAL_JACK_FLAGS := --config-proguard $(AHAT_TEST_DUMP_PROGUARD_CONFIG)
-include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
+LOCAL_PROGUARD_ENABLED := obfuscation
+LOCAL_PROGUARD_FLAG_FILES := test-dump/config.pro
+include $(BUILD_JAVA_LIBRARY)
-# Determine the location of the test-dump.jar and test-dump.hprof files.
-# These use variables set implicitly by the include of
-# BUILD_HOST_DALVIK_JAVA_LIBRARY above.
+# Determine the location of the test-dump.jar, test-dump.hprof, and proguard
+# map files. These use variables set implicitly by the include of
+# BUILD_JAVA_LIBRARY above.
AHAT_TEST_DUMP_JAR := $(LOCAL_BUILT_MODULE)
AHAT_TEST_DUMP_HPROF := $(intermediates.COMMON)/test-dump.hprof
AHAT_TEST_DUMP_BASE_HPROF := $(intermediates.COMMON)/test-dump-base.hprof
+AHAT_TEST_DUMP_PROGUARD_MAP := $(proguard_dictionary)
# Run ahat-test-dump.jar to generate test-dump.hprof and test-dump-base.hprof
AHAT_TEST_DUMP_DEPENDENCIES := \
@@ -108,10 +99,10 @@
java -enableassertions -Dahat.test.dump.hprof=$(PRIVATE_AHAT_TEST_DUMP_HPROF) -Dahat.test.dump.base.hprof=$(PRIVATE_AHAT_TEST_DUMP_BASE_HPROF) -Dahat.test.dump.map=$(PRIVATE_AHAT_PROGUARD_MAP) -jar $(PRIVATE_AHAT_TEST_JAR)
# Clean up local variables.
-AHAT_TEST_DUMP_DEPENDENCIES :=
-AHAT_TEST_DUMP_HPROF :=
-AHAT_TEST_DUMP_JAR :=
-AHAT_TEST_DUMP_PROGUARD_CONFIG :=
-AHAT_TEST_DUMP_PROGUARD_MAP :=
AHAT_TEST_JAR :=
+AHAT_TEST_DUMP_JAR :=
+AHAT_TEST_DUMP_HPROF :=
+AHAT_TEST_DUMP_BASE_HPROF :=
+AHAT_TEST_DUMP_PROGUARD_MAP :=
+AHAT_TEST_DUMP_DEPENDENCIES :=
diff --git a/tools/ahat/src/Main.java b/tools/ahat/src/Main.java
index b8552fe..7cda035 100644
--- a/tools/ahat/src/Main.java
+++ b/tools/ahat/src/Main.java
@@ -76,7 +76,7 @@
try {
mapbase.readFromFile(new File(args[i]));
} catch (IOException|ParseException ex) {
- System.out.println("Unable to read baselline proguard map: " + ex);
+ System.out.println("Unable to read baseline proguard map: " + ex);
System.out.println("The proguard map will not be used.");
}
} else if ("--baseline".equals(args[i]) && i + 1 < args.length) {
diff --git a/tools/ahat/test-dump/config.pro b/tools/ahat/test-dump/config.pro
index 0cf7a87..284e4b8 100644
--- a/tools/ahat/test-dump/config.pro
+++ b/tools/ahat/test-dump/config.pro
@@ -1,15 +1,5 @@
-# The goal of this proguard configuration is to obfuscate the test-dump
-# program so that the heap dump it generates is an obfuscated heap dump.
-# This allows us to test that deobfuscation of the generated heap dump is
-# working properly.
-
-# All we care about is obfuscation. Don't do any other optimizations.
--dontpreverify
--dontoptimize
--dontshrink
-keep public class Main {
public static void main(java.lang.String[]);
}
--printmapping proguard.map