Search in sources :

Example 11 with PathClassLoader

use of dalvik.system.PathClassLoader in project platform_frameworks_base by android.

the class PathClassLoaderFactory method createClassLoader.

/**
     * Create a PathClassLoader and initialize a linker-namespace for it.
     *
     * @hide
     */
public static PathClassLoader createClassLoader(String dexPath, String librarySearchPath, String libraryPermittedPath, ClassLoader parent, int targetSdkVersion, boolean isNamespaceShared) {
    PathClassLoader pathClassloader = new PathClassLoader(dexPath, librarySearchPath, parent);
    Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "createClassloaderNamespace");
    String errorMessage = createClassloaderNamespace(pathClassloader, targetSdkVersion, librarySearchPath, libraryPermittedPath, isNamespaceShared);
    Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
    if (errorMessage != null) {
        throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " + pathClassloader + ": " + errorMessage);
    }
    return pathClassloader;
}
Also used : PathClassLoader(dalvik.system.PathClassLoader)

Example 12 with PathClassLoader

use of dalvik.system.PathClassLoader in project platform_frameworks_base by android.

the class ApplicationLoaders method getClassLoader.

ClassLoader getClassLoader(String zip, int targetSdkVersion, boolean isBundled, String librarySearchPath, String libraryPermittedPath, ClassLoader parent) {
    /*
         * This is the parent we use if they pass "null" in.  In theory
         * this should be the "system" class loader; in practice we
         * don't use that and can happily (and more efficiently) use the
         * bootstrap class loader.
         */
    ClassLoader baseParent = ClassLoader.getSystemClassLoader().getParent();
    synchronized (mLoaders) {
        if (parent == null) {
            parent = baseParent;
        }
        /*
             * If we're one step up from the base class loader, find
             * something in our cache.  Otherwise, we create a whole
             * new ClassLoader for the zip archive.
             */
        if (parent == baseParent) {
            ClassLoader loader = mLoaders.get(zip);
            if (loader != null) {
                return loader;
            }
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip);
            PathClassLoader pathClassloader = PathClassLoaderFactory.createClassLoader(zip, librarySearchPath, libraryPermittedPath, parent, targetSdkVersion, isBundled);
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setupVulkanLayerPath");
            setupVulkanLayerPath(pathClassloader, librarySearchPath);
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
            mLoaders.put(zip, pathClassloader);
            return pathClassloader;
        }
        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip);
        PathClassLoader pathClassloader = new PathClassLoader(zip, parent);
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        return pathClassloader;
    }
}
Also used : PathClassLoader(dalvik.system.PathClassLoader) PathClassLoader(dalvik.system.PathClassLoader)

Example 13 with PathClassLoader

use of dalvik.system.PathClassLoader in project android_frameworks_base by crdroidandroid.

the class ApplicationLoaders method addPath.

/**
     * Adds a new path the classpath of the given loader.
     * @throws IllegalStateException if the provided class loader is not a {@link PathClassLoader}.
     */
void addPath(ClassLoader classLoader, String dexPath) {
    if (!(classLoader instanceof PathClassLoader)) {
        throw new IllegalStateException("class loader is not a PathClassLoader");
    }
    final PathClassLoader baseDexClassLoader = (PathClassLoader) classLoader;
    baseDexClassLoader.addDexPath(dexPath);
}
Also used : PathClassLoader(dalvik.system.PathClassLoader)

Example 14 with PathClassLoader

use of dalvik.system.PathClassLoader in project android_frameworks_base by crdroidandroid.

the class FilterFactory method addFilterLibrary.

/**
     * Adds a new Java library to the list to be scanned for filters.
     * libraryPath must be an absolute path of the jar file.  This needs to be
     * static because only one classloader per process can open a shared native
     * library, which a filter may well have.
     */
public static void addFilterLibrary(String libraryPath) {
    if (mLogVerbose)
        Log.v(TAG, "Adding filter library " + libraryPath);
    synchronized (mClassLoaderGuard) {
        if (mLibraries.contains(libraryPath)) {
            if (mLogVerbose)
                Log.v(TAG, "Library already added");
            return;
        }
        mLibraries.add(libraryPath);
        // Chain another path loader to the current chain
        mCurrentClassLoader = new PathClassLoader(libraryPath, mCurrentClassLoader);
    }
}
Also used : PathClassLoader(dalvik.system.PathClassLoader)

Example 15 with PathClassLoader

use of dalvik.system.PathClassLoader in project android_frameworks_base by crdroidandroid.

the class FilterFactory method addFilterLibrary.

/**
     * Adds a new Java library to the list to be scanned for filters.
     * libraryPath must be an absolute path of the jar file.  This needs to be
     * static because only one classloader per process can open a shared native
     * library, which a filter may well have.
     */
public static void addFilterLibrary(String libraryPath) {
    if (mLogVerbose)
        Log.v(TAG, "Adding filter library " + libraryPath);
    synchronized (mClassLoaderGuard) {
        if (mLibraries.contains(libraryPath)) {
            if (mLogVerbose)
                Log.v(TAG, "Library already added");
            return;
        }
        mLibraries.add(libraryPath);
        // Chain another path loader to the current chain
        mCurrentClassLoader = new PathClassLoader(libraryPath, mCurrentClassLoader);
    }
}
Also used : PathClassLoader(dalvik.system.PathClassLoader)

Aggregations

PathClassLoader (dalvik.system.PathClassLoader)57 File (java.io.File)14 DexClassLoader (dalvik.system.DexClassLoader)8 IOException (java.io.IOException)6 InvocationTargetException (java.lang.reflect.InvocationTargetException)6 TargetApi (android.annotation.TargetApi)4 Context (android.content.Context)4 RemoteException (android.os.RemoteException)4 Method (java.lang.reflect.Method)3 ZipFile (java.util.zip.ZipFile)3 ActivityManagerInternal (android.app.ActivityManagerInternal)2 INotificationManager (android.app.INotificationManager)2 ActivityNotFoundException (android.content.ActivityNotFoundException)2 Intent (android.content.Intent)2 IntentFilter (android.content.IntentFilter)2 Configuration (android.content.res.Configuration)2 Resources (android.content.res.Resources)2 Theme (android.content.res.Resources.Theme)2 CameraAccessException (android.hardware.camera2.CameraAccessException)2 InputManagerInternal (android.hardware.input.InputManagerInternal)2