From 7b226865c1e2e7d99f71f3fc5d31ac43ce2fb678 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 13 Sep 2018 15:11:42 -0700 Subject: [PATCH 1/2] Make package functions take an argument In preparation for rearranging the way jars and apks are built. Relands Ib9f0da132196942062c58fd5b12e84588106724e with a fix to correctly include classes.dex in hostdex jars. Test: m checkbuild Change-Id: I397544456b8ce5827716fcd1828de707b719c2bb --- core/definitions.mk | 37 ++++++++++++-------------------- core/dpi_specific_apk.mk | 8 +++---- core/host_dalvik_java_library.mk | 2 +- core/java_library.mk | 2 +- core/package_internal.mk | 14 ++++++------ 5 files changed, 27 insertions(+), 36 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index 6c163df09f..fea1a0af52 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2305,7 +2305,7 @@ endef # The MacOS jar tool doesn't like creating empty jar files, # so we need to give it something. # $(1) package to create -define create-empty-package-at +define create-empty-package @mkdir -p $(dir $(1)) $(hide) touch $(dir $(1))zipdummy $(hide) $(JAR) cf $(1) -C $(dir $(1)) zipdummy @@ -2313,13 +2313,6 @@ $(hide) zip -qd $(1) zipdummy $(hide) rm $(dir $(1))zipdummy endef -# Create a mostly-empty .jar file that we'll add to later. -# The MacOS jar tool doesn't like creating empty jar files, -# so we need to give it something. -define create-empty-package -$(call create-empty-package-at,$@) -endef - # Copy an arhchive file and delete any class files and empty folders inside. # $(1): the source archive file. # $(2): the destination archive file. @@ -2339,6 +2332,7 @@ endef #Note that the version numbers are given to aapt as simple default #values; applications can override these by explicitly stating #them in their manifest. +# $(1) the package file define add-assets-to-package $(hide) $(AAPT_ASAN_OPTIONS) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \ $(addprefix -c , $(PRIVATE_PRODUCT_AAPT_CONFIG)) \ @@ -2355,16 +2349,17 @@ $(hide) $(AAPT_ASAN_OPTIONS) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \ $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \ $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) \ --skip-symbols-without-default-localization \ - -F $@ + -F $(1) # So that we re-run aapt when the list of input files change $(hide) echo $(PRIVATE_RESOURCE_LIST) >/dev/null endef # We need the extra blank line, so that the command will be on a separate line. -# $(1): the ABI name -# $(2): the list of shared libraies +# $(1): the package +# $(2): the ABI name +# $(3): the list of shared libraies define _add-jni-shared-libs-to-package-per-abi -$(hide) cp $(2) $(dir $@)lib/$(1) +$(hide) cp $(3) $(dir $(1))lib/$(2) endef @@ -2378,23 +2373,19 @@ JNI_COMPRESS_FLAGS := -0 ZIPALIGN_PAGE_ALIGN_FLAGS := -p endif +# $(1): the package file define add-jni-shared-libs-to-package -$(hide) rm -rf $(dir $@)lib -$(hide) mkdir -p $(addprefix $(dir $@)lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI)) +$(hide) rm -rf $(dir $(1))lib +$(hide) mkdir -p $(addprefix $(dir $(1))lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI)) $(foreach abi,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI),\ - $(call _add-jni-shared-libs-to-package-per-abi,$(abi),\ + $(call _add-jni-shared-libs-to-package-per-abi,$(1),$(abi),\ $(patsubst $(abi):%,%,$(filter $(abi):%,$(PRIVATE_JNI_SHARED_LIBRARIES))))) -$(hide) (cd $(dir $@) && zip -qrX $(JNI_COMPRESS_FLAGS) $(notdir $@) lib) -$(hide) rm -rf $(dir $@)lib -endef - -#TODO: update the manifest to point to the dex file -define add-dex-to-package -$(call add-dex-to-package-arg,$@) +$(hide) (cd $(dir $(1)) && zip -qrX $(JNI_COMPRESS_FLAGS) $(notdir $(1)) lib) +$(hide) rm -rf $(dir $(1))lib endef # $(1): the package file. -define add-dex-to-package-arg +define add-dex-to-package $(hide) find $(dir $(PRIVATE_DEX_FILE)) -maxdepth 1 -name "classes*.dex" | sort | xargs zip -qjX $(1) endef diff --git a/core/dpi_specific_apk.mk b/core/dpi_specific_apk.mk index f32daf500e..20bbbe23d6 100644 --- a/core/dpi_specific_apk.mk +++ b/core/dpi_specific_apk.mk @@ -51,16 +51,16 @@ $(built_dpi_apk) : $(all_res_assets) $(jni_shared_libraries) $(full_android_mani @echo "target Package: $(PRIVATE_MODULE) ($@)" $(if $(PRIVATE_SOURCE_ARCHIVE),\ $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@),\ - $(create-empty-package)) - $(add-assets-to-package) + $(call create-empty-package,$@)) + $(call add-assets-to-package,$@) ifneq ($(jni_shared_libraries),) - $(add-jni-shared-libs-to-package) + $(call add-jni-shared-libs-to-package,$@) endif ifeq ($(full_classes_jar),) # We don't build jar, need to add the Java resources here. $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) else - $(add-dex-to-package) + $(call add-dex-to-package,$@) endif $(sign-package) diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 779cef950f..09ce9fe426 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -174,7 +174,7 @@ $(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) @echo "Host Jar: $(PRIVATE_MODULE) ($@)" $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) - $(add-dex-to-package) + $(call add-dex-to-package,$@) endif # !LOCAL_IS_STATIC_JAVA_LIBRARY diff --git a/core/java_library.mk b/core/java_library.mk index 0a70a38178..b9abbe4e10 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -68,7 +68,7 @@ $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar $(common_javalib.jar) : $(built_dex) $(java_resource_sources) | $(ZIPTIME) $(ZIPALIGN) @echo "target Jar: $(PRIVATE_MODULE) ($@)" $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@.tmp) - $(call add-dex-to-package-arg,$@.tmp) + $(call add-dex-to-package,$@.tmp) $(hide) $(ZIPTIME) $@.tmp $(call commit-change-for-toc,$@) ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) diff --git a/core/package_internal.mk b/core/package_internal.mk index 7f74cc9030..ef2a5a5142 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -420,8 +420,8 @@ else # LOCAL_USE_AAPT2 $(resource_export_package): PRIVATE_RESOURCE_LIST := $(all_res_assets) $(resource_export_package): $(all_res_assets) $(full_android_manifest) $(rs_generated_res_zip) $(AAPT) @echo "target Export Resources: $(PRIVATE_MODULE) ($@)" - $(create-empty-package) - $(add-assets-to-package) + $(call create-empty-package,$@) + $(call add-assets-to-package,$@) endif endif # LOCAL_USE_AAPT2 @@ -628,17 +628,17 @@ ifeq ($(LOCAL_USE_AAPT2),true) else # ! LOCAL_USE_AAPT2 $(if $(PRIVATE_SOURCE_ARCHIVE),\ $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@),\ - $(create-empty-package)) - $(add-assets-to-package) + $(call create-empty-package,$@)) + $(call add-assets-to-package,$@) endif # LOCAL_USE_AAPT2 ifneq ($(jni_shared_libraries),) - $(add-jni-shared-libs-to-package) + $(call add-jni-shared-libs-to-package,$@) endif ifeq ($(full_classes_jar),) # We don't build jar, need to add the Java resources here. $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) else # full_classes_jar - $(add-dex-to-package) + $(call add-dex-to-package,$@) ifeq ($(LOCAL_USE_AAPT2),true) $(call add-jar-resources-to-package,$@,$(PRIVATE_FULL_CLASSES_JAR),$(PRIVATE_RESOURCE_INTERMEDIATES_DIR)) endif @@ -687,7 +687,7 @@ $(built_odex): PRIVATE_DEX_FILE := $(built_dex) # Use pattern rule - we may have multiple built odex files. $(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(built_dex) $(hide) mkdir -p $(dir $@) && rm -f $@ - $(add-dex-to-package) + $(call add-dex-to-package,$@) ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) $(uncompress-dexs) $(align-package) From c9e49768329a26c6e1c2dd9df4f7597413a3d227 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 14 Sep 2018 13:39:07 -0700 Subject: [PATCH 2/2] Replace some uses of zip with merge_zips, soong_zip, and zip2zip zip maintains permissions when adding files to zips, which causes the final jars and apks to change based on the umask of the build. Move some of the rules that were using zip to soong_zip instead. Since soong_zip doesn't support adding files to existing zips, create a new zip file for each part of the package creation process and then merge them together at the end with merge_zips. Bug: 69500920 Test: m checkbuild Change-Id: Id253df776ce19ec4cac3a36fa470a50461ea3cad --- core/definitions.mk | 75 ++++++++++++++++---------------- core/dpi_specific_apk.mk | 17 +++++--- core/host_dalvik_java_library.mk | 9 +++- core/java_library.mk | 8 +++- core/package_internal.mk | 31 ++++++------- 5 files changed, 75 insertions(+), 65 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index fea1a0af52..c192983843 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2301,28 +2301,6 @@ $(hide) $(DX_COMMAND) \ $(hide) rm -f $(dir $@)d8_input.jar endef -# Create a mostly-empty .jar file that we'll add to later. -# The MacOS jar tool doesn't like creating empty jar files, -# so we need to give it something. -# $(1) package to create -define create-empty-package -@mkdir -p $(dir $(1)) -$(hide) touch $(dir $(1))zipdummy -$(hide) $(JAR) cf $(1) -C $(dir $(1)) zipdummy -$(hide) zip -qd $(1) zipdummy -$(hide) rm $(dir $(1))zipdummy -endef - -# Copy an arhchive file and delete any class files and empty folders inside. -# $(1): the source archive file. -# $(2): the destination archive file. -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. -endef - #TODO: we kinda want to build different asset packages for # different configurations, then combine them later (or something). # Per-locale, etc. @@ -2333,8 +2311,8 @@ endef #values; applications can override these by explicitly stating #them in their manifest. # $(1) the package file -define add-assets-to-package -$(hide) $(AAPT_ASAN_OPTIONS) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \ +define create-assets-package +$(hide) $(AAPT_ASAN_OPTIONS) $(AAPT) package $(PRIVATE_AAPT_FLAGS) \ $(addprefix -c , $(PRIVATE_PRODUCT_AAPT_CONFIG)) \ $(addprefix --preferred-density , $(PRIVATE_PRODUCT_AAPT_PREF_CONFIG)) \ $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \ @@ -2369,32 +2347,43 @@ ifdef TARGET_BUILD_APPS JNI_COMPRESS_FLAGS := ZIPALIGN_PAGE_ALIGN_FLAGS := else -JNI_COMPRESS_FLAGS := -0 +JNI_COMPRESS_FLAGS := -L 0 ZIPALIGN_PAGE_ALIGN_FLAGS := -p endif # $(1): the package file -define add-jni-shared-libs-to-package -$(hide) rm -rf $(dir $(1))lib -$(hide) mkdir -p $(addprefix $(dir $(1))lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI)) +define create-jni-shared-libs-package +rm -rf $(dir $(1))lib +mkdir -p $(addprefix $(dir $(1))lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI)) $(foreach abi,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI),\ $(call _add-jni-shared-libs-to-package-per-abi,$(1),$(abi),\ $(patsubst $(abi):%,%,$(filter $(abi):%,$(PRIVATE_JNI_SHARED_LIBRARIES))))) -$(hide) (cd $(dir $(1)) && zip -qrX $(JNI_COMPRESS_FLAGS) $(notdir $(1)) lib) -$(hide) rm -rf $(dir $(1))lib +$(SOONG_ZIP) $(JNI_COMPRESS_FLAGS) -o $(1) -C $(dir $(1)) -D $(dir $(1))lib +rm -rf $(dir $(1))lib endef -# $(1): the package file. -define add-dex-to-package -$(hide) find $(dir $(PRIVATE_DEX_FILE)) -maxdepth 1 -name "classes*.dex" | sort | xargs zip -qjX $(1) +# $(1): the jar file. +# $(2): the classes.dex file. +define create-dex-jar +find $(dir $(2)) -maxdepth 1 -name "classes*.dex" | sort > $(1).lst +$(SOONG_ZIP) -o $(1) -C $(dir $(2)) -l $(1).lst endef -# Add java resources added by the current module. -# $(1) destination package -# +# Add java resources added by the current module to an existing package. +# $(1) destination package. define add-java-resources-to + $(call _java-resources,$(1),u) +endef + +# Add java resources added by the current module to a new jar. +# $(1) destination jar. +define create-java-resources-jar + $(call _java-resources,$(1),c) +endef + +define _java-resources $(call dump-words-to-file, $(PRIVATE_EXTRA_JAR_ARGS), $(1).jar-arg-list) -$(hide) $(JAR) uf $(1) @$(1).jar-arg-list +$(hide) $(JAR) $(2)f $(1) @$(1).jar-arg-list @rm -f $(1).jar-arg-list endef @@ -2409,6 +2398,12 @@ define add-jar-resources-to-package $(JAR) uf $(1) $(call jar-args-sorted-files-in-directory,$(3)) endef +# $(1): the output resources jar. +# $(2): the input jar +define extract-resources-jar + $(ZIP2ZIP) -i $(2) -o $(1) -x '**/*.class' -x '**/*/' +endef + # Sign a package using the specified key/cert. # define sign-package @@ -3510,3 +3505,9 @@ $(if $(call _invalid-name-chars,$($(1))), \ $(call pretty-error,Invalid characters in module stem \($(1)\): $(call _invalid-name-chars,$($(1))))) endef .KATI_READONLY := verify-module-stem + +$(KATI_obsolete_var \ + create-empty-package \ + initialize-package-file \ + add-jni-shared-libs-to-package,\ + These functions have been removed) diff --git a/core/dpi_specific_apk.mk b/core/dpi_specific_apk.mk index 20bbbe23d6..88d2fe66a2 100644 --- a/core/dpi_specific_apk.mk +++ b/core/dpi_specific_apk.mk @@ -47,21 +47,24 @@ $(built_dpi_apk) : $(R_file_stamp) $(built_dpi_apk) : $(all_library_res_package_export_deps) $(built_dpi_apk) : $(private_key) $(certificate) $(SIGNAPK_JAR) $(built_dpi_apk) : $(AAPT) +$(built_dpi_apk) : $(MERGE_ZIPS) $(SOONG_ZIP) $(ZIP2ZIP) $(built_dpi_apk) : $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) @echo "target Package: $(PRIVATE_MODULE) ($@)" - $(if $(PRIVATE_SOURCE_ARCHIVE),\ - $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@),\ - $(call create-empty-package,$@)) - $(call add-assets-to-package,$@) + rm -rf $@.parts + mkdir -p $@.parts + $(call create-assets-package,$@.parts/apk.zip) ifneq ($(jni_shared_libraries),) - $(call add-jni-shared-libs-to-package,$@) + $(call create-jni-shared-libs-package,$@.parts/jni.zip) endif ifeq ($(full_classes_jar),) # We don't build jar, need to add the Java resources here. - $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) + $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call create-java-resources-jar,$@.parts/res.zip)) else - $(call add-dex-to-package,$@) + $(call create-dex-jar,$@.parts/dex.zip,$(PRIVATE_DEX_FILE)) + $(call extract-resources-jar,$@.parts/res.zip,$(PRIVATE_SOURCE_ARCHIVE)) endif + $(MERGE_ZIPS) $@ $@.parts/*.zip + rm -rf $@.parts $(sign-package) # Set up global variables to register this apk to the higher-level dependency graph. diff --git a/core/host_dalvik_java_library.mk b/core/host_dalvik_java_library.mk index 09ce9fe426..6a32ff9047 100644 --- a/core/host_dalvik_java_library.mk +++ b/core/host_dalvik_java_library.mk @@ -171,10 +171,15 @@ $(built_dex): $(full_classes_jar) $(DX) $(ZIP2ZIP) $(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := $(built_dex) $(LOCAL_BUILT_MODULE): PRIVATE_SOURCE_ARCHIVE := $(full_classes_jarjar_jar) +$(LOCAL_BUILT_MODULE): $(MERGE_ZIPS) $(SOONG_ZIP) $(ZIP2ZIP) $(LOCAL_BUILT_MODULE): $(built_dex) $(java_resource_sources) @echo "Host Jar: $(PRIVATE_MODULE) ($@)" - $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@) - $(call add-dex-to-package,$@) + rm -rf $@.parts + mkdir -p $@.parts + $(call create-dex-jar,$@.parts/dex.zip,$(PRIVATE_DEX_FILE)) + $(call extract-resources-jar,$@.parts/res.zip,$(PRIVATE_SOURCE_ARCHIVE)) + $(MERGE_ZIPS) -j $@ $@.parts/dex.zip $@.parts/res.zip + rm -rf $@.parts endif # !LOCAL_IS_STATIC_JAVA_LIBRARY diff --git a/core/java_library.mk b/core/java_library.mk index b9abbe4e10..5716f4cc9b 100644 --- a/core/java_library.mk +++ b/core/java_library.mk @@ -65,10 +65,14 @@ else # !LOCAL_IS_STATIC_JAVA_LIBRARY $(common_javalib.jar): PRIVATE_DEX_FILE := $(built_dex) $(common_javalib.jar): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar) +$(common_javalib.jar): $(MERGE_ZIPS) $(SOONG_ZIP) $(ZIP2ZIP) $(common_javalib.jar) : $(built_dex) $(java_resource_sources) | $(ZIPTIME) $(ZIPALIGN) @echo "target Jar: $(PRIVATE_MODULE) ($@)" - $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@.tmp) - $(call add-dex-to-package,$@.tmp) + rm -rf $@.parts && mkdir -p $@.parts + $(call create-dex-jar,$@.parts/dex.zip,$(PRIVATE_DEX_FILE)) + $(call extract-resources-jar,$@.parts/res.zip,$(PRIVATE_SOURCE_ARCHIVE)) + $(MERGE_ZIPS) -j $@.tmp $@.parts/dex.zip $@.parts/res.zip + rm -rf $@.parts $(hide) $(ZIPTIME) $@.tmp $(call commit-change-for-toc,$@) ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) diff --git a/core/package_internal.mk b/core/package_internal.mk index ef2a5a5142..2b8e762176 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -413,15 +413,14 @@ else # LOCAL_USE_AAPT2 resource_export_package := $(intermediates.COMMON)/package-export.apk $(R_file_stamp): $(resource_export_package) - # add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target + # create-assets-package looks at PRODUCT_AAPT_CONFIG, but this target # can't know anything about PRODUCT. Clear it out just for this target. $(resource_export_package): PRIVATE_PRODUCT_AAPT_CONFIG := $(resource_export_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(resource_export_package): PRIVATE_RESOURCE_LIST := $(all_res_assets) $(resource_export_package): $(all_res_assets) $(full_android_manifest) $(rs_generated_res_zip) $(AAPT) @echo "target Export Resources: $(PRIVATE_MODULE) ($@)" - $(call create-empty-package,$@) - $(call add-assets-to-package,$@) + $(call create-assets-package,$@) endif endif # LOCAL_USE_AAPT2 @@ -609,9 +608,8 @@ $(LOCAL_BUILT_MODULE): PRIVATE_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE) endif $(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/resources -$(LOCAL_BUILT_MODULE): PRIVATE_FULL_CLASSES_JAR := $(full_classes_jar) $(LOCAL_BUILT_MODULE) : $(jni_shared_libraries) -$(LOCAL_BUILT_MODULE) : $(JAR_ARGS) +$(LOCAL_BUILT_MODULE) : $(JAR_ARGS) $(SOONG_ZIP) $(MERGE_ZIPS) $(ZIP2ZIP) ifeq ($(LOCAL_USE_AAPT2),true) $(LOCAL_BUILT_MODULE): PRIVATE_RES_PACKAGE := $(my_res_package) $(LOCAL_BUILT_MODULE) : $(my_res_package) $(AAPT2) | $(ACP) @@ -623,26 +621,25 @@ ifdef LOCAL_COMPRESSED_MODULE $(LOCAL_BUILT_MODULE) : $(MINIGZIP) endif @echo "target Package: $(PRIVATE_MODULE) ($@)" + rm -rf $@.parts + mkdir -p $@.parts ifeq ($(LOCAL_USE_AAPT2),true) - $(call copy-file-to-new-target) + cp -f $< $@.parts/apk.zip else # ! LOCAL_USE_AAPT2 - $(if $(PRIVATE_SOURCE_ARCHIVE),\ - $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@),\ - $(call create-empty-package,$@)) - $(call add-assets-to-package,$@) + $(call create-assets-package,$@.parts/apk.zip) endif # LOCAL_USE_AAPT2 ifneq ($(jni_shared_libraries),) - $(call add-jni-shared-libs-to-package,$@) + $(call create-jni-shared-libs-package,$@.parts/jni.zip) endif ifeq ($(full_classes_jar),) # We don't build jar, need to add the Java resources here. - $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) + $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call create-java-resources-jar,$@.parts/res.zip)) else # full_classes_jar - $(call add-dex-to-package,$@) -ifeq ($(LOCAL_USE_AAPT2),true) - $(call add-jar-resources-to-package,$@,$(PRIVATE_FULL_CLASSES_JAR),$(PRIVATE_RESOURCE_INTERMEDIATES_DIR)) -endif + $(call create-dex-jar,$@.parts/dex.zip,$(PRIVATE_DEX_FILE)) + $(call extract-resources-jar,$@.parts/res.zip,$(PRIVATE_SOURCE_ARCHIVE)) endif # full_classes_jar + $(MERGE_ZIPS) $@ $@.parts/*.zip + rm -rf $@.parts ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) @# No need to align, sign-package below will do it. $(uncompress-dexs) @@ -687,7 +684,7 @@ $(built_odex): PRIVATE_DEX_FILE := $(built_dex) # Use pattern rule - we may have multiple built odex files. $(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(built_dex) $(hide) mkdir -p $(dir $@) && rm -f $@ - $(call add-dex-to-package,$@) + $(call create-dex-jar,$@,$(PRIVATE_DEX_FILE)) ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) $(uncompress-dexs) $(align-package)