summaryrefslogtreecommitdiffstats
path: root/core/static_java_library.mk
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2014-12-17 17:00:53 -0800
committerYing Wang <wangying@google.com>2014-12-18 12:02:38 -0800
commitf1db7e23d91a8c080a7d0fdcaba9c04694b9aee6 (patch)
tree235ccdca8dbdf5a9e853d96ca1f6572455485f9c /core/static_java_library.mk
parenta0096d12d17cbc7d7ff24ad62078e049d25567e2 (diff)
downloadbuild-f1db7e23d91a8c080a7d0fdcaba9c04694b9aee6.zip
build-f1db7e23d91a8c080a7d0fdcaba9c04694b9aee6.tar.gz
build-f1db7e23d91a8c080a7d0fdcaba9c04694b9aee6.tar.bz2
Support to build AAR for static Java libraries.
Set up rules to build $(built_aar), if a static Java library has Android resources. If you run "tapas my_lib && make dist", my_lib.aar will be built and put in the DIST_DIR. Bug: 18759503 Change-Id: I36b912eb7bbab241fe48319115ea320efe77c705
Diffstat (limited to 'core/static_java_library.mk')
-rw-r--r--core/static_java_library.mk24
1 files changed, 23 insertions, 1 deletions
diff --git a/core/static_java_library.mk b/core/static_java_library.mk
index ecdfeeb..e1b9dd0 100644
--- a/core/static_java_library.mk
+++ b/core/static_java_library.mk
@@ -100,7 +100,8 @@ endif
$(R_file_stamp): PRIVATE_MODULE := $(LOCAL_MODULE)
# add --non-constant-id to prevent inlining constants.
-$(R_file_stamp): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --non-constant-id
+# AAR needs text symbol file R.txt.
+$(R_file_stamp): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) --non-constant-id --output-text-symbols $(LOCAL_INTERMEDIATE_SOURCE_DIR)
$(R_file_stamp): PRIVATE_SOURCE_INTERMEDIATES_DIR := $(LOCAL_INTERMEDIATE_SOURCE_DIR)
$(R_file_stamp): PRIVATE_ANDROID_MANIFEST := $(full_android_manifest)
$(R_file_stamp): PRIVATE_RESOURCE_PUBLICS_OUTPUT := $(intermediates.COMMON)/public_resources.xml
@@ -128,6 +129,27 @@ $(full_classes_jack): $(R_file_stamp)
endif # LOCAL_USE_JACK
$(full_classes_compiled_jar): $(R_file_stamp)
+# Rule to build AAR, archive including classes.jar, resource, etc.
+built_aar := $(intermediates.COMMON)/javalib.aar
+$(built_aar): PRIVATE_MODULE := $(LOCAL_MODULE)
+$(built_aar): PRIVATE_ANDROID_MANIFEST := $(full_android_manifest)
+$(built_aar): PRIVATE_CLASSES_JAR := $(LOCAL_BUILT_MODULE)
+$(built_aar): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR)
+$(built_aar): PRIVATE_R_TXT := $(LOCAL_INTERMEDIATE_SOURCE_DIR)/R.txt
+$(built_aar) : $(LOCAL_BUILT_MODULE)
+ @echo "target AAR: $(PRIVATE_MODULE) ($@)"
+ $(hide) rm -rf $(dir $@)aar && mkdir -p $(dir $@)aar/res
+ $(hide) cp $(PRIVATE_ANDROID_MANIFEST) $(dir $@)aar/AndroidManifest.xml
+ $(hide) cp $(PRIVATE_CLASSES_JAR) $(dir $@)aar/classes.jar
+ # Note: Use "cp -n" to honor the resource overlay rules, if multiple res dirs exist.
+ $(hide) $(foreach res,$(PRIVATE_RESOURCE_DIR),cp -Rfn $(res)/* $(dir $@)aar/res;)
+ $(hide) cp $(PRIVATE_R_TXT) $(dir $@)aar/R.txt
+ $(hide) jar -cMf $@ \
+ -C $(dir $@)aar .
+
+# Register the aar file.
+ALL_MODULES.$(LOCAL_MODULE).AAR := $(built_aar)
+
endif # need_compile_res
# Reset internal variables.