So文件的加载流程

  • loadlibrary()/load():这个就没什么好说的 java层用于查找so库的 一个绝对路径一个相对路径

  • android_dlopen_ext,dlopen,d0_lopen:三个都是用来加载so文件的 具体不是很懂 binder机制会有说

  • find_library():查找so库 给定名字 返回路径

  • call_constructors():用于调用so库中构造函数

  • init():初始化so中的静态变量和一些任务 没有参数也没有返回值

  • init_array:不是很明白 也是用于初始化静态变量和全局变量

  • jni_onload():类似入口函数 当你加载某个so库的时候会被自动调用 可以做一些初始化操作 在上面两个执行之后会立即执行 也有告知dvmJNI版本的作用 如果没有 则默认为最低版本