在研究android源码的时候,注意到app中的通用类加载器是一个实例PathClassLoader
,这个类中有两个构造函数。一种是这样的:
public PathClassLoader(String dexPath, ClassLoader parent) {
super(dexPath, null, null, parent);
}
另一个是:
public PathClassLoader(String dexPath, String libraryPath,
ClassLoader parent) {
super(dexPath, null, libraryPath, parent);
}
但是在启动应用程序的过程中,我在源代码中找不到第二个构造函数的调用。那么 libraryPath 参数的值从何而来呢?众所周知,libraryPath是指包含原生库的目录列表,用于初始化nativeLibraryDirectories
DexPathList 对象的一个字段 的值。那么如果没有调用三参数的第二个构造函数,怎么 nativeLibraryDirectories
初始化的值呢?因此,应用程序如何找到它的原生库?
实际上,我想知道谁决定了 nativeLibraryDirectories 的值?
希望有人可以指导我。非常感谢。