summaryrefslogtreecommitdiff
path: root/libnativeloader/public_libraries.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libnativeloader/public_libraries.cpp')
-rw-r--r--libnativeloader/public_libraries.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/libnativeloader/public_libraries.cpp b/libnativeloader/public_libraries.cpp
index 7bb5a1fde2..575ce2d3ac 100644
--- a/libnativeloader/public_libraries.cpp
+++ b/libnativeloader/public_libraries.cpp
@@ -57,12 +57,15 @@ constexpr const char* kLlndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/llnd
constexpr const char* kVndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/vndksp.libraries.{}.txt";
const std::vector<const std::string> kArtApexPublicLibraries = {
+ "libnativehelper.so",
+};
+
+const std::vector<const std::string> ki18nApexPublicLibraries = {
"libicuuc.so",
"libicui18n.so",
- "libnativehelper.so",
};
-constexpr const char* kArtApexLibPath = "/apex/com.android.art/" LIB;
+constexpr const char* kI18nApexLibPath = "/apex/com.android.i18n/" LIB;
constexpr const char* kNeuralNetworksApexPublicLibrary = "libneuralnetworks.so";
@@ -195,14 +198,14 @@ static std::string InitDefaultPublicLibraries(bool for_preload) {
return android::base::Join(*sonames, ':');
}
- // Remove the public libs in the art namespace.
+ // Remove the public libs in the i18n namespace.
// These libs are listed in public.android.txt, but we don't want the rest of android
// in default namespace to dlopen the libs.
// For example, libicuuc.so is exposed to classloader namespace from art namespace.
// Unfortunately, it does not have stable C symbols, and default namespace should only use
// stable symbols in libandroidicu.so. http://b/120786417
- for (const std::string& lib_name : kArtApexPublicLibraries) {
- std::string path(kArtApexLibPath);
+ for (const std::string& lib_name : ki18nApexPublicLibraries) {
+ std::string path(kI18nApexLibPath);
path.append("/").append(lib_name);
struct stat s;
@@ -237,6 +240,12 @@ static std::string InitArtPublicLibraries() {
return list;
}
+static std::string InitI18nPublicLibraries() {
+ static_assert(sizeof(ki18nApexPublicLibraries) > 0, "ki18nApexPublicLibraries is empty");
+ std::string list = android::base::Join(ki18nApexPublicLibraries, ":");
+ return list;
+}
+
static std::string InitVendorPublicLibraries() {
// This file is optional, quietly ignore if the file does not exist.
auto sonames = ReadConfig(kVendorPublicLibrariesFile, always_true);
@@ -349,6 +358,11 @@ const std::string& art_public_libraries() {
return list;
}
+const std::string& i18n_public_libraries() {
+ static std::string list = InitI18nPublicLibraries();
+ return list;
+}
+
const std::string& vendor_public_libraries() {
static std::string list = InitVendorPublicLibraries();
return list;