Files
android_development/build/Android.mk
Kenny Root 9e1400cdae Do not compress resources.arsc in android.jar
In framework-res.apk and in applications, resources are always stored in
zip files instead of compressed so that they may be accessed via mmap()
instead of needing to decompress them first.

This change makes sure the SDK's android.jar has the same behavior.

Change-Id: Ied881c34dca86ff5b5bd2ccfa4e316ae590ca473
2010-06-23 13:40:41 -07:00

67 lines
3.0 KiB
Makefile

LOCAL_PATH := $(call my-dir)
# The source files for this library are _all_ generated, something we don't do
# anywhere else, and the rules don't support. Aditionally, the depenencies on
# these files don't really matter, because they are all generated as part of
# building the docs. So for the dependency, we just use the
# api-stubs-timestamp file, which is the $@ of the droiddoc rule.
# We also need to depend on framework-res.apk, in order to pull the
# resource files out of there for aapt.
#
# Normally the package rule runs aapt, which includes the resource,
# but we're not running that in our package rule so just copy in the
# resource files here.
intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_stubs_current_intermediates
full_target := $(intermediates)/classes.jar
src_dir := $(intermediates)/src
classes_dir := $(intermediates)/classes
framework_res_package := $(call intermediates-dir-for,APPS,framework-res)/package.apk
$(full_target): PRIVATE_SRC_DIR := $(src_dir)
$(full_target): PRIVATE_INTERMEDIATES_DIR := $(intermediates)
$(full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(classes_dir)
$(full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package)
$(full_target): $(OUT_DOCS)/api-stubs-timestamp $(framework_res_package)
@echo Compiling SDK Stubs: $@
$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR)
$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)
$(hide) find $(PRIVATE_SRC_DIR) -name "*.java" > \
$(PRIVATE_INTERMEDIATES_DIR)/java-source-list
$(hide) $(TARGET_JAVAC) -encoding ascii -bootclasspath "" \
-g $(xlint_unchecked) \
-extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \
\@$(PRIVATE_INTERMEDIATES_DIR)/java-source-list \
|| ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 )
$(hide) if [ ! -f $(PRIVATE_FRAMEWORK_RES_PACKAGE) ]; then \
echo Missing file $(PRIVATE_FRAMEWORK_RES_PACKAGE); \
rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR); \
exit 1; \
fi;
$(hide) unzip -qo $(PRIVATE_FRAMEWORK_RES_PACKAGE) -d $(PRIVATE_CLASS_INTERMEDIATES_DIR)
$(hide) (cd $(PRIVATE_CLASS_INTERMEDIATES_DIR) && rm -rf classes.dex META-INF)
$(hide) mkdir -p $(dir $@)
$(hide) jar -cf $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) .
$(hide) jar -u0f $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) resources.arsc
.PHONY: android_stubs
android_stubs: $(full_target)
# The real rules create a javalib.jar that contains a classes.dex file. This
# code is never going to be run anywhere, so just make a copy of the file.
# The package installation stuff doesn't know about this file, so nobody will
# ever be able to write a rule that installs it to a device.
$(dir $(full_target))javalib.jar: $(full_target)
$(hide)$(ACP) $< $@
android_jar_intermediates := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/android_jar_intermediates
android_jar_full_target := $(android_jar_intermediates)/android.jar
$(android_jar_full_target): $(full_target)
@echo Package SDK Stubs: $@
$(hide)mkdir -p $(dir $@)
$(hide)$(ACP) $< $@
ALL_SDK_FILES += $(android_jar_full_target)