diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-11-16 02:32:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-11-16 02:32:18 +0000 |
commit | cf7cc8b7d674e3672e657d686d3601046070afa2 (patch) | |
tree | c4bccf6a62f148a28da80428262a4a8ca6390c9a | |
parent | 0e9426f6d57d8cc1de4aa6c194cc280bb6685b8d (diff) | |
parent | e94d3a3fa6a09132a203c27857ddd5e6e102993c (diff) | |
download | robolectric-cf7cc8b7d674e3672e657d686d3601046070afa2.tar.gz |
Merge "Include binary framework resources in robolectric-android-all jar"
-rw-r--r-- | Android.mk | 20 | ||||
-rw-r--r-- | include_framework_res.mk | 49 |
2 files changed, 65 insertions, 4 deletions
diff --git a/Android.mk b/Android.mk index 7d1e5657f..7e565ef98 100644 --- a/Android.mk +++ b/Android.mk @@ -15,8 +15,9 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE := robolectric_android-all -LOCAL_JACK_ENABLED := disabled +# Intermediate target that produces classes-only jar + +LOCAL_MODULE := robolectric_android-all-stub # Re-package icudata under android.icu.**. LOCAL_JARJAR_RULES := external/icu/icu4j/liblayout-jarjar-rules.txt @@ -36,6 +37,9 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ services.accessibility \ telephony-common +# include the uncompiled/raw resources in the jar +# Eventually these raw resources will be removed once the transition to +# binary/compiled resources is complete. LOCAL_JAVA_RESOURCE_FILES := \ frameworks/base/core/res/assets \ frameworks/base/core/res/res @@ -55,11 +59,19 @@ $(LOCAL_INTERMEDIATE_TARGETS): $(call copy-many-files,\ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS += \ -C "$(intermediates.COMMON)" "build.prop" +######################################## + +include $(CLEAR_VARS) + +# Adds binary framework resources to the produced jar +robo_stub_module_name := robolectric_android-all-stub +include $(LOCAL_PATH)/include_framework_res.mk + # Distribute the android-all artifact with SDK artifacts. ifneq ($(filter eng.%,$(BUILD_NUMBER)),) $(call dist-for-goals,sdk win_sdk,\ - $(LOCAL_BUILT_MODULE):android-all-$(PLATFORM_VERSION)-robolectric-eng.$(USER).jar) + $(robo_full_target):android-all-$(PLATFORM_VERSION)-robolectric-eng.$(USER).jar) else $(call dist-for-goals,sdk win_sdk,\ - $(LOCAL_BUILT_MODULE):android-all-$(PLATFORM_VERSION)-robolectric-$(BUILD_NUMBER).jar) + $(robo_full_target):android-all-$(PLATFORM_VERSION)-robolectric-$(BUILD_NUMBER).jar) endif diff --git a/include_framework_res.mk b/include_framework_res.mk new file mode 100644 index 000000000..09dde5809 --- /dev/null +++ b/include_framework_res.mk @@ -0,0 +1,49 @@ +# Add compiled framework resources to a robolectric jar file +# Input variable: +# robo_stub_module_name: the name of the make module that produces the Java library; the jar file should have been generated to +# $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/$(robo_stub_module_name)_intermediates. +# Output variable: +# robo_full_target: the built classes-with-res.jar +# +# Depends on framework-res.apk, in order to pull the +# resource files out of there. +# +robo_intermediates := $(call intermediates-dir-for,JAVA_LIBRARIES,$(robo_stub_module_name),,COMMON) +robo_full_target := $(robo_intermediates)/classes-with-res.jar +robo_input_jar := $(robo_intermediates)/classes.jar +robo_classes_dir := $(robo_intermediates)/classes +framework_res_package := $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk + +$(robo_full_target): PRIVATE_INTERMEDIATES_DIR := $(robo_intermediates) +$(robo_full_target): PRIVATE_FRAMEWORK_RES_PACKAGE := $(framework_res_package) + +$(robo_full_target): PRIVATE_CLASS_INTERMEDIATES_DIR := $(robo_classes_dir) + +$(robo_full_target): $(framework_res_package) $(robo_input_jar) $(ZIPTIME) + @echo Adding framework resources: $@ + $(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) + $(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) + $(hide) if [ ! -f $(robo_input_jar) ]; then \ + echo Missing file $(robo_input_jar); \ + rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR); \ + exit 1; \ + fi; + $(hide) unzip -qo $(robo_input_jar) -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) + # Move the raw/uncompiled resources into raw-res/ + # This logic can be removed once the transition to binary resources is complete + $(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR)/raw-res + $(hide) mv $(PRIVATE_CLASS_INTERMEDIATES_DIR)/res $(PRIVATE_CLASS_INTERMEDIATES_DIR)/raw-res/ + $(hide) mv $(PRIVATE_CLASS_INTERMEDIATES_DIR)/assets $(PRIVATE_CLASS_INTERMEDIATES_DIR)/raw-res/ + $(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 $@.tmp -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) . + $(hide) jar -u0f $@.tmp -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) resources.arsc + $(hide) $(ZIPTIME) $@.tmp + $(hide) $(call commit-change-for-toc,$@) + |