diff options
Diffstat (limited to 'libnativeloader/public_libraries.cpp')
-rw-r--r-- | libnativeloader/public_libraries.cpp | 24 |
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; |