summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2014-07-23 14:35:40 -0700
committerYing Wang <wangying@google.com>2014-07-23 14:38:02 -0700
commit00fe587974565b110813b22ac12451758be0037d (patch)
treea223c6324e6a6fe0a11e1b49340595b9cfea188f
parent84c26b694978eb6b9ee9400d15283707ea9b3eb9 (diff)
downloadbuild-00fe587974565b110813b22ac12451758be0037d.zip
build-00fe587974565b110813b22ac12451758be0037d.tar.gz
build-00fe587974565b110813b22ac12451758be0037d.tar.bz2
Support to install prebuilt split APKs with LOCAL_PACKAGE_SPLITS
In prebuilt app module, you can use LOCAL_PACKAGE_SPLITS to specify a list of prebuilt split apks. The build system will sign and zipalign the apks and install them with the same file names. Note that you need to put all the source split apks in the same folder. Bug: 16319961 Change-Id: Id2b6d743c1edc5e436007ec11acece1748adad45
-rw-r--r--core/prebuilt_internal.mk36
1 files changed, 36 insertions, 0 deletions
diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk
index 23ca279..5666cfd 100644
--- a/core/prebuilt_internal.mk
+++ b/core/prebuilt_internal.mk
@@ -187,6 +187,42 @@ $(built_odex) : $(my_prebuilt_src_file)
$(call dexpreopt-one-file,$<,$@)
endif
+###############################
+## Install split apks.
+ifdef LOCAL_PACKAGE_SPLITS
+# LOCAL_PACKAGE_SPLITS is a list of apks to be installed.
+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.
+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))
+endif
+my_src_dir := $(LOCAL_PATH)/$(my_src_dir)
+
+$(built_apk_splits) : PRIVATE_PRIVATE_KEY := $(LOCAL_CERTIFICATE).pk8
+$(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)
+ @echo "Install: $@"
+ $(copy-file-to-new-target)
+
+# Register the additional built and installed files.
+ALL_MODULES.$(my_register_name).INSTALLED += $(installed_apk_splits)
+ALL_MODULES.$(my_register_name).BUILT_INSTALLED += \
+ $(foreach s,$(LOCAL_PACKAGE_SPLITS),$(built_module_path)/$(notdir $(s)):$(my_module_path)/$(notdir $(s)))
+
+# Make sure to install the splits when you run "make <module_name>".
+$(my_register_name): $(installed_apk_splits)
+
+endif # LOCAL_PACKAGE_SPLITS
+
else # LOCAL_MODULE_CLASS != APPS
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
$(built_module) : $(my_prebuilt_src_file)