android - PathClassLoader在app中的实例是在哪里创建的?

浏览:42日期:2022-11-05

问题描述

有一个三个参数的构造器始终没找到在哪里调用的?求教大神?

问题解答

回答1:

创建PathClassLoader的是用的工厂:

/** * Creates path class loaders. * * @hide */public class PathClassLoaderFactory { // Unconstructable private PathClassLoaderFactory() {} /** * 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; } private static native String createClassloaderNamespace(ClassLoader classLoader,int targetSdkVersion,String librarySearchPath,String libraryPermittedPath,boolean isNamespaceShared);

相关文章: