Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 505dafb0 authored by Yohann Roussel's avatar Yohann Roussel
Browse files

Add support for testing obfuscated app with Jack

Bug: 17481317

Change-Id: I80cb4e3991e858a39e7415fb7f1896d6992c950f
parent 1bd78f39
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ endif
$(built_dex): PRIVATE_CLASSES_JACK := $(full_classes_jack)
$(built_dex): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
$(built_dex): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)
$(built_dex): $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \
$(built_dex): $(java_sources) $(java_resource_sources) $(full_jack_deps) \
        $(jar_manifest_file) $(proto_java_sources_file_stamp) $(LOCAL_MODULE_MAKEFILE_DEP) \
        $(LOCAL_ADDITIONAL_DEPENDENCIES) $(JACK) | setup-jack-server
	@echo Building with Jack: $@
+1 −1
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ else
$(full_classes_jack): \
	PRIVATE_JACK_INCREMENTAL_DIR :=
endif
$(full_classes_jack): $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \
$(full_classes_jack): $(java_sources) $(java_resource_sources) $(full_jack_deps) \
        $(jar_manifest_file) $(layers_file) $(LOCAL_MODULE_MAKEFILE_DEP) \
        $(LOCAL_ADDITIONAL_DEPENDENCIES) $(LOCAL_JARJAR_RULES) \
        $(JACK) | setup-jack-server
+16 −7
Original line number Diff line number Diff line
@@ -466,6 +466,7 @@ ifneq ($(filter-out full custom nosystem obfuscation optimization shrinktests,$(
    $(error invalid value for LOCAL_PROGUARD_ENABLED: $(LOCAL_PROGUARD_ENABLED))
endif
proguard_dictionary := $(intermediates.COMMON)/proguard_dictionary
jack_dictionary := $(intermediates.COMMON)/jack_dictionary

# Hack: see b/20667396
# When an app's LOCAL_SDK_VERSION is lower than the support library's LOCAL_SDK_VERSION,
@@ -489,9 +490,11 @@ endif

# jack already has the libraries in its classpath and doesn't support jars
legacy_proguard_flags := $(addprefix -libraryjars ,$(my_support_library_sdk_raise) $(full_shared_java_libs))
common_proguard_flags :=  \
                  -forceprocessing \
                  -printmapping $(proguard_dictionary)

legacy_proguard_flags += -printmapping $(proguard_dictionary)
jack_proguard_flags := -printmapping $(jack_dictionary)

common_proguard_flags := -forceprocessing

ifeq ($(filter nosystem,$(LOCAL_PROGUARD_ENABLED)),)
common_proguard_flags += -include $(BUILD_SYSTEM)/proguard.flags
@@ -534,9 +537,9 @@ legacy_proguard_flags := -injars $(link_instr_classes_jar) \
    -applymapping $(link_instr_intermediates_dir.COMMON)/proguard_dictionary \
    -verbose \
    $(legacy_proguard_flags)
# not supported with jack
ifdef LOCAL_JACK_ENABLED
    $(error $(LOCAL_MODULE): Build with jack of instrumentation when obfuscating is not yet supported)
jack_proguard_flags += -applymapping $(link_instr_intermediates_dir.COMMON)/jack_dictionary
full_jack_deps += $(link_instr_intermediates_dir.COMMON)/jack_dictionary
endif

# Sometimes (test + main app) uses different keep rules from the main app -
@@ -645,7 +648,13 @@ ifdef LOCAL_TEST_MODULE_TO_PROGUARD_WITH
    $(error $(LOCAL_MODULE): Build with jack when LOCAL_TEST_MODULE_TO_PROGUARD_WITH is defined is not yet implemented)
endif

$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_PROGUARD_FLAGS := $(common_proguard_flags) $(LOCAL_JACK_PROGUARD_FLAGS)
# $(jack_dictionary) is just by-product of $(built_dex_intermediate).
# The dummy command was added because, without it, make misses the fact the $(built_dex) also
# change $(jack_dictionary).
$(jack_dictionary): $(full_classes_jack)
	$(hide) touch $@

$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_PROGUARD_FLAGS := $(common_proguard_flags) $(jack_proguard_flags) $(LOCAL_JACK_PROGUARD_FLAGS)
else  # LOCAL_PROGUARD_ENABLED not defined
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_PROGUARD_FLAGS :=
endif # LOCAL_PROGUARD_ENABLED defined
@@ -653,7 +662,7 @@ endif # LOCAL_PROGUARD_ENABLED defined
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_FLAGS := $(GLOBAL_JAVAC_DEBUG_FLAGS) $(LOCAL_JACK_FLAGS)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_JACK_VERSION := $(LOCAL_JACK_VERSION)

jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_lib_deps) \
jack_all_deps := $(java_sources) $(java_resource_sources) $(full_jack_deps) \
        $(jar_manifest_file) $(layers_file) $(RenderScript_file_stamp) $(proguard_flag_files) \
        $(proto_java_sources_file_stamp) $(LOCAL_ADDITIONAL_DEPENDENCIES) $(LOCAL_JARJAR_RULES) \
        $(LOCAL_MODULE_MAKEFILE_DEP) $(JACK)
+9 −7
Original line number Diff line number Diff line
@@ -302,10 +302,10 @@ endif # LOCAL_SDK_VERSION
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath)

full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
full_jack_lib_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
# Turn off .toc optimization for apps build as we cannot build dexdump.
ifeq (,$(TARGET_BUILD_APPS))
full_jack_lib_deps := $(patsubst %.jack, %.dex.toc, $(full_jack_lib_deps))
full_jack_deps := $(patsubst %.jack, %.dex.toc, $(full_jack_deps))
endif

else # LOCAL_IS_HOST_MODULE
@@ -317,16 +317,18 @@ else
my_bootclasspath := $(call jack-lib-files,core-oj-hostdex,$(LOCAL_IS_HOST_MODULE)):$(call jack-lib-files,core-libart-hostdex,$(LOCAL_IS_HOST_MODULE))
endif
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES := $(my_bootclasspath)
# Compiling against the final jack library. If we want to add support for obfuscated library
# we'll need to change that to compile against the not obfuscated jack library.
full_shared_jack_libs := $(call jack-lib-files,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
full_jack_lib_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
full_jack_deps := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
else
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_BOOTCLASSPATH_JAVA_LIBRARIES :=
full_shared_jack_libs := $(call jack-lib-deps,$(LOCAL_JAVA_LIBRARIES),$(LOCAL_IS_HOST_MODULE))
full_jack_lib_deps := $(full_shared_jack_libs)
full_jack_deps := $(full_shared_jack_libs)
endif # USE_CORE_LIB_BOOTCLASSPATH
endif # !LOCAL_IS_HOST_MODULE
full_jack_libs := $(full_shared_jack_libs) $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH)
full_jack_lib_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH)
full_jack_deps += $(full_static_jack_libs) $(LOCAL_JACK_CLASSPATH)

ifndef LOCAL_IS_HOST_MODULE
# This is set by packages that are linking to other packages that export
@@ -340,7 +342,7 @@ ifneq ($(apk_libraries),)
  # link against the jar with full original names (before proguard processing).
  full_shared_jack_libs += $(link_apk_jack_libraries)
  full_jack_libs += $(link_apk_jack_libraries)
  full_jack_lib_deps += $(link_apk_jack_libraries)
  full_jack_deps += $(link_apk_jack_libraries)
endif

# This is set by packages that contain instrumentation, allowing them to
@@ -350,7 +352,7 @@ ifdef LOCAL_INSTRUMENTATION_FOR
   # link against the jar with full original names (before proguard processing).
   link_instr_classes_jack := $(link_instr_intermediates_dir.COMMON)/classes.noshrob.jack
   full_jack_libs += $(link_instr_classes_jack)
   full_jack_lib_deps += $(link_instr_classes_jack)
   full_jack_deps += $(link_instr_classes_jack)
endif  # LOCAL_INSTRUMENTATION_FOR
endif  # !LOCAL_IS_HOST_MODULE