From b78f6ec7ef85962a62bca611819fca8c61bb8f32 Mon Sep 17 00:00:00 2001 From: Martin Stjernholm Date: Wed, 6 Feb 2019 21:47:26 +0000 Subject: [PATCH] Add some overview docs for classloader-namespace. Courtesy of jiyong@. Test: n/a Change-Id: I4ee239c63a5b5f90516b05af25b32ff22b147d53 --- libnativeloader/native_loader.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index a4e00bd0b..5394d7eae 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -118,7 +118,16 @@ static constexpr const char* kVndkNamespaceName = "vndk"; static constexpr const char* kRuntimeNamespaceName = "runtime"; +// classloader-namespace is a linker namespace that is created for the loaded +// app. To be specific, it is created for the app classloader. When +// System.load() is called from a Java class that is loaded from the +// classloader, the classloader-namespace namespace associated with that +// classloader is selected for dlopen. The namespace is configured so that its +// search path is set to the app-local JNI directory and it is linked to the +// default namespace with the names of libs listed in the public.libraries.txt. +// This way an app can only load its own JNI libraries along with the public libs. static constexpr const char* kClassloaderNamespaceName = "classloader-namespace"; +// Same thing for vendor APKs. static constexpr const char* kVendorClassloaderNamespaceName = "vendor-classloader-namespace"; // (http://b/27588281) This is a workaround for apps using custom classloaders and calling