diff options
Diffstat (limited to 'core/static_java_library.mk')
-rw-r--r-- | core/static_java_library.mk | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/core/static_java_library.mk b/core/static_java_library.mk index 93d770a..d317691 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -21,5 +21,83 @@ LOCAL_UNINSTALLABLE_MODULE := true LOCAL_IS_STATIC_JAVA_LIBRARY := true + +# Hack to build static Java library with Android resource +# See bug 5714516 +all_resources := +ifdef LOCAL_RESOURCE_DIR +all_resources := $(strip \ + $(foreach dir, $(LOCAL_RESOURCE_DIR), \ + $(addprefix $(dir)/, \ + $(patsubst res/%,%, \ + $(call find-subdir-assets,$(dir)) \ + ) \ + ) \ + )) + +ifneq (,$(all_resources)) +# Those files will be excluded from the built jar. +# The R/Manifest classes should be re-generated in the app Module instead. +# Use '' and $ escape because they will be passed to bash. +LOCAL_JAR_EXCLUDE_FILES := 'R.class' 'R$$*.class' 'Manifest.class' 'Manifest$$*.class' +endif +endif + include $(BUILD_SYSTEM)/java_library.mk + +ifneq (,$(all_resources)) +R_file_stamp := $(LOCAL_INTERMEDIATE_SOURCE_DIR)/R.stamp + +ifeq ($(strip $(LOCAL_MANIFEST_FILE)),) +LOCAL_MANIFEST_FILE := AndroidManifest.xml +endif +full_android_manifest := $(LOCAL_PATH)/$(LOCAL_MANIFEST_FILE) + +framework_res_package_export := +framework_res_package_export_deps := +# Please refer to package.mk +ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) +ifneq ($(filter-out current,$(LOCAL_SDK_RES_VERSION)),) +framework_res_package_export := \ + $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar +framework_res_package_export_deps := $(framework_res_package_export) +else +framework_res_package_export := \ + $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk +framework_res_package_export_deps := \ + $(dir $(framework_res_package_export))src/R.stamp +endif +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 +$(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 +$(R_file_stamp): PRIVATE_RESOURCE_DIR := $(LOCAL_RESOURCE_DIR) +$(R_file_stamp): PRIVATE_AAPT_INCLUDES := $(framework_res_package_export) +ifneq (,$(filter-out current, $(LOCAL_SDK_VERSION))) +$(R_file_stamp): PRIVATE_DEFAULT_APP_TARGET_SDK := $(LOCAL_SDK_VERSION) +else +$(R_file_stamp): PRIVATE_DEFAULT_APP_TARGET_SDK := $(DEFAULT_APP_TARGET_SDK) +endif +$(R_file_stamp): PRIVATE_ASSET_DIR := +$(R_file_stamp): PRIVATE_PROGUARD_OPTIONS_FILE := +$(R_file_stamp): PRIVATE_MANIFEST_PACKAGE_NAME := +$(R_file_stamp): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := + +$(R_file_stamp) : $(all_resources) $(full_android_manifest) $(AAPT) $(framework_res_package_export_deps) + @echo "target R.java/Manifest.java: $(PRIVATE_MODULE) ($@)" + $(create-resource-java-files) + $(hide) find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name R.java | xargs cat > $@ + +$(LOCAL_BUILT_MODULE): $(R_file_stamp) +ifneq ($(full_classes_jar),) +$(full_classes_compiled_jar): $(R_file_stamp) +endif + +endif # $(all_resources) not empty + LOCAL_IS_STATIC_JAVA_LIBRARY := +LOCAL_JAR_EXCLUDE_FILES := |