Android 开发之so动态链接库的移植(有相关JNI接口)

    最近在搞dlib开发,由于能力有限,没能自己通过NDK移植dlib编译出.so动态链接库,所以就自己另找出路了。

    在各大论坛中,一位大神经过我三顾茅庐的请求,他给我提供了其.so文件和相关的jni接口文件,那么我就可以通过jni来调用我的封装好的dlib 的.so文件。

    但是问题来了,我要使用.so文件,我就需要system.loadLibra()。于是我就通过度娘找到一些相关Android调用动态链接库资料,有Android studio 和 eclipse 的(博主使用的eclipse的)的一些方法。

    Android studio的:

     第一步,我们将相关的so文件,复制到libs文件里。

     第二步,修改,我们app下面的build.gradle文件,即可。

sourceSets{
            main{
                jniLibs.srcDirs = ['libs']
                    }
        }
第三步,在工程里 system.loadLibra  就可以了
eclipse   的就更简单 了:

      直接把.so文件复制到lib 目录下,再在工程里system.loadLibra就可以了.

    重点来了如果我是使用别人同NDK编译好的.so文件,并且提供我使用的JNI接口的话,上述的两个就有点不可用,其system.loadLibra会报错,load不下来。那问题到底是什么呢,而后我去请教了一位Android大神才解决了我的这个简单的问题:

    主要的一步就是:  把你工程 的包名改成 .so文件一样的包名,你可以到所提供的jni接口文件中找到package,改成一样的工程包名就可以 system.loadLibra(..)了!因为别人编译好的.so动态库是把他工程的包名加进去的。

                            

    如此简单问题搞了一天,哎.....看都是经验能力不足,也许每个大神的成长都是这样趟过来的!!

                                




猜你喜欢

转载自blog.csdn.net/qq_39734379/article/details/79661271