blob: 88d2fe66a2a4918fbe2b9a72d425d0a31ff94be0 [file] [log] [blame]
Ying Wang8070b202014-12-01 17:46:56 -08001# Set up rules to build dpi-specific apk, with whatever else from the base apk.
2# Input variable: my_dpi, and all other variables set up in package_internal.mk.
3#
4
5dpi_apk_name := $(LOCAL_MODULE)_$(my_dpi)
6dpi_intermediate := $(call intermediates-dir-for,APPS,$(dpi_apk_name))
7built_dpi_apk := $(dpi_intermediate)/package.apk
Shinichiro Hamaji641e61c2016-05-13 16:03:24 +09008additional_certificates := $(foreach c,$(LOCAL_ADDITIONAL_CERTIFICATES), $(c).x509.pem $(c).pk8)
Ying Wang8070b202014-12-01 17:46:56 -08009
10# Set up all the target-specific variables.
11$(built_dpi_apk): PRIVATE_MODULE := $(dpi_apk_name)
Colin Crossd5cce4c2017-10-27 16:10:18 -070012$(built_dpi_apk): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --pseudo-localize $($(LOCAL_PACKAGE_NAME)_aapt_flags_$(my_dpi))
Ying Wang8070b202014-12-01 17:46:56 -080013# Clear PRIVATE_PRODUCT_AAPT_CONFIG to include everything by default.
14$(built_dpi_apk): PRIVATE_PRODUCT_AAPT_CONFIG :=
15$(built_dpi_apk): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(my_dpi)
16$(built_dpi_apk): PRIVATE_ANDROID_MANIFEST := $(full_android_manifest)
17$(built_dpi_apk): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
18$(built_dpi_apk): PRIVATE_ASSET_DIR := $(LOCAL_ASSET_DIR)
19$(built_dpi_apk): PRIVATE_AAPT_INCLUDES := $(all_library_res_package_exports)
Dan Willemsenf439c332017-10-02 14:22:02 -070020$(built_dpi_apk): PRIVATE_RESOURCE_LIST := $(all_res_assets)
Jiyong Park5ebca302018-01-31 00:14:55 +090021ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
Sundong Ahn5a44d1f2017-10-16 19:20:34 +090022$(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION))
Ying Wang8070b202014-12-01 17:46:56 -080023else
24$(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK)
25endif
26$(built_dpi_apk): PRIVATE_MANIFEST_PACKAGE_NAME := $(LOCAL_MANIFEST_PACKAGE_NAME)
27$(built_dpi_apk): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $(LOCAL_INSTRUMENTATION_FOR)
28$(built_dpi_apk): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries_with_abis)
29$(built_dpi_apk): PRIVATE_JNI_SHARED_LIBRARIES_ABI := $(jni_shared_libraries_abis)
Ying Wang8070b202014-12-01 17:46:56 -080030$(built_dpi_apk): PRIVATE_PRIVATE_KEY := $(private_key)
31$(built_dpi_apk): PRIVATE_CERTIFICATE := $(certificate)
Shinichiro Hamaji641e61c2016-05-13 16:03:24 +090032$(built_dpi_apk): $(additional_certificates)
33$(built_dpi_apk): PRIVATE_ADDITIONAL_CERTIFICATES := $(additional_certificates)
Ying Wang8070b202014-12-01 17:46:56 -080034
Colin Cross79e2f732016-12-21 14:29:13 -080035$(built_dpi_apk): PRIVATE_SOURCE_ARCHIVE :=
Ying Wang33360dd2015-01-14 14:23:56 -080036ifneq ($(full_classes_jar),)
Ying Wang85865732016-03-28 18:39:42 -070037$(built_dpi_apk): PRIVATE_DEX_FILE := $(built_dex)
Colin Cross79e2f732016-12-21 14:29:13 -080038# Use the jarjar processed arhive as the initial package file.
Colin Cross6fabefa2017-03-29 12:58:15 -070039$(built_dpi_apk): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar)
Ying Wang33360dd2015-01-14 14:23:56 -080040$(built_dpi_apk): $(built_dex)
41else
42$(built_dpi_apk): PRIVATE_DEX_FILE :=
Ying Wang33360dd2015-01-14 14:23:56 -080043endif # full_classes_jar
44
Ying Wang8070b202014-12-01 17:46:56 -080045# Set up dependenncies and the build recipe.
46$(built_dpi_apk) : $(R_file_stamp)
47$(built_dpi_apk) : $(all_library_res_package_export_deps)
Ying Wang8070b202014-12-01 17:46:56 -080048$(built_dpi_apk) : $(private_key) $(certificate) $(SIGNAPK_JAR)
Alex Klyubin5b826ac2015-12-04 10:07:41 -080049$(built_dpi_apk) : $(AAPT)
Colin Crossc9e49762018-09-14 13:39:07 -070050$(built_dpi_apk) : $(MERGE_ZIPS) $(SOONG_ZIP) $(ZIP2ZIP)
Ying Wang8070b202014-12-01 17:46:56 -080051$(built_dpi_apk) : $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest)
52 @echo "target Package: $(PRIVATE_MODULE) ($@)"
Colin Crossc9e49762018-09-14 13:39:07 -070053 rm -rf $@.parts
54 mkdir -p $@.parts
55 $(call create-assets-package,$@.parts/apk.zip)
Ying Wang8070b202014-12-01 17:46:56 -080056ifneq ($(jni_shared_libraries),)
Colin Crossc9e49762018-09-14 13:39:07 -070057 $(call create-jni-shared-libs-package,$@.parts/jni.zip)
Ying Wang8070b202014-12-01 17:46:56 -080058endif
Ying Wang8b27d182015-03-27 11:07:17 -070059ifeq ($(full_classes_jar),)
60# We don't build jar, need to add the Java resources here.
Colin Crossc9e49762018-09-14 13:39:07 -070061 $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call create-java-resources-jar,$@.parts/res.zip))
Ying Wang8b27d182015-03-27 11:07:17 -070062else
Colin Crossc9e49762018-09-14 13:39:07 -070063 $(call create-dex-jar,$@.parts/dex.zip,$(PRIVATE_DEX_FILE))
64 $(call extract-resources-jar,$@.parts/res.zip,$(PRIVATE_SOURCE_ARCHIVE))
Colin Cross79e2f732016-12-21 14:29:13 -080065endif
Colin Crossc9e49762018-09-14 13:39:07 -070066 $(MERGE_ZIPS) $@ $@.parts/*.zip
67 rm -rf $@.parts
Ying Wang8070b202014-12-01 17:46:56 -080068 $(sign-package)
Ying Wang8070b202014-12-01 17:46:56 -080069
70# Set up global variables to register this apk to the higher-level dependency graph.
71ALL_MODULES += $(dpi_apk_name)
72ALL_MODULES.$(dpi_apk_name).CLASS := APPS
73ALL_MODULES.$(dpi_apk_name).BUILT := $(built_dpi_apk)
74PACKAGES := $(PACKAGES) $(dpi_apk_name)
75PACKAGES.$(dpi_apk_name).PRIVATE_KEY := $(private_key)
76PACKAGES.$(dpi_apk_name).CERTIFICATE := $(certificate)
77
78# Phony targets used by "apps_only".
79.PHONY: $(dpi_apk_name)
80$(dpi_apk_name) : $(built_dpi_apk)