Refactor public_libraries.*
- shorten the long const variables
- merge {oem|product}_public_libraries into extended_public_libraries
Bug: 130388701
Test: build & pass presubmit tests
Change-Id: I43be555041466118f2b2d188f5da3ff0d8ed7d8d
diff --git a/libnativeloader/public_libraries.cpp b/libnativeloader/public_libraries.cpp
index e6f8448e..c473f2c 100644
--- a/libnativeloader/public_libraries.cpp
+++ b/libnativeloader/public_libraries.cpp
@@ -34,17 +34,13 @@
using namespace std::string_literals;
namespace {
-// TODO(b/130388701) simplify the names below
-constexpr const char kPublicNativeLibrariesSystemConfigPathFromRoot[] = "/etc/public.libraries.txt";
-constexpr const char kPublicNativeLibrariesExtensionConfigPrefix[] = "public.libraries-";
-constexpr const size_t kPublicNativeLibrariesExtensionConfigPrefixLen =
- sizeof(kPublicNativeLibrariesExtensionConfigPrefix) - 1;
-constexpr const char kPublicNativeLibrariesExtensionConfigSuffix[] = ".txt";
-constexpr const size_t kPublicNativeLibrariesExtensionConfigSuffixLen =
- sizeof(kPublicNativeLibrariesExtensionConfigSuffix) - 1;
-constexpr const char kPublicNativeLibrariesVendorConfig[] = "/vendor/etc/public.libraries.txt";
-constexpr const char kLlndkNativeLibrariesSystemConfigPathFromRoot[] = "/etc/llndk.libraries.txt";
-constexpr const char kVndkspNativeLibrariesSystemConfigPathFromRoot[] = "/etc/vndksp.libraries.txt";
+
+constexpr const char* kDefaultPublicLibrariesFile = "/etc/public.libraries.txt";
+constexpr const char* kExtendedPublicLibrariesFilePrefix = "public.libraries-";
+constexpr const char* kExtendedPublicLibrariesFileSuffix = ".txt";
+constexpr const char* kVendorPublicLibrariesFile = "/vendor/etc/public.libraries.txt";
+constexpr const char* kLlndkLibrariesFile = "/system/etc/llndk.libraries.txt";
+constexpr const char* kVndkLibrariesFile = "/system/etc/vndksp.libraries.txt";
const std::vector<const std::string> kRuntimePublicLibraries = {
"libicuuc.so",
@@ -53,26 +49,26 @@
constexpr const char* kRuntimeApexLibPath = "/apex/com.android.runtime/" LIB;
+// TODO(b/130388701): do we need this?
std::string root_dir() {
static const char* android_root_env = getenv("ANDROID_ROOT");
return android_root_env != nullptr ? android_root_env : "/system";
}
bool debuggable() {
- bool debuggable = false;
- debuggable = android::base::GetBoolProperty("ro.debuggable", false);
+ static bool debuggable = android::base::GetBoolProperty("ro.debuggable", false);
return debuggable;
}
std::string vndk_version_str() {
- std::string version = android::base::GetProperty("ro.vndk.version", "");
+ static std::string version = android::base::GetProperty("ro.vndk.version", "");
if (version != "" && version != "current") {
return "." + version;
}
return "";
}
-void insert_vndk_version_str(std::string* file_name) {
+void InsertVndkVersionStr(std::string* file_name) {
CHECK(file_name != nullptr);
size_t insert_pos = file_name->find_last_of(".");
if (insert_pos == std::string::npos) {
@@ -142,11 +138,10 @@
continue;
}
const std::string filename(ent->d_name);
- if (android::base::StartsWith(filename, kPublicNativeLibrariesExtensionConfigPrefix) &&
- android::base::EndsWith(filename, kPublicNativeLibrariesExtensionConfigSuffix)) {
- const size_t start = kPublicNativeLibrariesExtensionConfigPrefixLen;
- const size_t end = filename.size() - kPublicNativeLibrariesExtensionConfigSuffixLen;
- const std::string company_name = filename.substr(start, end - start);
+ std::string_view fn = filename;
+ if (android::base::ConsumePrefix(&fn, kExtendedPublicLibrariesFilePrefix) &&
+ android::base::ConsumeSuffix(&fn, kExtendedPublicLibrariesFileSuffix)) {
+ const std::string company_name(fn);
const std::string config_file_path = dirname + "/"s + filename;
LOG_ALWAYS_FATAL_IF(
company_name.empty(),
@@ -178,11 +173,11 @@
} // namespace
-const std::string& system_public_libraries() {
+const std::string& default_public_libraries() {
static bool cached = false;
static std::string list;
if (!cached) {
- std::string config_file = root_dir() + kPublicNativeLibrariesSystemConfigPathFromRoot;
+ std::string config_file = root_dir() + kDefaultPublicLibrariesFile;
std::vector<std::string> sonames;
std::string error_msg;
LOG_ALWAYS_FATAL_IF(!ReadConfig(config_file, &sonames, always_true, &error_msg),
@@ -251,35 +246,23 @@
if (!cached) {
// This file is optional, quietly ignore if the file does not exist.
std::vector<std::string> sonames;
- ReadConfig(kPublicNativeLibrariesVendorConfig, &sonames, always_true, nullptr);
+ ReadConfig(kVendorPublicLibrariesFile, &sonames, always_true, nullptr);
list = android::base::Join(sonames, ':');
cached = true;
}
return list;
}
-// read /system/etc/public.libraries-<companyname>.txt which contain partner defined
+// 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& oem_public_libraries() {
+const std::string& extended_public_libraries() {
static bool cached = false;
static std::string list;
if (!cached) {
std::vector<std::string> sonames;
ReadExtensionLibraries("/system/etc", &sonames);
- list = android::base::Join(sonames, ':');
- cached = true;
- }
- return list;
-}
-
-// read /product/etc/public.libraries-<companyname>.txt which contain partner defined
-// product libs that are exposed to apps.
-const std::string& product_public_libraries() {
- static bool cached = false;
- static std::string list;
- if (!cached) {
- std::vector<std::string> sonames;
ReadExtensionLibraries("/product/etc", &sonames);
list = android::base::Join(sonames, ':');
cached = true;
@@ -287,12 +270,12 @@
return list;
}
-const std::string& system_llndk_libraries() {
+const std::string& llndk_libraries() {
static bool cached = false;
static std::string list;
if (!cached) {
- std::string config_file = root_dir() + kLlndkNativeLibrariesSystemConfigPathFromRoot;
- insert_vndk_version_str(&config_file);
+ 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, ':');
@@ -301,12 +284,12 @@
return list;
}
-const std::string& system_vndksp_libraries() {
+const std::string& vndksp_libraries() {
static bool cached = false;
static std::string list;
if (!cached) {
- std::string config_file = root_dir() + kVndkspNativeLibrariesSystemConfigPathFromRoot;
- insert_vndk_version_str(&config_file);
+ 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, ':');