Add jni libicu_jni library into ART APEX
- The library may be moved into i18n APEX in the future
Bug: 138994281
Test: device boots
Change-Id: I9c629224bb318acde744d470e7483a80b2473aa4
diff --git a/build/Android.common_path.mk b/build/Android.common_path.mk
index 9c8a45d..df35bd8 100644
--- a/build/Android.common_path.mk
+++ b/build/Android.common_path.mk
@@ -102,7 +102,7 @@
ART_HOST_DEX_DEPENDENCIES := $(foreach jar,$(HOST_TEST_CORE_JARS),$(HOST_OUT_JAVA_LIBRARIES)/$(jar).jar)
ART_TARGET_DEX_DEPENDENCIES := $(foreach jar,$(TARGET_TEST_CORE_JARS),$(TARGET_OUT_JAVA_LIBRARIES)/$(jar).jar)
-ART_CORE_SHARED_LIBRARIES := libjavacore libopenjdk libopenjdkjvm libopenjdkjvmti
+ART_CORE_SHARED_LIBRARIES := libicu_jni libjavacore libopenjdk libopenjdkjvm libopenjdkjvmti
ART_CORE_SHARED_DEBUG_LIBRARIES := libopenjdkd libopenjdkjvmd libopenjdkjvmtid
ART_HOST_SHARED_LIBRARY_DEPENDENCIES := $(foreach lib,$(ART_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))
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index 258a8b0..51327b3 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -504,6 +504,7 @@
$$(ART_GTEST_$(1)_TARGET_DEPS) \
$(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_TARGET_GTEST_$(file)_DEX)) \
$$(gtest_exe) \
+ $$($(3)TARGET_OUT_SHARED_LIBRARIES)/libicu_jni.so \
$$($(3)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so \
$$($(3)TARGET_OUT_SHARED_LIBRARIES)/libopenjdkd.so \
$$(foreach jar,$$(TARGET_TEST_CORE_JARS),$$(TARGET_OUT_JAVA_LIBRARIES)/$$(jar).jar)
@@ -562,6 +563,7 @@
gtest_exe := $(2)
# Dependencies for all host gtests.
gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \
+ $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$$(ART_HOST_SHLIB_EXTENSION) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$$(ART_HOST_SHLIB_EXTENSION) \
$$(gtest_exe) \
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index 41ada9b..ceb3093 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -166,6 +166,7 @@
"libexpat",
"libicui18n",
"libicuuc",
+ "libicu_jni",
"libjavacore",
"libopenjdk",
]
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index 87a9843..e7f3e00 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -539,6 +539,7 @@
self._checker.check_native_library('libexpat')
self._checker.check_native_library('libicui18n')
self._checker.check_native_library('libicuuc')
+ self._checker.check_native_library('libicu_jni')
self._checker.check_native_library('libpac')
self._checker.check_native_library('libz')
@@ -569,6 +570,7 @@
self._checker.check_native_library('libexpat-host')
self._checker.check_native_library('libicui18n-host')
self._checker.check_native_library('libicuuc-host')
+ self._checker.check_native_library('libicu_jni')
self._checker.check_native_library('libz-host')
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 0c9aece..ecadf68 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1856,9 +1856,10 @@
// methods to be loaded first.
WellKnownClasses::Init(env);
- // Then set up libjavacore / libopenjdk, which are just a regular JNI libraries with
- // a regular JNI_OnLoad. Most JNI libraries can just use System.loadLibrary, but
- // libcore can't because it's the library that implements System.loadLibrary!
+ // Then set up libjavacore / libopenjdk / libicu_jni ,which are just
+ // a regular JNI libraries with a regular JNI_OnLoad. Most JNI libraries can
+ // just use System.loadLibrary, but libcore can't because it's the library
+ // that implements System.loadLibrary!
{
std::string error_msg;
if (!java_vm_->LoadNativeLibrary(
@@ -1876,6 +1877,13 @@
LOG(FATAL) << "LoadNativeLibrary failed for \"" << kOpenJdkLibrary << "\": " << error_msg;
}
}
+ {
+ std::string error_msg;
+ if (!java_vm_->LoadNativeLibrary(
+ env, "libicu_jni.so", nullptr, WellKnownClasses::java_lang_Object, &error_msg)) {
+ LOG(FATAL) << "LoadNativeLibrary failed for \"libicu_jni.so\": " << error_msg;
+ }
+ }
// Initialize well known classes that may invoke runtime native methods.
WellKnownClasses::LateInit(env);
diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk
index 08f4fd1..8ac0a35 100644
--- a/test/Android.run-test.mk
+++ b/test/Android.run-test.mk
@@ -69,6 +69,7 @@
$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \
$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \
$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetestd) \
+ $(ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$(ART_HOST_SHLIB_EXTENSION) \
$(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
$(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
@@ -88,6 +89,7 @@
$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \
$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \
$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetestd) \
+ $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$(ART_HOST_SHLIB_EXTENSION) \
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
$(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \