summaryrefslogtreecommitdiffstats
path: root/core/base_rules.mk
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-03-11 18:04:55 -0700
committerDianne Hackborn <hackbod@google.com>2013-03-12 10:50:28 -0700
commita1fece009f2e93250b2d3bc8ee4a296d100da6dc (patch)
tree2a5f422262a24a6dea9b9695eb9af056b790a9f9 /core/base_rules.mk
parent099ad657da87ec2b040af786bd26de4099dc1d0f (diff)
downloadbuild-a1fece009f2e93250b2d3bc8ee4a296d100da6dc.zip
build-a1fece009f2e93250b2d3bc8ee4a296d100da6dc.tar.gz
build-a1fece009f2e93250b2d3bc8ee4a296d100da6dc.tar.bz2
Add LOCAL_APK_LIBRARIES argument.
This allows you to build apks that link against other apks using the framework's new shared library apk feature. Also if you are using LOCAL_APK_LIBRARIES, then LOCAL_DEX_PREOPT will not be allowed. This is because using preopt means the apk is stripped of its dex file, so the pre-installed apk can't be redexed if its associated library changes. (Even if the build system didn't strip the dex, Dalvik still has issues because it assumes a pre-odex file is always valid.) Change-Id: I952c0d24f8975f75aff67f78b5faeec91144c3e7
Diffstat (limited to 'core/base_rules.mk')
-rw-r--r--core/base_rules.mk14
1 files changed, 14 insertions, 0 deletions
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 494f75b..cffaa94 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -398,6 +398,20 @@ endif # !LOCAL_IS_HOST_MODULE
full_java_libs += $(full_static_java_libs) $(LOCAL_CLASSPATH)
full_java_lib_deps += $(full_static_java_libs) $(LOCAL_CLASSPATH)
+# This is set by packages that are linking to other packages that export
+# shared libraries, allowing them to make use of the code in the linked apk.
+LOCAL_APK_LIBRARIES := $(strip $(LOCAL_APK_LIBRARIES))
+ifdef LOCAL_APK_LIBRARIES
+ link_apk_libraries := \
+ $(foreach lib,$(LOCAL_APK_LIBRARIES), \
+ $(call intermediates-dir-for, \
+ APPS,$(lib),,COMMON)/classes.jar)
+
+ # link against the jar with full original names (before proguard processing).
+ full_java_libs += $(link_apk_libraries)
+ full_java_lib_deps += $(link_apk_libraries)
+endif
+
# This is set by packages that contain instrumentation, allowing them to
# link against the package they are instrumenting. Currently only one such
# package is allowed.