Merge "Framework and system_server classes can access public vendor libraries" am: 8cb6d28329
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1885792 Change-Id: Ia8fe285e3668fac4c2d6ca8ffff2976df88f90c3
This commit is contained in:
@@ -24,6 +24,7 @@ import dalvik.system.DelegateLastClassLoader;
|
||||
import dalvik.system.DexClassLoader;
|
||||
import dalvik.system.PathClassLoader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -100,14 +101,25 @@ public class ClassLoaderFactory {
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as {@code createClassLoader} below, but passes a null list of shared
|
||||
* libraries.
|
||||
* Same as {@code createClassLoader} below, but passes a null list of shared libraries. This
|
||||
* method is used only to load platform classes (i.e. those in framework.jar or services.jar),
|
||||
* and MUST NOT be used for loading untrusted classes, especially the app classes. For the
|
||||
* latter case, use the below method which accepts list of shared libraries so that the classes
|
||||
* don't have unlimited access to all shared libraries.
|
||||
*/
|
||||
public static ClassLoader createClassLoader(String dexPath,
|
||||
String librarySearchPath, String libraryPermittedPath, ClassLoader parent,
|
||||
int targetSdkVersion, boolean isNamespaceShared, String classLoaderName) {
|
||||
// b/205164833: allow framework classes to have access to all public vendor libraries.
|
||||
// This is because those classes are part of the platform and don't have an app manifest
|
||||
// where required libraries can be specified using the <uses-native-library> tag.
|
||||
// Note that this still does not give access to "private" vendor libraries.
|
||||
List<String> nativeSharedLibraries = new ArrayList<>();
|
||||
nativeSharedLibraries.add("ALL");
|
||||
|
||||
return createClassLoader(dexPath, librarySearchPath, libraryPermittedPath,
|
||||
parent, targetSdkVersion, isNamespaceShared, classLoaderName, null, null, null);
|
||||
parent, targetSdkVersion, isNamespaceShared, classLoaderName, null,
|
||||
nativeSharedLibraries, null);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user