summaryrefslogtreecommitdiff
path: root/libnativeloader/library_namespaces.cpp
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2021-06-20 17:54:38 +0900
committerJooyung Han <jooyung@google.com>2021-06-22 00:56:43 +0000
commit8e4a3bc0cd6bf8af349b3abca4c06b540be1233a (patch)
tree274665aa710468c8f900b827a223181acfc8ed28 /libnativeloader/library_namespaces.cpp
parenta58b38211b3a8a583a04098545be9143dc4db0db (diff)
Fix link apex for jni libs
When library_path is ":" splitted list of .jar files, we should iterate over each .jar file path to link a proper APEX namespace for JNI lib. Bug: 169826971 Test: libnativeloader_test Test: move libicing to appsearch apex Merged-In: I3df47203d336036d0e015f9c5421b30a0377087f Change-Id: I3df47203d336036d0e015f9c5421b30a0377087f (cherry picked from commit 1313b0cdb6ba0022dc672bb920933f1d09eb3169)
Diffstat (limited to 'libnativeloader/library_namespaces.cpp')
-rw-r--r--libnativeloader/library_namespaces.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/libnativeloader/library_namespaces.cpp b/libnativeloader/library_namespaces.cpp
index 2360819987..8b87338fba 100644
--- a/libnativeloader/library_namespaces.cpp
+++ b/libnativeloader/library_namespaces.cpp
@@ -344,15 +344,17 @@ Result<NativeLoaderNamespace*> LibraryNamespaces::Create(JNIEnv* env, uint32_t t
}
}
- auto apex_ns_name = FindApexNamespaceName(dex_path);
- if (apex_ns_name.ok()) {
- const auto& jni_libs = apex_jni_libraries(*apex_ns_name);
- if (jni_libs != "") {
- auto apex_ns = NativeLoaderNamespace::GetExportedNamespace(*apex_ns_name, is_bridged);
- if (apex_ns.ok()) {
- linked = app_ns->Link(&apex_ns.value(), jni_libs);
- if (!linked.ok()) {
- return linked.error();
+ for (const std::string& each_jar_path : android::base::Split(dex_path, ":")) {
+ auto apex_ns_name = FindApexNamespaceName(each_jar_path);
+ if (apex_ns_name.ok()) {
+ const auto& jni_libs = apex_jni_libraries(*apex_ns_name);
+ if (jni_libs != "") {
+ auto apex_ns = NativeLoaderNamespace::GetExportedNamespace(*apex_ns_name, is_bridged);
+ if (apex_ns.ok()) {
+ linked = app_ns->Link(&apex_ns.value(), jni_libs);
+ if (!linked.ok()) {
+ return linked.error();
+ }
}
}
}