1 # 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 5 dpi_apk_name := $(LOCAL_MODULE)_$(my_dpi) 6 dpi_intermediate := $(call intermediates-dir-for,APPS,$(dpi_apk_name)) 7 built_dpi_apk := $(dpi_intermediate)/package.apk 8 additional_certificates := $(foreach c,$(LOCAL_ADDITIONAL_CERTIFICATES), $(c).x509.pem $(c).pk8) 9 10 # Set up all the target-specific variables. 11 $(built_dpi_apk): PRIVATE_MODULE := $(dpi_apk_name) 12 $(built_dpi_apk): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --pseudo-localize $($(LOCAL_PACKAGE_NAME)_aapt_flags_$(my_dpi)) 13 # 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) 20 $(built_dpi_apk): PRIVATE_RESOURCE_LIST := $(all_res_assets) 21 ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION))) 22 $(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) 23 else 24 $(built_dpi_apk): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK) 25 endif 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) 30 $(built_dpi_apk): PRIVATE_PRIVATE_KEY := $(private_key) 31 $(built_dpi_apk): PRIVATE_CERTIFICATE := $(certificate) 32 $(built_dpi_apk): $(additional_certificates) 33 $(built_dpi_apk): PRIVATE_ADDITIONAL_CERTIFICATES := $(additional_certificates) 34 35 $(built_dpi_apk): PRIVATE_SOURCE_ARCHIVE := 36 ifneq ($(full_classes_jar),) 37 $(built_dpi_apk): PRIVATE_DEX_FILE := $(built_dex) 38 # Use the jarjar processed arhive as the initial package file. 39 $(built_dpi_apk): PRIVATE_SOURCE_ARCHIVE := $(full_classes_pre_proguard_jar) 40 $(built_dpi_apk): $(built_dex) 41 else 42 $(built_dpi_apk): PRIVATE_DEX_FILE := 43 endif # full_classes_jar 44 45 # Set up dependenncies and the build recipe. 46 $(built_dpi_apk) : $(R_file_stamp) 47 $(built_dpi_apk) : $(all_library_res_package_export_deps) 48 $(built_dpi_apk) : $(private_key) $(certificate) $(SIGNAPK_JAR) 49 $(built_dpi_apk) : $(AAPT) 50 $(built_dpi_apk) : $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest) 51 @echo "target Package: $(PRIVATE_MODULE) ($@)" 52 $(if $(PRIVATE_SOURCE_ARCHIVE),\ 53 $(call initialize-package-file,$(PRIVATE_SOURCE_ARCHIVE),$@),\ 54 $(create-empty-package)) 55 $(add-assets-to-package) 56 ifneq ($(jni_shared_libraries),) 57 $(add-jni-shared-libs-to-package) 58 endif 59 ifeq ($(full_classes_jar),) 60 # We don't build jar, need to add the Java resources here. 61 $(if $(PRIVATE_EXTRA_JAR_ARGS),$(call add-java-resources-to,$@)) 62 else 63 $(add-dex-to-package) 64 endif 65 $(sign-package) 66 67 # Set up global variables to register this apk to the higher-level dependency graph. 68 ALL_MODULES += $(dpi_apk_name) 69 ALL_MODULES.$(dpi_apk_name).CLASS := APPS 70 ALL_MODULES.$(dpi_apk_name).BUILT := $(built_dpi_apk) 71 PACKAGES := $(PACKAGES) $(dpi_apk_name) 72 PACKAGES.$(dpi_apk_name).PRIVATE_KEY := $(private_key) 73 PACKAGES.$(dpi_apk_name).CERTIFICATE := $(certificate) 74 75 # Phony targets used by "apps_only". 76 .PHONY: $(dpi_apk_name) 77 $(dpi_apk_name) : $(built_dpi_apk) 78