diff --git a/core/clear_vars.mk b/core/clear_vars.mk index a3899154d..343345fd5 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -125,6 +125,8 @@ LOCAL_ADDRESS_SANITIZER:= LOCAL_JAR_EXCLUDE_FILES:= LOCAL_LINT_FLAGS:= LOCAL_SOURCE_FILES_ALL_GENERATED:= # '',true +# Don't delete the META_INF dir when merging static Java libraries. +LOCAL_DONT_DELETE_JAR_META_INF:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/definitions.mk b/core/definitions.mk index bc4886c70..94a116c7e 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1437,8 +1437,8 @@ define unzip-jar-files exit 1; \ fi; \ unzip -qo $$f -d $(2); \ - (cd $(2) && rm -rf META-INF); \ - done + done \ + $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,;rm -rf $(2)/META-INF) endef # Common definition to invoke javac on the host and target. diff --git a/core/java.mk b/core/java.mk index 0fccbd36c..66f9a0215 100644 --- a/core/java.mk +++ b/core/java.mk @@ -259,6 +259,7 @@ ALL_MODULES.$(LOCAL_MODULE).STUBS := $(full_classes_stubs_jar) # via deps on the target that generates the sources. $(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_JAR_EXCLUDE_FILES) +$(full_classes_compiled_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF) $(full_classes_compiled_jar): $(java_sources) $(java_resource_sources) $(full_java_lib_deps) $(jar_manifest_file) \ $(RenderScript_file_stamp) $(proto_java_sources_file_stamp) $(transform-java-to-classes.jar)