summaryrefslogtreecommitdiff
path: root/core/java/android/app/ApplicationLoaders.java
diff options
context:
space:
mode:
authorDimitry Ivanov <dimitry@google.com>2016-04-20 14:09:32 -0700
committerDimitry Ivanov <dimitry@google.com>2016-04-27 11:38:41 -0700
commitb1ef62bb3834af6bdf8017e56b2cc614a566229e (patch)
tree7719d3759303b55aab9c22026ceb5cfaccf7ff00 /core/java/android/app/ApplicationLoaders.java
parentfa255f6ead7097acba8400998c47685cc3defc67 (diff)
Extract pathclassloader initialization to a separate class
To be able to reuse this code when creating a classloader for the system_server. Bug: http://b/27245894 Bug: http://b/27702070 Change-Id: I928175a39a1beb0446d863a5b8f5edf94686e768 (cherry picked from commit 5d7d777fa6f47ade2097e77d3d9ddb52c26d77d6)
Diffstat (limited to 'core/java/android/app/ApplicationLoaders.java')
-rw-r--r--core/java/android/app/ApplicationLoaders.java31
1 files changed, 10 insertions, 21 deletions
diff --git a/core/java/android/app/ApplicationLoaders.java b/core/java/android/app/ApplicationLoaders.java
index 0fc097e2e706..d89e1864f36f 100644
--- a/core/java/android/app/ApplicationLoaders.java
+++ b/core/java/android/app/ApplicationLoaders.java
@@ -18,6 +18,7 @@ package android.app;
import android.os.Trace;
import android.util.ArrayMap;
+import com.android.internal.os.PathClassLoaderFactory;
import dalvik.system.PathClassLoader;
class ApplicationLoaders {
@@ -51,24 +52,19 @@ class ApplicationLoaders {
if (loader != null) {
return loader;
}
-
+
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip);
- PathClassLoader pathClassloader =
- new PathClassLoader(zip, librarySearchPath, parent);
+ PathClassLoader pathClassloader = PathClassLoaderFactory.createClassLoader(
+ zip,
+ librarySearchPath,
+ libraryPermittedPath,
+ parent,
+ targetSdkVersion,
+ isBundled);
- String errorMessage = createClassloaderNamespace(pathClassloader,
- targetSdkVersion,
- librarySearchPath,
- libraryPermittedPath,
- isBundled);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
- if (errorMessage != null) {
- throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " +
- pathClassloader + ": " + errorMessage);
- }
-
mLoaders.put(zip, pathClassloader);
return pathClassloader;
}
@@ -80,12 +76,6 @@ class ApplicationLoaders {
}
}
- private static native String createClassloaderNamespace(ClassLoader classLoader,
- int targetSdkVersion,
- String librarySearchPath,
- String libraryPermittedPath,
- boolean isShared);
-
/**
* Adds a new path the classpath of the given loader.
* @throws IllegalStateException if the provided class loader is not a {@link PathClassLoader}.
@@ -100,6 +90,5 @@ class ApplicationLoaders {
private final ArrayMap<String, ClassLoader> mLoaders = new ArrayMap<String, ClassLoader>();
- private static final ApplicationLoaders gApplicationLoaders
- = new ApplicationLoaders();
+ private static final ApplicationLoaders gApplicationLoaders = new ApplicationLoaders();
}