diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 5c1a58d67..140783eb6 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -149,6 +149,7 @@ 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:= +LOCAL_DONT_DELETE_JAR_DIRS:= LOCAL_ADDITIONAL_CERTIFICATES:= LOCAL_PREBUILT_MODULE_FILE:= LOCAL_POST_LINK_CMD:= diff --git a/core/definitions.mk b/core/definitions.mk index e276887e9..37f7d9d50 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -1785,7 +1785,9 @@ endef define initialize-package-file @mkdir -p $(dir $(2)) $(hide) cp -f $(1) $(2) -$(hide) zip -qd $(2) "*.class" "*/" || true # Ignore the error when nothing to delete. +$(hide) zip -qd $(2) "*.class" \ + $(if $(strip $(PRIVATE_DONT_DELETE_JAR_DIRS)),,"*/") \ + || true # Ignore the error when nothing to delete. endef #TODO: we kinda want to build different asset packages for diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index e946b24db..f8264ee26 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -103,6 +103,7 @@ $(built_dex): $(full_classes_jar) $(DX) $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) $(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) +$(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) @echo "Host Jar: $(PRIVATE_MODULE) ($@)" $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) diff --git a/core/java_library.mk b/core/java_library.mk index 61dfef033..b4e3eaae5 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -66,6 +66,7 @@ else # !LOCAL_IS_STATIC_JAVA_LIBRARY $(common_javalib.jar): PRIVATE_DEX_FILE := $(built_dex) $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) +$(common_javalib.jar): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) $(common_javalib.jar) : $(built_dex) $(java_resource_sources) @echo "target Jar: $(PRIVATE_MODULE) ($@)" $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) diff --git a/core/package_internal.mk b/core/package_internal.mk index e16c68f23..2fadc95b2 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -384,6 +384,7 @@ else $(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(PRODUCT_AAPT_PREF_CONFIG) endif endif +$(LOCAL_BUILT_MODULE): PRIVATE_DONT_DELETE_JAR_DIRS := $(LOCAL_DONT_DELETE_JAR_DIRS) $(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) @echo "target Package: $(PRIVATE_MODULE) ($@)" $(if $(PRIVATE_SOURCE_ARCHIVE),\