码迷,mamicode.com
首页 > 移动开发 > 详细

android so加载

时间:2015-11-19 22:32:34      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

  本文分析so加载的步骤,其实在之前dalvik浅析二中也有提及,但那重点关注的是jni。android中so库的加载,代码如下:

loadLibrary("nanosleep");   

  我们来看下它的执行流程吧:

技术分享

  先调用dlopen来载入so文件;find_library在soinfo结构(进程加载的so链)中查找当前so是否已载入,否则去执行so载入流程。so载入后,find_library会返回soinfo,去执行so的CallConstructors函数;如果so包含init、init_array段,则此函数会先执行这init和init_array。dlopen函数执行完毕表示系统对so操作告一段落,接着通过dlsym获取地址去执行JNI_LOAD。对一般而言so的加载和执行到此为止了,下图是我们通常会关注到的执行流程:

技术分享

 

  普通而言就这样了,但这并 不能满足我们的求知欲。

 

 

参考资料:

  1 android linker 浅析

 

android so加载

标签:

原文地址:http://www.cnblogs.com/vendanner/p/4979177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!