summaryrefslogtreecommitdiff
path: root/libnativeloader/public_libraries.cpp
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-03-07 03:02:00 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-03-07 03:02:00 +0000
commit65e1b51c576cc98578b8f3416f351f0f23210d05 (patch)
tree5ab4815023f505e3a2182efefff81d79a726cd0d /libnativeloader/public_libraries.cpp
parent8da16a77023e24729cbdab27045553ee96d86edb (diff)
parent946ee59a7427b1e7d6eab2c1c69707d6af3e5c0b (diff)
Snap for 6272866 from 946ee59a7427b1e7d6eab2c1c69707d6af3e5c0b to rvc-release
Change-Id: Ibe8039602ad63f85eb5cea19f6d9dcf7455e1914
Diffstat (limited to 'libnativeloader/public_libraries.cpp')
-rw-r--r--libnativeloader/public_libraries.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/libnativeloader/public_libraries.cpp b/libnativeloader/public_libraries.cpp
index 8ab8368694..157ace5ad5 100644
--- a/libnativeloader/public_libraries.cpp
+++ b/libnativeloader/public_libraries.cpp
@@ -50,8 +50,8 @@ 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";
+constexpr const char* kLlndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/llndk.libraries.{}.txt";
+constexpr const char* kVndkLibrariesFile = "/apex/com.android.vndk.v{}/etc/vndksp.libraries.{}.txt";
const std::vector<const std::string> kArtApexPublicLibraries = {
"libicuuc.so",
@@ -76,11 +76,13 @@ bool debuggable() {
}
std::string vndk_version_str(bool use_product_vndk) {
- static std::string version = get_vndk_version(use_product_vndk);
- if (version != "" && version != "current") {
- return "." + version;
+ if (use_product_vndk) {
+ static std::string product_vndk_version = get_vndk_version(true);
+ return product_vndk_version;
+ } else {
+ static std::string vendor_vndk_version = get_vndk_version(false);
+ return vendor_vndk_version;
}
- return "";
}
// For debuggable platform builds use ANDROID_ADDITIONAL_PUBLIC_LIBRARIES environment
@@ -93,13 +95,15 @@ std::string additional_public_libraries() {
return "";
}
+// insert vndk version in every {} placeholder
void InsertVndkVersionStr(std::string* file_name, bool use_product_vndk) {
CHECK(file_name != nullptr);
- size_t insert_pos = file_name->find_last_of(".");
- if (insert_pos == std::string::npos) {
- insert_pos = file_name->length();
+ auto version = vndk_version_str(use_product_vndk);
+ size_t pos = file_name->find("{}");
+ while (pos != std::string::npos) {
+ file_name->replace(pos, 2, version);
+ pos = file_name->find("{}", pos + version.size());
}
- file_name->insert(insert_pos, vndk_version_str(use_product_vndk));
}
const std::function<Result<bool>(const struct ConfigEntry&)> always_true =
@@ -256,7 +260,7 @@ static std::string InitLlndkLibrariesVendor() {
InsertVndkVersionStr(&config_file, false);
auto sonames = ReadConfig(config_file, always_true);
if (!sonames.ok()) {
- LOG_ALWAYS_FATAL("%s", sonames.error().message().c_str());
+ LOG_ALWAYS_FATAL("%s: %s", config_file.c_str(), sonames.error().message().c_str());
return "";
}
return android::base::Join(*sonames, ':');
@@ -267,7 +271,7 @@ static std::string InitLlndkLibrariesProduct() {
InsertVndkVersionStr(&config_file, true);
auto sonames = ReadConfig(config_file, always_true);
if (!sonames.ok()) {
- LOG_ALWAYS_FATAL("%s", sonames.error().message().c_str());
+ LOG_ALWAYS_FATAL("%s: %s", config_file.c_str(), sonames.error().message().c_str());
return "";
}
return android::base::Join(*sonames, ':');