aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2018-06-08 11:07:18 -0700
committerXin Li <delphij@google.com>2018-06-08 11:07:18 -0700
commit1bf821f9f323d805c49313bcd01027fef6ddf7c6 (patch)
tree0c73429fa1dfd38a75be6a825d0549f039661dd1
parent806b50f604a816f9b7a972397005edcdff89b000 (diff)
parent218dbb89ab1e7884c1490324e57885432fa65f28 (diff)
downloadrobolectric-temp_p_merge.tar.gz
Merge pi-dev-plus-aosp-without-vendor into stage-aosp-mastertemp_p_merge
Bug: 79597307 Change-Id: I2aeb4251641c2c5430afa0ee6c91f36f1b7ecdde
-rw-r--r--Android.mk31
-rw-r--r--include_framework_res.mk50
2 files changed, 72 insertions, 9 deletions
diff --git a/Android.mk b/Android.mk
index 352b94a60..e0852a8fd 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
LOCAL_STATIC_JAVA_LIBRARIES := \
conscrypt \
@@ -26,13 +27,16 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
icu4j-icudata-jarjar \
icu4j-icutzdata-jarjar \
ims-common \
- legacy-test \
+ android.test.base \
libphonenumber-platform \
okhttp \
services \
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
@@ -46,11 +50,20 @@ $(LOCAL_INTERMEDIATE_TARGETS): $(call copy-many-files,\
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_EXTRA_JAR_ARGS += \
-C "$(intermediates.COMMON)" "usr/share/zoneinfo"
+# Copy the build.prop
+$(LOCAL_INTERMEDIATE_TARGETS): $(call copy-many-files,\
+ $(TARGET_OUT)/build.prop:$(intermediates.COMMON)/build.prop)
+$(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)
-else
$(call dist-for-goals,sdk win_sdk,\
- $(LOCAL_BUILT_MODULE):android-all-$(PLATFORM_VERSION)-robolectric-$(BUILD_NUMBER).jar)
-endif
+ $(robo_full_target):android-all-$(PLATFORM_VERSION)-robolectric-$(FILE_NAME_TAG).jar)
diff --git a/include_framework_res.mk b/include_framework_res.mk
new file mode 100644
index 000000000..07cf67cb3
--- /dev/null
+++ b/include_framework_res.mk
@@ -0,0 +1,50 @@
+# 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)
+
+.KATI_RESTAT: $(robo_full_target)
+$(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,$@)
+