关于深入理解JNI疑惑

peng_cc 发布于 2014/04/21 21:53
阅读 398
收藏 0

@邓凡平 你好,想跟你请教个问题:最近在看您的《深入理解Android:卷一》,在第二章讲JNI处您写道JNI层和Native层各有一个库,即libmedia_jni.so和libmedia.so,其中libmedia.so完成实际的功能,而libmedia_jni.so主要完成java层的交互,我的理解是java调用jni层的so,而jni层so调用native层的so,但是您书中就介绍了java层加载JNI库,和JNI层相关函数的注册,并没有涉及到Native层的具体实现,也没有提到Native层的so文件,我在网上也找了些资料,基本上所有的都只涉及到一个so文件,直接就是一个java加载一个so文件实现相应功能,所以我比较疑惑,我很想知道完整的调用流程是什么,希望您能解答,谢谢!

加载中
1
newzai
newzai

java 调用 libmedia_jni.so, libmedia_jni.so起来的时候,如果有调用其他动态链接库,会在系统配置的动态链接库的目录下面去查找所需要的动态链接库,如果找不到则失败,会导致java调用JNI的动态链接库也失败。 这些东西是C、C++里面的。

至于libmedia_jni.so 调用 libmedia.so应该是作者为了分层而设计的,理论上合并到同一个so也是可以的。

邓凡平
邓凡平
兄弟,你的回答是正解 呵呵
0
peng_cc
peng_cc

引用来自“newzai”的评论

java 调用 libmedia_jni.so, libmedia_jni.so起来的时候,如果有调用其他动态链接库,会在系统配置的动态链接库的目录下面去查找所需要的动态链接库,如果找不到则失败,会导致java调用JNI的动态链接库也失败。 这些东西是C、C++里面的。

至于libmedia_jni.so 调用 libmedia.so应该是作者为了分层而设计的,理论上合并到同一个so也是可以的。

谢谢!还在学习中。。
返回顶部
顶部