diff options
| author | Dimitry Ivanov <dimitry@google.com> | 2016-04-20 14:09:32 -0700 |
|---|---|---|
| committer | Dimitry Ivanov <dimitry@google.com> | 2016-04-27 11:38:41 -0700 |
| commit | b1ef62bb3834af6bdf8017e56b2cc614a566229e (patch) | |
| tree | 7719d3759303b55aab9c22026ceb5cfaccf7ff00 /core/java/android/app/ApplicationLoaders.java | |
| parent | fa255f6ead7097acba8400998c47685cc3defc67 (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.java | 31 |
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(); } |
