Loading libnativeloader/public_libraries.cpp +97 −98 Original line number Diff line number Diff line Loading @@ -68,6 +68,16 @@ std::string vndk_version_str() { return ""; } // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. std::string additional_public_libraries() { if (debuggable()) { const char* val = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); return val ? val : ""; } return ""; } void InsertVndkVersionStr(std::string* file_name) { CHECK(file_name != nullptr); size_t insert_pos = file_name->find_last_of("."); Loading Loading @@ -171,12 +181,7 @@ void ReadExtensionLibraries(const char* dirname, std::vector<std::string>* sonam } } } // namespace const std::string& default_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitDefaultPublicLibraries() { std::string config_file = root_dir() + kDefaultPublicLibrariesFile; std::vector<std::string> sonames; std::string error_msg; Loading @@ -184,15 +189,10 @@ const std::string& default_public_libraries() { "Error reading public native library list from \"%s\": %s", config_file.c_str(), error_msg.c_str()); // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. if (debuggable()) { const char* additional_libs = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); if (additional_libs != nullptr && additional_libs[0] != '\0') { std::vector<std::string> additional_libs_vector = base::Split(additional_libs, ":"); std::copy(additional_libs_vector.begin(), additional_libs_vector.end(), std::back_inserter(sonames)); } std::string additional_libs = additional_public_libraries(); if (!additional_libs.empty()) { auto vec = base::Split(additional_libs, ":"); std::copy(vec.begin(), vec.end(), std::back_inserter(sonames)); } // Remove the public libs in the runtime namespace. Loading @@ -217,84 +217,83 @@ const std::string& default_public_libraries() { sonames.erase(it); } } list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& runtime_public_libraries() { static bool cached = false; static std::string list; if (!cached) { list = android::base::Join(kRuntimePublicLibraries, ":"); // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. if (debuggable()) { const char* additional_libs = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); if (additional_libs != nullptr && additional_libs[0] != '\0') { static std::string InitRuntimePublicLibraries() { CHECK(sizeof(kRuntimePublicLibraries) > 0); std::string list = android::base::Join(kRuntimePublicLibraries, ":"); std::string additional_libs = additional_public_libraries(); if (!additional_libs.empty()) { list = list + ':' + additional_libs; } } } return list; } const std::string& vendor_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitVendorPublicLibraries() { // This file is optional, quietly ignore if the file does not exist. std::vector<std::string> sonames; ReadConfig(kVendorPublicLibrariesFile, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } // read /system/etc/public.libraries-<companyname>.txt and // /product/etc/public.libraries-<companyname>.txt which contain partner defined // system libs that are exposed to apps. The libs in the txt files must be // named as lib<name>.<companyname>.so. const std::string& extended_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitExtendedPublicLibraries() { std::vector<std::string> sonames; ReadExtensionLibraries("/system/etc", &sonames); ReadExtensionLibraries("/product/etc", &sonames); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& llndk_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitLlndkLibraries() { std::string config_file = kLlndkLibrariesFile; InsertVndkVersionStr(&config_file); std::vector<std::string> sonames; ReadConfig(config_file, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& vndksp_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitVndkspLibraries() { std::string config_file = kVndkLibrariesFile; InsertVndkVersionStr(&config_file); std::vector<std::string> sonames; ReadConfig(config_file, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; return android::base::Join(sonames, ':'); } } // namespace const std::string& default_public_libraries() { static std::string list = InitDefaultPublicLibraries(); return list; } const std::string& runtime_public_libraries() { static std::string list = InitRuntimePublicLibraries(); return list; } const std::string& vendor_public_libraries() { static std::string list = InitVendorPublicLibraries(); return list; } const std::string& extended_public_libraries() { static std::string list = InitExtendedPublicLibraries(); return list; } const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); return list; } const std::string& vndksp_libraries() { static std::string list = InitVndkspLibraries(); return list; } Loading Loading
libnativeloader/public_libraries.cpp +97 −98 Original line number Diff line number Diff line Loading @@ -68,6 +68,16 @@ std::string vndk_version_str() { return ""; } // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. std::string additional_public_libraries() { if (debuggable()) { const char* val = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); return val ? val : ""; } return ""; } void InsertVndkVersionStr(std::string* file_name) { CHECK(file_name != nullptr); size_t insert_pos = file_name->find_last_of("."); Loading Loading @@ -171,12 +181,7 @@ void ReadExtensionLibraries(const char* dirname, std::vector<std::string>* sonam } } } // namespace const std::string& default_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitDefaultPublicLibraries() { std::string config_file = root_dir() + kDefaultPublicLibrariesFile; std::vector<std::string> sonames; std::string error_msg; Loading @@ -184,15 +189,10 @@ const std::string& default_public_libraries() { "Error reading public native library list from \"%s\": %s", config_file.c_str(), error_msg.c_str()); // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. if (debuggable()) { const char* additional_libs = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); if (additional_libs != nullptr && additional_libs[0] != '\0') { std::vector<std::string> additional_libs_vector = base::Split(additional_libs, ":"); std::copy(additional_libs_vector.begin(), additional_libs_vector.end(), std::back_inserter(sonames)); } std::string additional_libs = additional_public_libraries(); if (!additional_libs.empty()) { auto vec = base::Split(additional_libs, ":"); std::copy(vec.begin(), vec.end(), std::back_inserter(sonames)); } // Remove the public libs in the runtime namespace. Loading @@ -217,84 +217,83 @@ const std::string& default_public_libraries() { sonames.erase(it); } } list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& runtime_public_libraries() { static bool cached = false; static std::string list; if (!cached) { list = android::base::Join(kRuntimePublicLibraries, ":"); // For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment // variable to add libraries to the list. This is intended for platform tests only. if (debuggable()) { const char* additional_libs = getenv("ANDROID_ADDITIONAL_PUBLIC_LIBRARIES"); if (additional_libs != nullptr && additional_libs[0] != '\0') { static std::string InitRuntimePublicLibraries() { CHECK(sizeof(kRuntimePublicLibraries) > 0); std::string list = android::base::Join(kRuntimePublicLibraries, ":"); std::string additional_libs = additional_public_libraries(); if (!additional_libs.empty()) { list = list + ':' + additional_libs; } } } return list; } const std::string& vendor_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitVendorPublicLibraries() { // This file is optional, quietly ignore if the file does not exist. std::vector<std::string> sonames; ReadConfig(kVendorPublicLibrariesFile, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } // read /system/etc/public.libraries-<companyname>.txt and // /product/etc/public.libraries-<companyname>.txt which contain partner defined // system libs that are exposed to apps. The libs in the txt files must be // named as lib<name>.<companyname>.so. const std::string& extended_public_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitExtendedPublicLibraries() { std::vector<std::string> sonames; ReadExtensionLibraries("/system/etc", &sonames); ReadExtensionLibraries("/product/etc", &sonames); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& llndk_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitLlndkLibraries() { std::string config_file = kLlndkLibrariesFile; InsertVndkVersionStr(&config_file); std::vector<std::string> sonames; ReadConfig(config_file, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; } return list; return android::base::Join(sonames, ':'); } const std::string& vndksp_libraries() { static bool cached = false; static std::string list; if (!cached) { static std::string InitVndkspLibraries() { std::string config_file = kVndkLibrariesFile; InsertVndkVersionStr(&config_file); std::vector<std::string> sonames; ReadConfig(config_file, &sonames, always_true, nullptr); list = android::base::Join(sonames, ':'); cached = true; return android::base::Join(sonames, ':'); } } // namespace const std::string& default_public_libraries() { static std::string list = InitDefaultPublicLibraries(); return list; } const std::string& runtime_public_libraries() { static std::string list = InitRuntimePublicLibraries(); return list; } const std::string& vendor_public_libraries() { static std::string list = InitVendorPublicLibraries(); return list; } const std::string& extended_public_libraries() { static std::string list = InitExtendedPublicLibraries(); return list; } const std::string& llndk_libraries() { static std::string list = InitLlndkLibraries(); return list; } const std::string& vndksp_libraries() { static std::string list = InitVndkspLibraries(); return list; } Loading