Android Studio 调用so库

前言

前面一篇讲了如何使用ndk-build生成so库,这一篇就写写如何调用。

引入so库

2017-11-04 15-58-03屏幕截图.png
2017-11-04 15-58-09屏幕截图.png

如图,将生成的so库拷贝到libs文件夹下,注意不要单独拷贝so库,armeabi及armeabi-v7a文件夹代表的是so库适用的CPU架构,所以这些文件夹也要一起拷贝出来。

编辑app下的build.gradle文件

在build.gradle下添加:

    sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }

添加后如图:


2017-11-04 16-02-01屏幕截图.png

so库调用:

2017-11-04 16-03-55屏幕截图.png

使用如下代码加载库:

    static{
        System.loadLibrary("JNITest");
    }
    public static native int num();// 库中的方法,也是调用的入口

注意几个地方,一、包名要和so库中的包名一样;二、类名也要一致。
我们看看so库的头文件中的函数:

JNIEXPORT jint JNICALL Java_cn_scnu_MainActivity_num
  (JNIEnv *, jobject);

函数名为Java_包名类名函数名。所以我们创建的Android工程的包名也要一致,即cn_scnu,同时,负责加载并且提供native方法的类的类名也要相同,即MainActivity,否则调用不成功,提示找不到方法。

注意好这些我们就调用成功了:


1019079315.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容