Adjust build and test scripts for handling ICU prebuilts.

Test: run-tests, buildbot-build.sh, run-libcore-tests, run-libjdwp-tests, gtests (on device and host)
Test: gart/tools/golem/build-target.sh, and art/build/apex/runtests.sh.
Bug: 157734636
Bug: 129332183
Change-Id: I8ae469ade6adb0b9a2b7617598a4e68796a0f8d3
diff --git a/Android.mk b/Android.mk
index d8340bd..b2a0157 100644
--- a/Android.mk
+++ b/Android.mk
@@ -468,8 +468,12 @@
 .PHONY: build-art
 build-art: build-art-host build-art-target
 
+# For host, we extract the ICU data from the apex and install it to HOST_OUT/I18N_APEX.
 .PHONY: build-art-host
-build-art-host:   $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CORE_IMG_OUTS)
+build-art-host:   $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CORE_IMG_OUTS) $(I18N_APEX) deapexer
+	$(call extract-from-apex,$(I18N_APEX))
+	mkdir -p $(HOST_OUT)/$(I18N_APEX)/
+	cp -R $(TARGET_OUT)/apex/$(I18N_APEX)/etc/ $(HOST_OUT)/$(I18N_APEX)/
 
 .PHONY: build-art-target
 build-art-target: $(TARGET_OUT_EXECUTABLES)/art $(ART_TARGET_DEPENDENCIES) $(TARGET_CORE_IMG_OUTS)
@@ -660,16 +664,6 @@
 # ART APEX.
 
 # Also include:
-# - a copy of the ICU prebuilt .dat file in /system/etc/icu on target
-#   (see module `icu-data-art-test-i18n`); and
-# so that it can be found even if the ART APEX is not available, by setting the
-# environment variable `ART_TEST_ANDROID_ART_ROOT` to "/system" on device. This
-# is a temporary change needed until Golem fully supports the ART APEX.
-#
-# TODO(b/129332183): Remove this when Golem has full support for the
-# ART APEX.
-
-# Also include:
 # - a copy of the time zone data prebuilt files in
 #   /system/etc/tzdata_module/etc/tz and /system/etc/tzdata_module/etc/icu
 #   on target, (see modules `tzdata-art-test-tzdata`,
@@ -691,7 +685,6 @@
                         $(ART_TARGET_SHARED_LIBRARY_BENCHMARK) \
                         libartpalette-system \
                         libc.bootstrap libdl.bootstrap libdl_android.bootstrap libm.bootstrap \
-                        icu-data-art-test-i18n \
                         tzdata-art-test-tzdata tzlookup.xml-art-test-tzdata \
                         tz_version-art-test-tzdata icu_overlay-art-test-tzdata \
                         standalone-apex-files
diff --git a/build/Android.common_path.mk b/build/Android.common_path.mk
index 54e337e..bcd5c62 100644
--- a/build/Android.common_path.mk
+++ b/build/Android.common_path.mk
@@ -67,7 +67,7 @@
 
 ART_CORE_SHARED_LIBRARIES := libjavacore libopenjdk libopenjdkjvm libopenjdkjvmti
 ART_CORE_SHARED_DEBUG_LIBRARIES := libopenjdkd libopenjdkjvmd libopenjdkjvmtid
-ART_HOST_CORE_SHARED_LIBRARIES := $(ART_CORE_SHARED_LIBRARIES) libandroidicu-host libicuuc-host libicui18n-host libicu_jni
+ART_HOST_CORE_SHARED_LIBRARIES := $(ART_CORE_SHARED_LIBRARIES) libicuuc-host libicui18n-host libicu_jni
 ART_HOST_SHARED_LIBRARY_DEPENDENCIES := $(foreach lib,$(ART_HOST_CORE_SHARED_LIBRARIES), $(ART_HOST_OUT_SHARED_LIBRARIES)/$(lib)$(ART_HOST_SHLIB_EXTENSION))
 ART_HOST_SHARED_LIBRARY_DEBUG_DEPENDENCIES := $(foreach lib,$(ART_CORE_SHARED_DEBUG_LIBRARIES), $(ART_HOST_OUT_SHARED_LIBRARIES)/$(lib)$(ART_HOST_SHLIB_EXTENSION))
 ifdef HOST_2ND_ARCH
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index dc5015f..4719429 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -258,7 +258,7 @@
 ifeq ($(ART_BUILD_TARGET),true)
   $(foreach name,$(ART_TARGET_GTEST_NAMES), $(eval $(call add-art-gtest-dependencies,$(name),)))
   ART_TEST_TARGET_GTEST_DEPENDENCIES += \
-    libicu_jni.com.android.i18n \
+    com.android.i18n \
     libjavacore.com.android.art.testing \
     libopenjdkd.com.android.art.testing \
     com.android.art.testing \
diff --git a/tools/bootjars.sh b/tools/bootjars.sh
index 5516bfb..6c39d31 100755
--- a/tools/bootjars.sh
+++ b/tools/bootjars.sh
@@ -113,7 +113,12 @@
     if [[ $jar == "conscrypt" ]]; then
       echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.conscrypt_intermediates/classes.jar"
     elif [[ $jar == "core-icu4j" ]]; then
-      echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar"
+      # The location of ICU is different on an unbundled build.
+      if [[ -f "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar" ]]; then
+        echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar"
+      else
+        echo "$intermediates_dir/JAVA_LIBRARIES/${jar}_intermediates/classes.jar"
+      fi
     else
       echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.art.testing_intermediates/classes.jar"
     fi
diff --git a/tools/buildbot-build.sh b/tools/buildbot-build.sh
index 9f2b9a8..5a6c0d7 100755
--- a/tools/buildbot-build.sh
+++ b/tools/buildbot-build.sh
@@ -86,8 +86,8 @@
   make_command+=" libnetd_client-target toybox sh"
   make_command+=" debuggerd su gdbserver"
   make_command+=" libstdc++ "
-  # vogar requires the class files for conscrypt.
-  make_command+=" conscrypt "
+  # vogar requires the class files for conscrypt and ICU.
+  make_command+=" conscrypt core-icu4j"
   make_command+=" ${ANDROID_PRODUCT_OUT#"${ANDROID_BUILD_TOP}/"}/system/etc/public.libraries.txt"
   # Targets required to generate a linker configuration for device within the
   # chroot environment. The *.libraries.txt targets are required by