From 5b826ac6091883cb9f8c4c5b17e913cd68994e7a Mon Sep 17 00:00:00 2001 From: Alex Klyubin Date: Fri, 4 Dec 2015 10:07:41 -0800 Subject: [PATCH] Do not run zipalign when building APK (except prebuilts). This changes the build system to no longer run zipalign except for those prebuilts which do not need to re-signed. Running zipalign is no longer needed because signapk takes care of alignment. For those prebuilts which do not need to be re-signed signapk is not invoked and thus zipalign is still needed because the prebuilts may not have been aligned properly. This exemption will go away once prebuilts are properly aligned. Bug: 25794543 Change-Id: I31f10af80b9baa3c9481cb36f41e5e5046e852f9 --- core/dpi_specific_apk.mk | 3 +-- core/package_internal.mk | 7 ++----- core/prebuilt_internal.mk | 7 ++++--- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/core/dpi_specific_apk.mk b/core/dpi_specific_apk.mk index 5d0b5bf1d5..b2a3d64b20 100644 --- a/core/dpi_specific_apk.mk +++ b/core/dpi_specific_apk.mk @@ -48,7 +48,7 @@ endif # full_classes_jar $(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) | $(ZIPALIGN) +$(built_dpi_apk) : $(AAPT) $(built_dpi_apk) : $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) @echo "target Package: $(PRIVATE_MODULE) ($@)" $(if $(PRIVATE_SOURCE_ARCHIVE),\ @@ -68,7 +68,6 @@ ifdef LOCAL_JACK_ENABLED endif endif $(sign-package) - $(align-package) # Set up global variables to register this apk to the higher-level dependency graph. ALL_MODULES += $(dpi_apk_name) diff --git a/core/package_internal.mk b/core/package_internal.mk index cb77e76099..f5a00e5e7e 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -390,7 +390,7 @@ $(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CERTIFICATES := $(foreach c,\ $(LOCAL_ADDITIONAL_CERTIFICATES), $(c).x509.pem $(c).pk8) # Define the rule to build the actual package. -$(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN) +$(LOCAL_BUILT_MODULE): $(AAPT) # PRIVATE_JNI_SHARED_LIBRARIES is a list of :. $(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries_with_abis) # PRIVATE_JNI_SHARED_LIBRARIES_ABI is a list of ABI names. @@ -439,8 +439,6 @@ ifneq (nostripping,$(LOCAL_DEX_PREOPT)) endif endif $(sign-package) - @# Alignment must happen after all other zip operations. - $(align-package) ############################### ## Build dpi-specific apks, if it's apps_only build. @@ -475,7 +473,7 @@ built_apk_splits := $(foreach s,$(my_split_suffixes),$(built_module_path)/packag installed_apk_splits := $(foreach s,$(my_split_suffixes),$(my_module_path)/$(LOCAL_MODULE)_$(s).apk) # The splits should have been built in the same command building the base apk. -# This rule just runs signing and zipalign etc. +# This rule just runs signing. # Note that we explicily check the existence of the split apk and remove the # built base apk if the split apk isn't there. # That way the build system will rerun the aapt after the user changes the splitting parameters. @@ -487,7 +485,6 @@ $(built_apk_splits) : $(built_module_path)/%.apk : $(LOCAL_BUILT_MODULE) rm $<; exit 1; \ fi $(sign-package) - $(align-package) # Rules to install the splits $(installed_apk_splits) : $(my_module_path)/$(LOCAL_MODULE)_%.apk : $(built_module_path)/package_%.apk | $(ACP) diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index aec08ed3f2..9ff348ca55 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -224,8 +224,10 @@ ifneq (nostripping,$(LOCAL_DEX_PREOPT)) endif endif $(sign-package) -endif + # No need for align-package because sign-package takes care of alignment +else $(align-package) +endif ############################### ## Rule to build the odex file @@ -241,7 +243,7 @@ ifdef LOCAL_PACKAGE_SPLITS built_apk_splits := $(addprefix $(built_module_path)/,$(notdir $(LOCAL_PACKAGE_SPLITS))) installed_apk_splits := $(addprefix $(my_module_path)/,$(notdir $(LOCAL_PACKAGE_SPLITS))) -# Rules to sign and zipalign the split apks. +# Rules to sign the split apks. my_src_dir := $(sort $(dir $(LOCAL_PACKAGE_SPLITS))) ifneq (1,$(words $(my_src_dir))) $(error You must put all the split source apks in the same folder: $(LOCAL_PACKAGE_SPLITS)) @@ -253,7 +255,6 @@ $(built_apk_splits) : PRIVATE_CERTIFICATE := $(LOCAL_CERTIFICATE).x509.pem $(built_apk_splits) : $(built_module_path)/%.apk : $(my_src_dir)/%.apk | $(ACP) $(copy-file-to-new-target) $(sign-package) - $(align-package) # Rules to install the split apks. $(installed_apk_splits) : $(my_module_path)/%.apk : $(built_module_path)/%.apk | $(ACP)