diff options
Diffstat (limited to 'libnativeloader/public_libraries.cpp')
-rw-r--r-- | libnativeloader/public_libraries.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/libnativeloader/public_libraries.cpp b/libnativeloader/public_libraries.cpp index 66572e7d36..87210c8f14 100644 --- a/libnativeloader/public_libraries.cpp +++ b/libnativeloader/public_libraries.cpp @@ -201,7 +201,9 @@ static std::string InitVendorPublicLibraries() { // contains the extended public libraries that are loaded from the system namespace. static std::string InitProductPublicLibraries() { std::vector<std::string> sonames; - ReadExtensionLibraries("/product/etc", &sonames); + if (is_product_treblelized()) { + ReadExtensionLibraries("/product/etc", &sonames); + } std::string libs = android::base::Join(sonames, ':'); ALOGD("InitProductPublicLibraries: %s", libs.c_str()); return libs; @@ -216,6 +218,9 @@ static std::string InitExtendedPublicLibraries() { std::vector<std::string> sonames; ReadExtensionLibraries("/system/etc", &sonames); ReadExtensionLibraries("/system_ext/etc", &sonames); + if (!is_product_treblelized()) { + ReadExtensionLibraries("/product/etc", &sonames); + } std::string libs = android::base::Join(sonames, ':'); ALOGD("InitExtendedPublicLibraries: %s", libs.c_str()); return libs; @@ -256,6 +261,10 @@ static std::string InitLlndkLibrariesVendor() { } static std::string InitLlndkLibrariesProduct() { + if (!is_product_treblelized()) { + ALOGD("InitLlndkLibrariesProduct: Product is not treblelized"); + return ""; + } std::string config_file; if (IsProductVndkEnabled()) { config_file = kLlndkLibrariesFile; @@ -416,6 +425,19 @@ const std::map<std::string, std::string>& apex_public_libraries() { return public_libraries; } +bool is_product_treblelized() { +#if defined(ART_TARGET_ANDROID) + // Product is not treblelized iff launching version is prior to R and + // ro.product.vndk.version is not defined + static bool product_treblelized = + !(android::base::GetIntProperty("ro.product.first_api_level", 0) < __ANDROID_API_R__ && + !android::sysprop::VndkProperties::product_vndk_version().has_value()); + return product_treblelized; +#else + return false; +#endif +} + std::string get_vndk_version(bool is_product_vndk) { #if defined(ART_TARGET_ANDROID) if (is_product_vndk) { |